Você está na página 1de 779

Dinarte Inácio Kreutz

R
Reeffeerrêênncciiaass :: EEssttee ttrraabbaallhhoo ffooii ddeesseennvvoollvviiddoo aa ppaarrttiirr ddoo H
HEELLPP ddoo V
VFFPP 66
A
Auuttoorr :: D Diinnaarrttee IInnáácciioo K Krreeuuttzz // AAnnaalliissttaa ddee SSiisstteem
maass
EE--m maaiill :: mmoonnaalliissaa@ @bbeew wnneett..ccoom m..bbrr

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

IIMMPPO OR RTTA AN NTTEE :: EEssttaa aappoossttiillaa ttrraazz ooss ccoommaannddooss ddoo VViissuuaall FFooxxPPrroo,,
pprriinncciippaallmmeennttee aaqquueelleess qquuee ppooddeem m sseerr iim
meeddiiaattaam
meennttee aapplliiccaaddooss ppoorr
PPrrooggrraam
maaddoorreess qquuee eessttããoo m miiggrraannddoo ddoo C
CLLIIPPPPEER R..
COMANDOS E FUNÇÕES

RUN | !, comando

Executa programas ou comandos operacionais externos.

Sintaxe

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


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

Argumentos

ComandoMS-DOS Especifica o comando do MS-DOS a ser executado. Consulte a documentação


do MS-DOS para obter maiores informações sobre os comandos disponíveis.

NomePrograma Especifica o programa ou o aplicativo a ser executado. Poderá ser especificado um


programa ou aplicativo baseado no Windows ou no MS-DOS.

/N [K] Especifica NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua
K) para executar outro aplicativo do Windows.

Comentários

É possível emitir RUN de dentro da janela Comando ou de outro programa.

Importante Para utilizar RUN, você precisa ter o arquivo de sistema operacional
COMMAND.COM no diretório atual ou esse arquivo deverá estar localizado onde o parâmetro MS-
DOS COMSPEC possa encontrá-lo. Para obter maiores informações sobre COMSPEC, consulte a
documentação do MS-DOS.

Cuidado Não utilize RUN para executar programas de reorganização de disco, como o CHKDSK,
a partir do Visual FoxPro. Esses programas modificam o conteúdo do seu disco de maneira a
impedir o bom funcionamento do Visual FoxPro.

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

Se o programa especificado em RUN não possuir uma extensão, o Visual FoxPro procurará
primeiro, no caminho do MS-DOS, um arquivo PIF (Program Information File) com o nome que
você indicou. Esse arquivo permite a execução de um programa não Windows no Windows. Você
poderá especificar parâmetros para o programa, ou seja, se ele é executado em uma janela ou na tela
inteira, o total de memória alocado para o programa etc.

Se o PIF for encontrado, o programa nele especificado será executado com os parâmetros PIF. Caso
contrário, será feita uma procura no caminho do MS-DOS para encontrar um arquivo executável
com o nome que você indicar.
Quando um PIF não é encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no
diretório do Visual FoxPro. O FOXRUN.PIF é configurado para executar o programa em uma
janela. É possível modificar o FOXRUN.PIF para que execute programas com outra configuração.

FOXRUN.PIF O FOXRUN.PIF permite a execução de programas e comandos do MS-DOS e do


Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretório que VFP.EXE
no Visual FoxPro.

/N significa NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua K) para
executar outro aplicativo do Windows. Por exemplo, a instrução a seguir abre o acessório Mapa de
caracteres do Windows:

! /N CHARMAP.EXE

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

! /N CONTROL COLOR

Um aplicativo do Windows executado com RUN /N ou ! /N apresenta o mesmo comportamento que


quando aberto através do Gerenciador de Programas ou do Gerenciador de Arquivos. Você pode
alternar entre o aplicativo e o Visual FoxPro ou o FoxPro para Windows utilizando as operações
padrão do Windows.

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

Valor Atributos do aplicativo

1 Ativo e tamanho 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 padrão, o FOXRUN.PIF executa o


programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do
MS-DOS é executado, o título da janela é Executar Comando do FoxPro. No Visual FoxPro, a
janela Executar Comando do FoxPro é fechada após a execução do comando ou do programa
externo.
Você pode utilizar o editor PIF do Windows para personalizar o FOXRUN.PIF. O PIF pode ser
editado para especificar se a janela Executar Comando do Visual FoxPro Inativo deve ser mantida
aberta ou fechada (padrão no Visual FoxPro) usando a caixa de verificação Fechar janela ao sair.
Também é possível abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar
memória para o programa, etc.

Considerações de memória Como padrão, o FOXRUN.PIF aloca um mínimo de 256K de memória


para a execução de um comando ou programa externo. Se você não tiver 256K de memória
convencional livre, o Visual FoxPro exibirá uma mensagem de erro. Para corrigir tal mensagem,
experimente um ou mais dos procedimentos a seguir:

· Feche os aplicativos e arquivos para liberar memória adicional.


· Edite o FOXRUN.PIF para reduzir o total exigido de memória na caixa de texto KB
Requerido.

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

$, operador

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

Sintaxe

cProcurarPor $ cProcurarEm

Tipos de retorno

Lógico

Argumentos

cProcurarPor Especifica a expressão procurada em cProcurarEm.

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

Se cProcurarPor for localizado em cProcurarEm, $ retornará verdadeiro (.T.); caso contrário,


retornará falso (.F.). cProcurarPor e cProcurarEm podem ser variáveis do tipo Caractere ou
elementos de matriz, campos do tipo Caractere, literais de seqüência de caracteres ou campos
Memo de qualquer tamanho.

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

LIST FOR 'FOX' $ UPPER(memo_fld)

Comentários

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

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

Sintaxe

nDividendo % nDivisor

Argumentos

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

nDivisor Especifica o divisor (a expressão numérica que divide o dividendo nDividendo). Se


nDivisor for positivo, será retornado um número positivo; se nDivisor for negativo, será retornado
um número negativo. nDivisor não pode ser zero.

Comentários

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


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

&&, comando

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

Sintaxe

&& [Comentários]

Argumentos

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

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

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

Comentários

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

*, comando

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

Sintaxe

* [Comentários]

Argumentos

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

* Isto é um comentário
Comentários

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

@ ... CLEAR, comando

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

Sintaxe

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

Argumentos

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

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

Comentários

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

@ ... FILL, exemplo do comando

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

ACTIVATE 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 usuário para cima,
para baixo, para a esquerda ou para a direita.

Sintaxe

@ nLinha1, nColuna1 TO nLinha2, nColuna2 SCROLL


[UP | DOWN | LEFT | RIGHT]
[BY nQuantidadeMovida]

Argumentos

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

UP | DOWN | LEFT | RIGHT Especifica a direção na qual a área retangular será movida. Se uma
cláusula de direção for omitida, a área será movida para cima.

BY nQuantidadeMovida Especifica o número de linhas ou colunas que a área retangular será


movida. Se BY nQuantidadeMovida for omitido, a região será movida uma linha ou coluna.

\ | \\, comando

Imprime ou exibe linhas de texto.

Sintaxe

\LinhaTexto
– Ou –
\\LinhaTexto

Argumentos

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

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

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

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

Comentários

Os comandos \ e \\ facilitam a mesclagem de textos no Visual FoxPro. A mesclagem de textos


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

\ | \\, exemplo do comando

CLOSE 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 expressões.

Sintaxe

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

Argumentos

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

Comentários

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

= INSMODE(.T.)

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

Se apenas uma expressão (Expressão1) for incluída, o sinal de igualdade será opcional.

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

ABS( ), função

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

Sintaxe

ABS(nExpressão)

Tipos de retorno

Numérico

Argumentos

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

ABS( ), exemplo da função

? ABS(-45) && Exibe 45


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

ACOS( ), função

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

Sintaxe
ACOS(nExpressão)

Tipos de retorno

Numérico

Argumentos

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

Utilize RTOD( ) para converter radianos para graus.

Comentários

O arco co-seno é retornado em radianos.

ACOS( ), exemplo da função

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 saída subseqüente para a janela principal do Visual FoxPro, em vez de enviar para a
janela definida pelo usuário que está ativa.

Sintaxe

ACTIVATE SCREEN

Comentários

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

ACTIVATE WINDOW, comando

Exibe e ativa uma ou mais janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro.

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

Argumentos

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

ALL Especifica que todas as janelas sejam ativadas. A última janela ativada é a janela de saída
ativa.

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

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

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

BOTTOM | TOP | SAME Especifica onde as janelas são ativadas em relação a outras janelas
anteriormente ativadas. Como padrão, uma janela torna-se a janela frontal quando é ativada. A
inclusão de BOTTOM coloca uma janela atrás de todas as outras janelas. TOP irá colocá-la na
frente de todas as outras. SAME ativa uma janela sem afetar o seu posicionamento.

NOSHOW Ativa e direciona a saída para uma janela sem exibir a janela.

Comentários

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

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

Os nomes de janelas definidas pelo usuário são exibidos na parte inferior do menu Janela. O nome
da janela ativa, definida pelo usuário, está selecionada com uma marca de verificação.

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

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

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

Para remover janelas da tela e da memória, utilize CLEAR WINDOWS, RELEASE WINDOWS ou
CLEAR ALL. É necessário redefinir as janelas removidas da memória para colocá-las novamente
na janela principal do
Visual FoxPro.

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

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

· Comando
· Chamar pilha
· Sessão de dados
· De depuração
· Depurar saída
· Locais
· Rastrear
· Observar

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

ACTIVATE WINDOW “Chamar Pilha”

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

ACTIVATE WINDOW, exemplo do comando

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

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

ADATABASES( ), função

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

Sintaxe

ADATABASES(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

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

Comentários

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

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

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

ADATABASES( ), exemplo da função

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

SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de 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 conteúdo 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 diálogo Abrir, na qual você pode selecionar uma tabela a ser adicionada ao
banco de dados.

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

Comentários

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

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

A tabela que está sendo adicionada:

· Deve ser um arquivo .DBF válido.


· Não pode ter o mesmo nome de uma tabela existente no banco de dados aberto, a menos
que seja atribuído à tabela um nome extenso único.
· Não pode existir em outro banco de dados. Utilize REMOVE TABLE para remover a tabela
do outro banco de dados.

O banco de dados ao qual a tabela está sendo adicionada não pode estar envolvido em uma
transação.

ADD TABLE, exemplo do comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada table1. Ao ser criada, a tabela é adicionada a mydbc1. A tabela é então fechada e
removida de mydbc1. Em seguida, ADD TABLE é utilizado para adicionar a tabela a mydbc2.
RENAME TABLE é utilizado para mudar o nome da tabela de table1 para table2.
CREATE DATABASE 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( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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

nNúmeroElemento Especifica o número do elemento, linha ou coluna a ser excluído da matriz.


Para excluir uma coluna da matriz, inclua o argumento opcional 2.

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

2 Exclui uma coluna da matriz.

Comentários

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

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

ADEL( ), exemplo da função


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

CLOSE 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( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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

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

Coluna Conteúdo da matriz Tipo de dados

1 Nomes dos arquivos Caractere


2 Tamanho dos arquivos Numérico
3 Datas da última modificação Data
4 Horário da última modificação Caractere
5 Atributos dos arquivos Caractere
A última coluna da matriz contém os atributos dos arquivos correspondentes. Cada atributo de
arquivo é expresso por uma letra e um arquivo pode ter mais de um atributo. A tabela abaixo indica
o atributo de arquivo que cada letra representa:

Letra Atributo

A Arquivo - leitura/gravação
H Oculto
R Somente para leitura
S Sistema
D Diretório ou pasta
cEstruturaArquivo Especifica uma estrutura de arquivo para que você possa armazenar
informações sobre arquivos com nomes ou extensões correspondentes a um critério de pesquisa. Por
exemplo, o critério pode ser todas as tabelas, todos os arquivos de texto, todos os arquivos com
nomes que começam pela letra A e assim por diante. Estas pesquisas gerais são feitas incluindo-se
os caracteres curinga * e ? em cEstruturaArquivo
. O ponto de interrogação representa um único caractere e o asterisco representa qualquer
quantidade de caracteres. Pode-se utilizar qualquer quantidade de caracteres curinga em qualquer
posição dentro da estrutura de arquivo.

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

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

cAtributo pode conter qualquer combinação de D, H e S. A inclusão de D retorna nomes de


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

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

Comentários

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

ADIR( ), exemplo da função

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

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

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

CLEAR
FOR nCount = 1 TO gnDbcnumber && Loop para número de bancos de dados
? gaDatabase(nCount,1) && Exibe nomes de bancos de dados
ENDFOR
SET PATH TO HOME( ) && Define caminho para diretório do Visual FoxPro

AELEMENT( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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

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


retornar ao mesmo valor de nÍndiceLinha.

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

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


nÍndiceColuna.

Comentários

Você pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro
método utiliza dois índices para especificar a posição da linha e da coluna do elemento na matriz e o
segundo método utiliza o número de um único elemento. AELEMENT( ) retorna o número do
elemento quando fornecido com índices de linha e coluna de um elemento.

As funções do Visual FoxPro ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ),


ASORT( ) e ASUBSCRIPT( ) podem manipular matrizes bidimensionais e exigem que a referência
aos elementos seja feita pelo número do elemento. AELEMENT( ) facilita a conversão de índices
para um número de elemento para uso por meio dessas funções. Os índices de linha e coluna
correspondentes podem ser retornados de um número de elemento com ASUBSCRIPT( ).
O exemplo a seguir ilustra a criação de uma matriz com duas linhas e três colunas. DISPLAY
MEMORY exibe o conteúdo dos elementos da matriz listados na ordem dos números de elementos.

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

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

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

AERROR( ), função

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

Sintaxe

AERROR(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

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

Comentários

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

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

Número do elemento Descrição

1 Numérico. Contém o número do erro. Idêntico ao valor retornado por ERROR( ).


2 Caractere. O texto da mensagem de erro. Idêntico ao valor retornado por MESSAGE( ).
3 O valor nulo. No entanto, se o erro possuir um parâmetro de erro adicional, irá conter o
texto do parâmetro de erro. Idêntico ao valor retornado por SYS(2018).
4 O valor nulo. No entanto, quando apropriado, contém o número da área de trabalho em que
o erro ocorreu.
5 O valor nulo. No entanto, se um disparador falhar (erro 1539), irá conter um dos valores
numéricos abaixo:
1 - Erro no Disparador de inserção.
2 - Erro no Disparador de atualização.
3 - Erro no Disparador de exclusão.
6 O valor nulo.
7 O valor nulo.
A tabela a seguir descreve o conteúdo de cada elemento quando ocorrem os erros de OLE número
1427 ou 1429. Nestes casos, a matriz contém uma linha.

Número do elemento Descrição

1 Numérico. Contém 1427 ou 1429.


2 Caractere. O texto da mensagem de erro do Visual FoxPro.
3 Caractere. O texto da mensagem de erro de OLE.
4 Caractere. O nome do aplicativo (Microsoft Excel, por exemplo).
5 O valor nulo ou Caractere. Contém o nome do arquivo de Ajuda do aplicativo em que
podem ser encontradas maiores informações sobre o erro, se as informações estiverem disponíveis
no aplicativo; caso contrário, contém o valor nulo.
6 O valor nulo ou Caractere. Contém o identificador de contexto da Ajuda para o tópico
apropriado, se as informações estiverem disponíveis no aplicativo; caso contrário, contém o valor
nulo.
7 Numérico. Um número de exceção OLE 2.0.
A tabela a seguir descreve o conteúdo de cada elemento quando ocorre um erro do ODBC de
número 1526. Neste caso, a matriz contém duas ou mais linhas; uma linha para cada erro do ODBC.

Número do elemento Descrição

1 Numérico. Contém 1526.


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

AERROR( ), exemplo da função

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

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

BRWS && Causa um erro de 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 informações' && Exibe mensagem
FOR n = 1 TO 7 && Exibe todos os elementos da matriz
? aErrorArray(n)
ENDFOR

AFIELDS( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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

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


colocadas em uma matriz.

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

Se você omitir nÁreaTrabalho e cAliasTabela, as informações de estrutura colocadas em uma


matriz dirão respeito à tabela na área de trabalho selecionada atualmente.

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

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

1 Nome do campo Caractere


2 Tipo do campo:
C = Caractere
D = Data
L = Lógico
M = Memo
N = Numérico
F = Flutuante
I = Inteiro
B = Duplo
Y = Moeda
T = DataHora
G = Geral Caractere
3 Largura do campo Numérico
4 Casas decimais Numérico
5 Valor nulo permitido Lógico
6 Conversão de página de código não permitida Lógico
7 Regra de validação de campo Caractere
8 Texto de validação de campo Caractere
9 Valor padrão do campo Caractere
10 Regra de validação da tabela Caractere
11 Texto de validação da tabela Caractere
12 Nome de tabela extenso Caractere
13 Expressão Disparador de inserção Caractere
14 Expressão Disparador de atualização Caractere
15 Expressão Disparador de exclusão Caractere
16 Comentário da tabela Caractere

Comentários

AFIELDS( ) retorna o número de campos da tabela. A matriz contém 11 colunas e um número de


linhas igual ao número de campos da tabela.
Você pode utilizar COPY STRUCTURE EXTENDED para colocar informações similares em uma
tabela em vez de matriz.

AFIELDS( ), exemplo da função

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

CLOSE 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( ), função

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

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

Tipos de retorno

Lógico

Argumentos

NomeMatriz Especifica a matriz de variável em que são colocados os nomes de fontes disponíveis.
Se a matriz não for suficientemente grande para conter todas as fontes, o Visual FoxPro aumenta,
automaticamente, o tamanho da matriz. Se você especificar uma matriz bidimensional já existente,
o Visual FoxPro mudará a matriz para uma matriz unidimensional.

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

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

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

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

nTamanhoFonte Especifica um tamanho para a fonte determinada em cNomeFonte.

Se o tamanho da fonte nTamanhoFonte estiver disponível para a fonte especificada em


nTamanhoFonte, a matriz terá um único elemento contendo um valor verdadeiro (.T.) e AFONT( )
retornará verdadeiro (.T.). Se o tamanho não estiver disponível para a fonte especificada, a matriz
não será criada e AFONT( ) retornará falso (.F.).

Comentários

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

AFONT( ), exemplo de função

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

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts = ALEN(gaFontArray) && Número 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( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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

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

Para inserir um elemento em uma matriz unidimensional, inclua NomeMatriz e o elemento


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

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

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

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

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

AINS( ), exemplo da função


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

CLOSE 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 não encontrada-adicione-a ***
DIMENSION gaCompanies[gnCount+1,1]
= AINS(gaCompanies, gnCount+1)

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

ALEN( ), função

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

Sintaxe

ALEN(NomeMatriz [, nAtributoMatriz])

Tipos de retorno

Numérico

Argumentos

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

nAtributoMatriz Determina se ALEN( ) retorna o número de elementos, linhas ou colunas da


matriz, de acordo com os valores para nAtributoMatriz fornecidos a seguir:

0 Retorna o número de elementos da matriz. Omitir nAtributoMatriz equivale a especificar 0.


1 Retorna o número de linhas da matriz.
2 Retorna o número de colunas da matriz. Se a matriz for unidimensional, ALEN( ) retornará
0 (sem colunas).

ALEN( ), exemplo da função

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

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts= ALEN(gaFontArray) && Número 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( ), função

Remove os espaços em branco do início e do final da expressão de caracteres especificada e retorna


a expressão com os espaços removidos como uma seqüência de caracteres.

Sintaxe

ALLTRIM(cExpressão)

Tipos de retorno

Caractere

Argumentos

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


iniciais e finais.

Comentários

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

ALLTRIM( ), exemplo da função


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

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts= ALEN(gaFontArray) && Número 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 lExpressão]
[FIELDS ListaCampos]

Argumentos

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

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

Antes da inclusão de uma linha da matriz em um registro da tabela, o elemento de matriz


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

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

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

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

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

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

Tipo de campo Valor padrão

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

Caso a matriz seja bidimensional, APPEND FROM ARRAY adicionará um registro à tabela para
cada linha da matriz. Por exemplo, caso a matriz tenha quatro linhas, quatro novos registros serão
incluídos na tabela.

O conteúdo da primeira coluna da matriz preenche o primeiro campo dos registros recém-
adicionados, a segunda coluna da matriz preenche o segundo campo dos novos registros, e assim
sucessivamente. Por exemplo, se a matriz tiver quatro linhas e três colunas, os elementos da
primeira coluna da matriz preencherão o primeiro campo de cada um dos quatro novos registros
incluídos na tabela.

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

APPEND FROM ARRAY pode preencher um campo, mesmo que o tipo de dado do elemento da
matriz correspondente não corresponda ao tipo de dado do campo, desde que os dados do elemento
de matriz sejam compatíveis com o tipo de dado do campo correspondente. Caso os dados não
sejam compatíveis, o campo será inicializado com um valor vazio.
Exemplo de incompatibilidade nos tipos de dados
Este exemplo cria uma tabela e, em seguida, utiliza APPEND FROM ARRAY para incluir um
registro na nova tabela.

LOCAL ARRAY aNewRec(3)

* Criar uma 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 conteúdo da matriz
&& à tabela

APPEND FROM, comando

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

Sintaxe

APPEND FROM NomeArquivo | ?


[FIELDS ListaCampos]
[FIELDS ListaCampos]
[[TYPE] [DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB]
| WITH CHARACTER Delimitador]
| DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK
| WK1 | WK3 | WKS | WR1 | WRK | XLS | XL5]]
[AS nPáginaCódigo]

Argumentos

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

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

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

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

TYPE Especifica o tipo do arquivo a partir do qual está sendo feita a inclusão. Embora seja
necessário especificar um tipo de arquivo se o arquivo a partir do qual a inclusão estiver sendo feita
não for uma tabela do Visual FoxPro, não será necessário incluir a palavra-chave TYPE. É possível
fazer inclusões a partir de uma ampla variedade de tipos de arquivos diferentes, inclusive arquivos
de texto ASCII delimitados, onde você pode especificar um delimitador de campo.

Se o arquivo a partir do qual você está fazendo a inclusão não tiver a extensão padrão usual para
esse tipo de arquivo, o nome do arquivo deverá incluir a respectiva extensão. Por exemplo, as
planilhas do Microsoft Excel normalmente têm a extensão .XLS. Se a planilha do Excel a partir da
qual você está fazendo inclusões tiver uma extensão diferente da extensão .XLS esperada,
certifique-se de especificar essa extensão.

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

DELIMITED Especifica que o arquivo de origem dos dados a serem incluídos na tabela atual do
Visual FoxPro é delimitado. Um arquivo delimitado é um arquivo de texto ASCII em que cada
registro termina com um retorno de carro e uma alimentação de linha. Considera-se, como padrão,
que os conteúdos do arquivo estão separados um do outro por vírgulas (não inclua espaços extras
antes ou depois das vírgulas) e que os valores dos campos de caractere estão delimitados também
por aspas. Por exemplo:

"Smith",9999999,"TELEFONE"

Considera-se que a extensão de arquivo é .TXT para todos os arquivos delimitados.

Você poderá importar datas de arquivos delimitados se as datas estiverem no formato apropriado. O
formato de data assume o padrão mm/dd/aa. A inclusão da parte da data relativa ao século é
opcional. O Visual FoxPro importará uma data, como 12/25/95, que não inclui o século e irá
considerar que a data está no século XX. Os delimitadores de data podem ser qualquer caractere
não-numérico, exceto o delimitador que separa os campos no arquivo delimitado.

As datas em outros formatos poderão ser importadas se o seu formato corresponder a um formato de
data disponível em SET DATE. Para importar datas que não estão no formato padrão, emita SET
DATE com o formato de data correto antes de utilizar APPEND FROM. Para testar se um formato
de data poderá ser importado com sucesso, utilize-o com CTOD( ). Se a data for aceitável para
CTOD( ), ela será importada corretamente.

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

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

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

DELIMITED WITH CHARACTER Delimitador Especifica os arquivos que contêm campos


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

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

APPEND FROM mytxt.txt DELIMITADO COM _ ;


WITH CHARACTER *

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

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

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

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

RPD Inclua RPD para importar dados de um arquivo criado pelo RapidFile versão 1.2. Considera-
se que os nomes de arquivos do RapidFile tenham a extensão .RPD.

SDF Inclua SDF para importar dados de um arquivo System Data Format. Um arquivo SDF é um
arquivo de texto ASCII em que os registros têm um comprimento fixo e terminam com um retorno
de carro e uma alimentação de linha. Os campos não são delimitados. Considera-se que a extensão
de arquivos SDF seja .TXT.

SYLK Inclua SYLK para importar dados de um arquivo de formato SYLK (Symbolic Link) de
intercâmbio. Os arquivos SYLK são utilizados no Microsoft MultiPlan. As colunas do arquivo
SYLK tornam-se campos da tabela do Visual FoxPro, e as linhas tornam-se registros. Os nomes de
arquivos SYLK não têm extensão.

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

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

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

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

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

XL5 Inclua XL5 para importar dados do Microsoft Excel versão 5.0. As colunas da planilha se
tornam campos da tabela, e as linhas tornam-se registros. Os arquivos de planilha criados no
Microsoft Excel têm a extensão .XLS.

AS nPáginaCódigo Especifica a página de código da tabela ou arquivo de origem. O Visual


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

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

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

Se AS nPáginaCódigo for omitido e o Visual FoxPro conseguir determinar a página de código da


tabela ou do arquivo que está sendo incluído, ele copiará o conteúdo da tabela ou do arquivo
incluído e, à medida que copia os dados, irá convertê-los automaticamente na página de código da
tabela atualmente selecionada.

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

Comentários

Se o arquivo do qual se faz a inclusão for uma tabela criada pelo Visual FoxPro ou por uma versão
anterior do FoxPro, será considerada uma extensão .DBF. Se a tabela criada pelo Visual FoxPro ou
por uma versão anterior do FoxPro não tiver a extensão .DBF, você deverá especificar a extensão.
Caso o arquivo não seja uma tabela criada pelo Visual FoxPro ou por uma versão anterior do
FoxPro, você deverá especificar o tipo de arquivo a partir do qual está fazendo a inclusão.
Antes de fazer uma inclusão a partir de uma tabela criada no dBASE IV ou no dBASE V que
contenha um campo Memo, você deve abrir a tabela no Visual FoxPro com USE. Quando aparecer
a opção para converter o arquivo, selecione Sim.

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

APPEND FROM, exemplo do comando

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

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

APPEND MEMO, comando

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

Sintaxe

APPEND MEMO NomeCampoMemo FROM NomeArquivo


[OVERWRITE] [AS nPáginaCódigo]

Argumentos

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

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

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

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

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

Se você omitir a cláusula AS nPáginaCódigo ou especificar 0 para nPáginaCódigo, não haverá


nenhuma conversão de página de código no arquivo texto.

Comentários

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

APPEND MEMO, exemplo do comando

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

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE employee && Abre a tabela Employee
WAIT WINDOW 'Observações de funcionários 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 'Observações de funcionários agora acrescentadas- pressione ESC' NOWAIT

APPEND MEMO notes FROM test.txt && Adiciona conteúdo do arquivo texto
MODIFY MEMO notes NOEDIT && Exibe campo Memo novamente
WAIT WINDOW 'Sobrescreve observações de funcionário- 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 nPáginaCódigo] [OVERWRITE]
Argumentos

NomeArquivo Especifica o nome de um arquivo texto a partir do qual os procedimentos


armazenados são incluídos.

AS nPáginaCódigo Especifica a página de código do arquivo texto a partir do qual os


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

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

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

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

OVERWRITE Especifica que os procedimentos atuais armazenados no banco de dados são


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

Comentários

Utilize o comando APPEND PROCEDURES para modificar procedimentos armazenados em um


banco de dados utilizando a linguagem de programação. Um banco de dados deverá estar aberto e
ativo quando APPEND PROCEDURES for emitido; caso contrário, o Visual FoxPro irá gerar uma
mensagem de erro.

APPEND PROCEDURES, exemplo do comando

O exemplo a seguir abre o banco de dados testdata. Uma tabela temporária, denominada
mytablecom um único campo Memo, é criada; e REPLACE é utilizado para colocar um
procedimento armazenado denominado MyProcedure no campo Memo. COPY MEMO é utilizado
para criar um arquivo texto temporário denominado MYTEMP.TXT, que contém o conteúdo do
campo Memo.
APPEND PROCEDURES é utilizado para incluir o procedimento armazenado do arquivo texto
temporário no banco de dados. DISPLAY PROCEDURES exibe os procedimentos armazenados no
banco de dados e, em seguida, a tabela e o arquivo texto temporários são apagados.

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

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

* Cria uma tabela livre, temporária 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 /alimentação de linha ao


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

* Copia o conteúdo do campo Memo para um arquivo temporário

COPY MEMO mProcedure TO mytemp.txt


USE && Fecha a tabela temporária

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 temporária
DELETE FILE mytable.fpt && Apaga o arquivo memo da tabela temporária
DELETE FILE mytemp.txt && Apaga o arquivo texto temporário

APPEND, comando

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

Sintaxe

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

Argumentos

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

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

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

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


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

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

Comentários

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

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

APPEND, exemplo do comando

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

CLOSE 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 aleatórios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa valor mínimo
gnMinimum = 100 && Inicializa valor máximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mínimo é: ', gnMinimum && Exibe valor mínimo
? 'O valor máximo é: ', gnMaximum && Exibe valor máximo

APRINTERS( ), função

Coloca os nomes das impressoras atualmente instaladas no Gerenciador de Impressão do Windows


em uma matriz de memória.
Sintaxe

APRINTERS(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz que contém os nomes das impressoras instaladas e suas
portas. Se a matriz incluída não existir, o Visual FoxPro irá criá-la automaticamente. Se a matriz
existir e não for grande o suficiente para conter todas as informações sobre as impressoras, o Visual
FoxPro aumentará automaticamente o tamanho da matriz para que comporte as informações. Caso a
matriz seja maior do que o necessário, o Visual FoxPro irá truncá-la. Caso a matriz exista e
APRINTERS( ) retorne 0, porque nenhuma impressora está instalada, a matriz permanecerá
inalterada. Se a matriz não existir e APRINTERS( ) retornar 0, a matriz não será criada.

Comentários

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

APRINTERS( ) retorna o número de impressoras instaladas. Caso nenhuma impressora esteja


instalada, ela retornará 0.

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

APRINTERS( ), exemplo da função

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

IF APRINTERS(gaPrinters) > 0 && Se houver drivers de impressoras instalados


CLEAR && Limpa a janela principal do Visual FoxPro
DISPLAY MEMORY LIKE gaPrinters && Exibe as impressoras e portas
ELSE && Caso contrário, Nenhuma impressora instalada
WAIT WINDOW ' Nenhuma impressora instalada.'
ENDIF

ASC( ), função

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

ASC(cExpressão)

Tipos de retorno

Numérico

Argumentos

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

Comentários

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

ASC( ), exemplo da função

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

STORE 'ABCDEFGHIJ' TO gcANSI && 10 caracteres


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

ASCAN( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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


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

nElementoInicial Especifica o número do elemento em que a procura irá começar. O número do


elemento especificado será incluído na procura. Se você omitir nElementoInicial, a procura será
feita, como padrão, na matriz inteira.

nElementosProcurados Especifica o número de elementos em que será feita a procura. Se você


omitir nElementoInicial e nElementosProcurados, a procura terá início no primeiro elemento da
matriz e continuará até o último elemento.

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

Comentários

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

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

ASCAN( ), exemplo da função

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

CLOSE 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( ), função

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

Sintaxe

ASIN(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo arco seno é retornado por ASIN( ). O valor de
nExpressão pode variar de +1 até –1 e o valor retornado por ASIN( ) pode variar de –pi/2 a +pi/2 ( –
1,57079 a 1,57079). O número de casas decimais na exibição do resultado pode ser especificado
com SET DECIMALS.

Comentários

Utilize RTOD( ) para converter radianos em graus.

ASIN( ), exemplo da função

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

ASORT( ), função

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

Sintaxe

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

Tipos de retorno
Numérico

Argumentos

NomeMatriz Especifica o nome da matriz a ser classificada.

nElementoInicial Especifica o elemento inicial da classificação. Se você omitir nElementoInicial,


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

Observação Você pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O
primeiro método utiliza dois índices para especificar a posição do elemento na matriz em termos de
linha e coluna; o outro método utiliza um número de elemento. Esta função e outras que manipulam
matrizes bidimensionais exigem números de elementos (em ASORT( ), as expressões numéricas
nElementoInicial e nNúmeroClassificados). Você pode utilizar AELEMENT( ) para retornar o
número do elemento a partir de índices de linha e coluna em uma matriz bidimensional.

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

A primeira classificação começa na primeira linha. A segunda começa na segunda linha. Você pode
utilizar DISPLAY MEMORY para exibir o conteúdo da matriz; nestes exemplos, são utilizadas
tabelas para exibir graficamente os resultados das classificações.

Os comandos abaixo criam a matriz denominada gaArray:

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

gaArray tem a aparência a seguir:

Coluna 1 Coluna 2

Linha 1 G 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 são colocados em ordem ascendente por meio de uma reorganização
das linhas da matriz.

=ASORT(gaArray,1)

Observe a nova ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B 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 são colocados em ordem por meio de uma reorganização das linhas da matriz.

=ASORT(gaArray,4)

Observe a diferença na ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B N
Linha 2 G A
Linha 3 C Z
nNúmeroClassificados Especifica o número de elementos classificados em uma matriz
unidimensional ou o número de linhas classificadas em uma matriz bidimensional. Por exemplo, se
a matriz for unidimensional e nElementoInicial for 2, indicando que a classificação começa no
segundo elemento da matriz, e nNúmeroClassificados for 3, indicando que a classificação deve
incluir três elementos, o segundo, o terceiro e o quarto elementos da matriz serão classificados. Se
nNúmeroClassificados for –1 ou for omitido, todos os elementos da matriz, a partir do elemento
inicial nElementoInicial até o último elemento, serão classificados.

Se a matriz for bidimensional, nNúmeroClassificados designará o número de linhas que devem ser
classificadas, a partir da linha que contém o elemento inicial nElementoInicial. Por exemplo, se
nElementoInicial for 2 e nNúmeroClassificados for 3, a linha que contém o segundo elemento de
matriz e as duas linhas seguintes serão classificadas. Se nNúmeroClassificados for –1 ou for
omitido, todas as linhas da matriz, a partir da linha que contém o elemento inicial nElementoInicial
até a última linha, serão classificadas.

nOrdemClassificação Especifica a ordem de classificação (ascendente ou descendente) dos


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

Comentários
Todos os elementos incluídos na classificação devem ter o mesmo tipo de dados. As matrizes
unidimensionais são classificadas pelos seus elementos; as matrizes bidimensionais são
classificadas pelas suas linhas. Quando uma matriz bidimensional é classificada, a ordem das linhas
na matriz é alterada para que os elementos de uma coluna da matriz fiquem em ordem ascendente
ou descendente.

Se a classificação for bem-sucedida, será retornado 1; caso contrário, será retornado –1.

ASORT( ), exemplo da função

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

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

COUNT TO gnCount && Número 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 expressão lógica é avaliada como falsa (.F.).

Sintaxe

ASSERT lExpressão [MESSAGE cTextoMensagem]

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

cTextoMensagem Especifica o texto exibido na caixa de diálogo de depuração. Se você omitir


cTextoMensagem, o texto padrão será exibido, indicando o número da linha na qual a declaração
falhou e o procedimento contendo a declaração.

Comentários

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

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

Botão Ação

Depurar A execução do programa é suspensa e a janela Depurar é exibida com a janela


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

ASUBSCRIPT( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz.

nNúmeroElemento Especifica o número do elemento.

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

Se a matriz for unidimensional, inclua o número do elemento em nNúmeroElemento e 1 em


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

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

Comentários

Você pode referir-se a elementos de matrizes de variável bidimensionais de duas maneiras. O


primeiro método utiliza dois índices para especificar a posição do elemento na matriz em termos de
linha e coluna. O segundo método utiliza um número de elemento. Utilize ASUBSCRIPT( ) para
obter o índice de linha ou coluna de um elemento a partir do número do elemento.

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

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

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


matriz:

STORE 'INVOICE' TO gaMyArray(2, 1)


STORE 'INVOICE' TO gaMyArray(4)

Em matrizes unidimensionais, o número de um elemento é idêntico ao seu índice de linha único.


Não é necessário utilizar ASUBSCRIPT( ) com matrizes unidimensionais.

AT( ), função

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

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

Tipos de retorno

Numérico

Argumentos

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


cExpressãoPesquisada.

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

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


tamanho.

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

AT( ) procura a primeira ocorrência da primeira expressão de caracteres na segunda expressão de


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

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

AT( ), exemplo da função

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 maiúsculas/minúsculas
AT_C( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

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


cExpressãoPesquisada.

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

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


tamanho.

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

Comentários

AT_C( ) procura a primeira ocorrência da primeira expressão de caracteres na segunda expressão de


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

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

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

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

Sintaxe

ATAN(nExpressão)

Tipos de retorno

Numérico

Argumentos

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

Comentários

Utilize RTOD( ) para converter radianos em graus.

ATAN( ), exemplo da função

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

ATC( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

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

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

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


tamanho.

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

Comentários

ATC( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de


caracteres, sem considerar maiúsculas/minúsculas nas duas expressões. Utilize AT( ) para executar
uma procura que considere maiúsculas/minúsculas.

ATC( ) retorna um inteiro correspondente à posição em que o primeiro caractere da expressão de


caracteres foi localizado. Se a expressão de caracteres não for localizada, ATC( ) retornará 0.

ATC( ), exemplo da função

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( ), função

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

Sintaxe

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

Tipos de retorno

Numérico

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

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

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


tamanho.

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

Comentários

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

ATCC( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de


caracteres, sem considerar maiúsculas/minúsculas nas duas expressões. Utilize AT_C( ) para
executar uma procura que considere maiúsculas/minúsculas.

ATCC( ) retorna um inteiro correspondente à posição em que o primeiro caractere da expressão de


caracteres foi localizado. Caso a expressão de caracteres não seja localizada, ATCC( ) retornará 0.

ATCLINE( ), função

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

Sintaxe

ATCLINE(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno

Numérico

Argumentos

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


cExpressãoPesquisada.

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

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


tamanho. Utilize MLINE( ) para retornar a linha que contém a expressão de caracteres
correspondente.
Dica ATCLINE( ) oferece um método conveniente para pesquisar em campos Memo.

Comentários

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

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

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

ATCLINE( ), exemplos da função

O exemplo 1 localiza a primeira ocorrência de uma seqüência de caracteres em um campo Memo e


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

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

CLEAR
STORE 'JAPANESE' TO gcFindString && Não considera maiúsculas/minúsculas
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( ), função

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

Sintaxe

ATLINE(cExpressãoProcurada, cExpressãoPesquisada)
Tipos de retorno

Numérico

Argumentos

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


cExpressãoPesquisada.

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

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


tamanho.

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

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

Comentários

ATLINE( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de


caracteres, sem considerar maiúsculas/minúsculas em ambas expressões. Utilize ATCLINE( ) para
executar uma procura que não considere maiúsculas/minúsculas.

Se a procura for bem-sucedida, ATLINE( ) retornará o número da linha em que ocorre a


correspondência. Caso contrário, ATLINE( ) retornará 0.

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

ATLINE( ), exemplos da função

O exemplo 1 localiza a primeira ocorrência de uma seqüência de caracteres em um campo Memo e


exibe o nome e o sobrenome do funcionário, e a linha do memo contendo a seqüência de caracteres.
O exemplo 2 demonstra como a largura do memo afeta ATLINE( ).

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

CLEAR
STORE 'Japonês' TO gcFindString && Considera maiúsculas/minúsculas
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( ), função

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

Sintaxe

ATN2(nCoordenadaY, nCoordenadaX)

Tipos de retorno

Numérico

Argumentos

nCoordenadaY Especifica a coordenada y.

nCoordenadaX Especifica a coordenada x.

Comentários

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

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

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

ATN2( ), exemplo da função

CLEAR
? PI( ) && Exibe 3.14
? ATN2(0,-1) && Exibe 3.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 método aritmético das expressões ou campos numéricos.

Sintaxe

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

Argumentos

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

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

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

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

Rushmore otimiza uma consulta AVERAGE FOR se lExpressão for uma expressão de otimização.
Para obter um melhor desempenho, utilize uma expressão de otimização da cláusula FOR. Para
obter maiores informações sobre expressões de otimização Rushmore, consulte ” SET OPTIMIZE”
e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do
Desenvolvedor.

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

TO ListaVarMem Especifica a lista de variáveis ou elementos de matriz para os quais os


resultados da média são armazenados.

TO ARRAY NomeMatriz Especifica a matriz unidimensional na qual os resultados da média são


armazenados. A matriz unidimensional pode ser criada antes da execução de AVERAGE.

Se a matriz incluída em AVERAGE não existir, o Visual FoxPro a criará automaticamente. Se a


matriz existir e não for grande o suficiente para conter todos os resultados, o Visual FoxPro
automaticamente aumentará o tamanho da matriz para acomodar as informações.
NOOPTIMIZE Desativa a otimização Rushmore de AVERAGE. Para obter maiores informações,
consulte ’ ’SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15,
“Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

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

AVERAGE, exemplo do comando

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

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

TABELA de Cores

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

Cor Valores RGB Valor de nCor

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( ), função

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

Sintaxe

BETWEEN(eValorTeste, eValorMínimo, eValorMáximo)

Tipos de retorno

Lógico ou valor nulo

Argumentos

eValorTeste Especifica a expressão cujo valor é testado por BETWEEN( ). Se o valor de


eValorTeste for maior que ou igual ao valor de eValorMínimo e menor que ou igual ao valor de
eValorMáximo, BETWEEN( ) retornará verdadeiro (.T.). Caso contrário, BETWEEN( ) retornará
falso (.F.). BETWEEN( ) retornará o valor nulo se eValorMínimo ou eValorMáximo representarem
um valor nulo.

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

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

Comentários

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

BETWEEN( ), exemplo da função

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

CLOSE 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( ), função

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

Sintaxe

BINTOC(nExpressão [, nTamanho])

Tipos de retorno

Caractere

Argumentos

nExpressão Especifica o valor inteiro a ser convertido.

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

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

nTamanho Intervalo nExpressão

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

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

Utiliza-se BINTOC( ) para reduzir o tamanho dos índices para campos numéricos que contêm dados
inteiros. Por exemplo, um campo numérico denominado iPartCode pode conter um valor inteiro
entre 1 e 127 que corresponde a um código de classificação de peças. BINTOC( ) permite que você
converta o valor no campo numérico em uma representação de caracteres simples. Por exemplo, o
comando a seguir cria um índice com uma chave de índice de um caractere:

INDEX ON BINTOC(nPartCode,1) TAG PartCode

BITAND( ), função

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

Sintaxe

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

Numérico

Argumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação AND em


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

Comentários

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

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

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

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

BITAND( ), exemplo da função

x = 3 && 0011 binário


y = 6 && 0110 binário

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

BITCLEAR( ), função

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

Sintaxe

BITCLEAR(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

nExpressão1 Especifica o valor numérico em que um bit é limpo. Se nExpressão1 não for um
número inteiro, será convertido em inteiro antes que o seu bit seja definido.
nExpressão2 Especifica a posição do bit que é limpo em nExpressão1. nExpressão2 pode estar no
intervalo de 0 a 31; 0 é o bit mais à direita.

BITCLEAR( ), exemplo da função

x = 7 && 0111 binário


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

BITLSHIFT( ), função

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

Sintaxe

BITLSHIFT(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

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

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

BITLSHIFT( ), exemplo da função

x = 5 && 0101 binário


y = 1 && Desloca os bits 1 posição para a esquerda

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

BITNOT( ), função

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

Sintaxe

BITNOT(nExpressão)
Tipos de retorno

Numérico

Argumentos

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

Comentários

A função BITNOT( ) retorna o complemento em nível de bit de nExpressão. O valor numérico


retornado por BITNOT( ) representa nExpressão com cada bit de valor 0 alternado para 1 e cada bit
de valor 1 alternado para 0.

A tabela a seguir mostra o resultado de uma operação NOT em nível de bit em nExpressão:

Bit de nExpressão Bit resultante

0 1
1 0

BITNOT( ), exemplo da função

x = 5 && 0101 binário


? BITNOT(x) && Retorna -6

BITOR( ), função

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

Sintaxe

BITOR(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação OR


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

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

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

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

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

BITOR( ), exemplo da função

x = 5 && 0101 binário


y = 6 && 0110 binário

? BITOR(x,y) && Retorna 7, 0111 binário

BITRSHIFT( ), função

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

Sintaxe

BITRSHIFT(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

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

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

BITRSHIFT( ), exemplo da função

x = 5 && 0101 binário


y = 1 && Desloca os bits 1 posição para a direita

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


BITSET( ), função

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

Sintaxe

BITSET(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

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

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

BITSET( ), exemplo da função

x = 5 && 0101 binário


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

BBIITTTTEESSTT(( )),, ffuunnççããoo

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

Sintaxe

BITTEST(nExpressão1, nExpressão2)

Tipos de retorno

Lógico

Argumentos

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

nExpressão2 Especifica a posição do bit que é verificado em nExpressão1. nExpressão2 pode


estar no intervalo de 0 a 31; 0 é o bit mais à direita.
BITTEST( ), exemplo da função

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

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

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

BITXOR( ), função

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

Sintaxe

BITXOR(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação OR


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

Comentários

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

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

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


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

BITXOR( ), exemplo da função

x = 5 && 0101 binário


y = 6 && 0110 binário

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

BLANK, comando

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

Sintaxe

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

Argumentos

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

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

Escopo Especifica um intervalo de registros a serem limpos. Somente os registros que estiverem
dentro do intervalo serão limpos. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD
nNúmeroRegistro e REST.

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

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

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

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

NOOPTIMIZE Evita a otimização Rushmore de BLANK. Para obter maiores informações,


consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando
aplicativos,” no Guia do Desenvolvedor.

Comentários

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

BLANK, exemplo de comando

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

CLOSE 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 conteúdo do registro
BLANK && Limpa o registro
DISPLAY && Exibe o registro em branco
GATHER FROM gaCustomer && Restaura o conteúdo do registro original
DISPLAY && Exibe o registro restaurado

BOF( ), função

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

Sintaxe

BOF([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

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

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

Comentários

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

BOF( ), exemplo de função

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

CLOSE 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 concluída.",48)

BROWSE, comando

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

Sintaxe

BROWSE
[FIELDS ListaCampos]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[FOR lExpressão1 [REST]]
[FORMAT]
[FREEZE NomeCampo]
[KEY eExpressão1 [, eExpressão2]]
[LAST | NOINIT]
[LOCK nNúmeroDeCampos]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NOREFRESH]
[NORMAL]
[NOWAIT]
[PARTITION nNúmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferência]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTítulo]
[VALID [:F] lExpressão2 [ERROR cTextoMensagem]]
[WHEN lExpressão3]
[WIDTH nLarguraCampo]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]
[COLOR SCHEME nNúmeroEsquema]

Argumentos

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

Se você omitir FIELDS, todos os campos da tabela serão exibidos na ordem em que aparecem na
estrutura da tabela.

FONT cNomeFonte [, nTamanhoFonte] Especifica a fonte e o tamanho da fonte da janela


Pesquisar. A expressão de caracteres cNomeFonte especifica o nome da fonte e a expressão
numérica nTamanhoFonte especifica o tamanho dela. Por exemplo, a cláusula a seguir especifica
uma fonte Courier de 16 pontos para os campos exibidos em uma janela Pesquisar:

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

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

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

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

Caractere Estilo de fonte

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

CLOSE 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 lExpressão1 Especifica uma condição pela qual somente registros para os quais lExpressão1
é verdadeira são exibidos na janela Pesquisar.

Rushmore otimizará uma consulta especificada com um comando BROWSE FOR se lExpressão1
for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável
na cláusula FOR. Para obter informações sobre expressões otimizáveis por Rushmore, consulte SET
OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,”
no Guia do Desenvolvedor.

Inclua FOR para mover o ponteiro do registro até o primeiro registro que corresponda à condição.
Inclua REST para manter o ponteiro do registro na sua posição atual.
REST Impede que o ponteiro do registro seja movido da sua posição atual para o início da tabela
quando uma janela Pesquisar é aberta com a cláusula FOR. Caso contrário, BROWSE, como
padrão, posiciona o ponteiro do registro no início da tabela.

FORMAT Especifica o uso de um arquivo de formatação para controlar a exibição e o formato da


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

· A lista de campos a serem pesquisados


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

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

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

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

A seguir é apresentado o conteúdo do arquivo de formatação CUSTENTR.FMT, que é utilizado


para validar dados digitados na tabela customer:

@ 3,0 GET cust_id PICTURE 'NNNNN'


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

* Este é o programa que utiliza o arquivo de formatação


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 alterações somente em um campo da janela
Pesquisar. Este campo é especificado com NomeCampo. Os demais campos são exibidos e não
podem ser editados.

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

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

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

No exemplo a seguir, somente registros com códigos postais dentro do intervalo de 10.000 a 30.000
são exibidos na janela Pesquisar:

CLOSE 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 alteração na configuração feita na aparência de uma janela
Pesquisar. As alterações são salvas no arquivo FOXUSER, podendo incluir alterações feitas na lista
de campos, no tamanho de cada campo e na localização e tamanho da janela Pesquisar.

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

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

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

As cláusulas LAST e NOINIT são idênticas; NOINIT fornece compatibilidade com o dBASE.
LOCK nNúmeroDeCampos Especifica o número de campos que pode ser exibido na partição
esquerda da janela Pesquisar sem tabular ou rolar. A partição esquerda é automaticamente
dimensionada para que possa exibir o número de campos especificado com nNúmeroDeCampos.

LPARTITION Especifica que o cursor é colocado no primeiro campo na partição esquerda da


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

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

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

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

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

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

NOEDIT | NOMODIFY Impede que um usuário modifique a tabela. NOEDIT e NOMODIFY são
idênticas. Se você incluir qualquer uma destas cláusulas, poderá pesquisar ou percorrer a tabela,
mas não poderá editá-la. No entanto, você poderá incluir e excluir registros.

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

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

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

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

NOOPTIMIZE Desativa a otimização Rushmore de BROWSE. Para obter maiores informações,


consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” na Ajuda no capítulo 15,
“Otimizando aplicativos”, no Guia do Desenvolvedor.
NOREFRESH Impede que a janela Pesquisar seja atualizada. As janelas Pesquisar são atualizadas
em intervalos determinados por SET REFRESH. NOREFRESH é útil com arquivos somente para
leitura e melhora o desempenho.

NORMAL Abre a janela Pesquisar com as definições padrão normais, tais como as opções de
cores, tamanho, posição, título e controle (GROW, FLOAT, ZOOM e assim por diante). Se você
omitir NORMAL e a janela de saída atual for implementada pelo usuário com suas próprias
definições, a janela Pesquisar também assumirá as definições especificadas pelo usuário.

NOWAIT Continua a execução do programa logo depois da abertura da janela Pesquisar. O


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

NOWAIT está disponível apenas dentro de um programa. A inclusão de NOWAIT quando


BROWSE é emitido na janela Comando não tem qualquer efeito.

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

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

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

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

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

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

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

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

Quando uma preferência estiver como você deseja, você poderá impedir que ela seja alterada. Feche
a janela Pesquisar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e
altere o registro que contém a preferência para somente para leitura, alterando o valor do campo
lógico READONLY para verdadeiro (.T.).

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

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

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

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

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

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

DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;


CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE 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 cTextoTítulo Substitui o alias ou o nome de tabela padrão exibido na barra de título da
janela Pesquisar pelo título especificado com cTextoTítulo. Caso contrário, o nome ou o alias da
tabela que está sendo pesquisada será exibido na barra de título.

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

CLOSE 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 lExpressão2 Executa a validação em nível de registro em uma janela Pesquisar. A


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

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

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

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

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

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

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

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

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

IN [WINDOW] NomeJanela2 Especifica a janela pai dentro da qual a janela Pesquisar é aberta. A
janela Pesquisar não assume as características da janela pai. Uma janela Pesquisar ativada dentro de
uma janela pai não pode ser deslocada para fora dela. Caso a janela pai seja movida, a janela
Pesquisar a acompanhará.

Para acessar a janela Pesquisar, a janela pai deverá primeiro ser definida com DEFINE WINDOW
e deverá estar ativa e visível.
IN SCREEN Coloca explicitamente uma janela Pesquisar na janela principal do Visual FoxPro,
quando uma definida pelo usuário está ativa.

COLOR SCHEME nNúmeroEsquema Especifica o número de um esquema de cores utilizado para


as cores da janela Pesquisar.

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

Comentários

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

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

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

A lista de campos pode especificar qualquer combinação de campos ou campos calculados.

A sintaxe da lista de campo é:

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

Campos calculados… A lista de campos pode conter instruções para a criação de campos
calculados. Um campo calculado contém dados somente para leitura criados com uma expressão.
Esta pode ter qualquer forma, mas deve ser do Visual FoxPro.

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

NomeCampoCalculado = eExpressão

Este exemplo cria um campo calculado chamado location:

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

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

A lista de campos da cláusula FIELDS inclui opções que permitem a manipulação especial dos
campos exibidos em uma janela Pesquisar:

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

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

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

:nLarguraColuna Especifica o tamanho de exibição para um campo em colunas. O valor de


nLarguraColuna não afeta o tamanho do campo na tabela; apenas altera a forma de exibição do
campo na janela Pesquisar.

:V = lExpressão1 [:F] [:E = cTextoMensagem] Permite que você execute validação de dados em
nível de campo dentro da janela Pesquisar. Se lExpressão1 resultar em verdadeiro (.T.) quando o
cursor for movido de um campo, a entrada de dados nele será considerada correta e o cursor se
moverá para o campo seguinte.

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

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

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

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

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

:E = cTextoMensagem Se a expressão de validação :V = lExpressão1 resultar em verdadeiro (.T),


o cursor deixará o campo normalmente. Se a expressão resultar em falso (.F.), o cursor permanecerá
no campo e o Visual FoxPro exibirá uma mensagem de erro.
Se a opção de erro (:E) for incluída, cTextoMensagem aparecerá no lugar da mensagem de erro do
sistema. cTextoMensagem aparecerá somente se SET NOTIFY estiver ativado (ON). A campainha
soará se SET BELL estiver ativado (ON).

Se :V = lExpressão1 resultar em 0, nenhuma mensagem será exibida e o cursor permanecerá no


campo que está sendo validado. Esta opção permite que você exiba as suas próprias mensagens de
erro em rotinas de validação.

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

:V especifica os critérios de validação. :F força a verificação da validação a ser executada se os


dados forem alterados ou não. :E substitui a mensagem de erro do sistema do Visual FoxPro por
uma definida pelo usuário. No Visual FoxPro, a mensagem de erro é exibida na barra de status na
parte inferior da janela principal.

Pressione ESC para fechar a janela Pesquisar.

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

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

CLOSE 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 informações sobre os códigos de
opção de figura.
:B = eLigaçãoInferior eLigaçãoSuperior [:F] Especifica um conjunto de limites no qual os dados
em um campo devem se encontrar. As expressões de limite eLigaçãoInferior e eLigaçãoSuperior
devem corresponder ao tipo de dados do campo. Elas não podem ser funções definidas pelo usuário.
Se os dados digitados não estiverem no intervalo entre eLigaçãoInferior e eLigaçãoSuperior, uma
mensagem de erro do sistema será exibida indicando onde os dados devem se encontrar.

Como padrão, os dados digitados só serão verificados com os valores de limite se você alterar o
conteúdo do campo. Para forçar esta verificação, inclua a opção de validação forçada (:F).

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

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

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

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

CLOSE 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 = lExpressão2 Determina se o cursor pode ser movido para um campo. Se lExpressão2 resultar
em falso (.F.), será proibido mover o cursor para o campo. Se lExpressão2 resultar em verdadeiro
(.T.), o cursor poderá ser movido para o campo. As funções definidas pelo usuário são suportadas
em lExpressão2.

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

Suporte SET SKIP… SET SKIP permite que você estabeleça um relacionamento um-para-n entre
duas tabelas. Para cada registro da tabela pai, podem existir vários registros relacionados na tabela
filho. Se você criar um relacionamento um-para-n, poderá utilizar BROWSE para visualizar
registros das tabelas pai e filho.

O registro pai é exibido uma vez, junto com o primeiro registro correspondente da tabela filho. Os
registros correspondentes subseqüentes são exibidos nas linhas após o registro pai e o primeiro
registro filho correspondente. O caractere de preenchimento para informações pai repetidas depende
da fonte atual da janela Pesquisar.
Caso o ponteiro do registro esteja posicionado em um registro pai, você poderá movê-lo entre os
registros pai na janela Pesquisar, pressionando as teclas CTRL+SETA ABAIXO para mover-se para
o próximo registro pai ou CTRL+SETA ACIMA para mover-se para o registro pai anterior. Para
obter maiores informações sobre como criar relacionamentos um-para-n, consulte SET SKIP.

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

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

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 expedição para cada cliente' NOWAIT
BROWSE FIELDS customer.cust_id :H='Número do Cliente', ;
customer.city :H='Cidade do Cliente', orders.shipped_on

Funções úteis … Várias funções do Visual FoxPro retornam informações úteis sobre uma janela
Pesquisar.

Função Descrição

VARREAD( ) Retorna o nome do campo onde se encontra o cursor na janela Pesquisar.


RECNO( ) Retorna o número do registro selecionado na janela Pesquisar ativa.

BUILD EXE, comando

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

Sintaxe

BUILD EXE NomeArquivoEXE FROM NomeProjeto [RECOMPILE]

Argumentos

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

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

Comentários

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

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

Se o arquivo executável contém as definições de classe OLEPUBLIC, BUILD EXE


automaticamente registra as definições de classe OLEPUBLIC no registro do sistema. As definições
de classe OLEPUBLIC aparecem na caixa de listagem Classes do servidor, na guia Servidores da
caixa de diálogo Informações sobre o projeto.

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

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

BUILD PROJECT, comando

Cria e constrói um arquivo de projeto.

Sintaxe

BUILD PROJECT NomeArquivoProjeto


FROM NomePrograma1 | NomeMenu1 | NomeRelatório1 | NomeEtiqueta1
| NomeFormulário1 | NomeBiblioteca1
[, NomePrograma2 | NomeMenu2 | NomeRelatório2 | NomeEtiqueta2
| NomeFormulário2 | NomeBiblioteca2 ...]

Argumentos

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

FROM NomePrograma1 | NomeMenu1 | NomeRelatório1 | NomeEtiqueta1


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

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

Comentários

BUILD PROJECT cria automaticamente uma tabela de projeto com uma extensão de nome de
arquivo .PJX ao abrir e processar um ou mais arquivos de programa, menu, relatório, etiqueta,
formulário ou biblioteca especificados. Você pode utilizar o arquivo de projeto para criar um dentre
dois tipos de programa: um arquivo de aplicativo com uma extensão .APP ou um arquivo
executável com uma extensão .EXE. A tabela de projeto controla todos os arquivos necessários para
a criação de um aplicativo, bem como as dependências, referências e conexões entre os arquivos.
Uma vez que as partes do projeto forem especificadas, o Visual FoxPro certifica-se de que o
aplicativo está baseado nos arquivos fonte mais recentes.

Para obter maiores informações sobre a criação de projetos, consulte o capítulo 13, “Compilando
um aplicativo”, no Guia do Desenvolvedor.

Quando o Visual FoxPro encontra um arquivo de programa, menu ou formulário ao criar um


arquivo de projeto com BUILD PROJECT, ele procura seu arquivo compilado e compara a marca
de data e hora dos dois arquivos. Caso a marca de data e hora do arquivo fonte seja posterior à do
arquivo compilado, o Visual FoxPro irá recompilar o arquivo fonte.

Cada arquivo de projeto contém uma marca de data e hora para que você possa atualizá-lo quando
fizer alterações nos arquivos do projeto ou quando as dependências forem alteradas. Isso ajuda a
garantir que qualquer aplicativo criado a partir de um arquivo de projeto sempre utilizará os
arquivos fonte mais recentes. Para atualizar um arquivo de projeto, emita BUILD PROJECT sem a
cláusula opcional FROM. Em seguida, o Visual FoxPro atualizará o projeto especificado.

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

IIM
MPPO
ORRTTA
ANNTTEE :: CCoom
moo ggeerraarr uum
m ..EEX
XEE

.. CCrriiaarr oo ..PPRRG G ((CCoom


m uum m eeddiittoorr))
.. EExxeeccuuttaarr oo ccoom
maannddoo BBU
UIILLD D PPRRO OJJEECCTT nnoom
mee--11 FFRRO
OMM nnoom
mee--pprrgg
.. EExxeeccuuttaarr oo ccoom
maannddoo BBU
UIILLD D EEX XEE nnoom
mee-exe FROM nome-1
CALCULATE, comando

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


envolvem campos.

Sintaxe

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

Argumentos

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

AVG(nExpressão)

CNT( )

MAX(eExpressão)

MIN(eExpressão)

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

STD(nExpressão)

SUM(nExpressão)

VAR(nExpressão)

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

Escopo Especifica um intervalo de registros utilizados no cálculo. Apenas os registros dentro do


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

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


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

Rushmore otimizará uma consulta CALCULATE ... FOR se lExpressão1 for uma expressão
otimizável. Para um melhor desempenho, use uma expressão otimizável na cláusula FOR. Para
obter maiores informações sobre expressões otimizáveis Rushmore, consulte SET OPTIMIZE e
“Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do
Desenvolvedor.

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

TO ListaVarMem Especifica uma ou mais variáveis de memória nas quais os resultados do cálculo
são armazenados. Se você especificar uma variável de memória que não existe, o Visual FoxPro irá
criá-la automaticamente com o nome especificado.

TO ARRAY NomeMatriz Especifica um nome de matriz na qual os resultados do cálculo podem


ser armazenados. Se você especificar um nome de matriz que não existe, o Visual FoxPro criará
uma matriz automaticamente com o nome especificado. Se a matriz existir, mas não for grande o
bastante para conter todos os resultados do cálculo, o Visual FoxPro aumentará automaticamente o
tamanho da matriz para abrir espaço para as informações. Se uma matriz existente for maior do que
o necessário, os elementos adicionais permanecerão inalterados. Os resultados são armazenados nos
elementos da matriz na ordem em que são especificados no comando CALCULATE.

NOOPTIMIZE Desativa a otimização Rushmore de CALCULATE. Para obter maiores


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

AVG(nExpressão) Calcula a média aritmética de nExpressão. Somente os registros que


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

CNT( ) Retorna o número de registros da tabela. Somente os registros que correspondam ao


Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

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

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

NPV(nExpressão1, nExpressão2 [, nExpressão3]) Calcula o valor presente líquido de uma série de


fluxos de caixa futuros descontados a uma taxa de juros periódica e constante.

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


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

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

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

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

SUM(nExpressão) Totaliza os valores de nExpressão. Somente os registros que correspondam ao


Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

VAR(nExpressão) Calcula a variância da média de nExpressão. A variância é o desvio padrão


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

Comentários

Registros que contenham valores nulos não serão incluídos nas operações 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 execução do arquivo de programa atual do Visual FoxPro.

Sintaxe
CANCEL

Comentários

O controle retornará à janela Comando quando o Visual FoxPro estiver sendo utilizado de forma
interativa. Se um aplicativo distribuído em tempo de execução estiver sendo executado, CANCEL
terminará o aplicativo e o controle retorna ao Windows. Se um programa estiver sendo executado
no Visual FoxPro na hora da criação, CANCEL terminará o programa e o controle retorna à janela
Comando.

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

CANCEL, exemplo do comando

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

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

CAPSLOCK( ), função

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

Sintaxe

CAPSLOCK([lExpressão])

Tipos de retorno

Lógico

Argumentos

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

Comentários

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

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

glOldLock = CAPSLOCK( ) && Grava a definição original


= CAPSLOCK(.T.) && Ativa CAPS LOCK

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

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

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

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

CD | CHDIR, comando

Altera o diretório padrão do Visual FoxPro para o diretório especificado.

Sintaxe

CD cCaminho | CHDIR cCaminho

Argumentos

cCaminho Especifica um dos itens a seguir:

· Um designador de unidade de disco.


· Um designador de unidade de disco com um diretório.
· Um diretório filho.
· Qualquer opção acima usando a notação abreviada do MS-DOS ( \ ou ..). Quando você
inclui .. para alterar ao diretório pai, deve acrescentar um espaço entre CD ou CHDIR e os dois
pontos.

Comentários

Utilize CD ou CHDIR para especificar o diretório padrão do Visual FoxPro. O Visual FoxPro
procura arquivos no diretório padrão do Visual FoxPro. Caso o Visual FoxPro não localize um
arquivo no diretório padrão, ele irá procurar no caminho do Visual FoxPro, caso tenha sido
especificado. Utilize SET PATH para especificar o caminho do Visual FoxPro.

Se você criar um arquivo e não especificar onde deverá ser colocado, ele será colocado no diretório
padrão do Visual FoxPro.
CD | CHDIR, exemplo do comando

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

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro


MKDIR mytstdir && Cria um novo diretório
CHDIR mytstdir && Altera para o novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório
SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro
RMDIR mytstdir && Remove o novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

CDOW( ), função

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

Sintaxe

CDOW(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

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

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

Comentários

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

CDOW( ), exemplo da função

STORE {02/16/95} TO gdDate Exibe quinta-feira


CLEAR
? CDOW(gdDate) &&
CDX( ), função

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

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

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

nNúmeroÍndice Descrição

1 Retorna o nome do arquivo de índice estrutural(que é sempre o mesmo que o nome da


tabela).
2 Retorna o primeiro nome de arquivo de índice composto especificado na cláusula INDEX
de USE ou em SET INDEX.
3 Retorna o segundo nome de arquivo de índice composto, se presente, e assim por diante.
Maior que o número de arquivos .CDX abertos Retorna a seqüência vazia.

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

nNúmeroÍndice Descrição

1 Retorna o primeiro nome de arquivo de índice composto especificado na cláusula INDEX


de USE ou em SET INDEX.
2 Retorna o segundo nome de arquivo de índice composto, se presente, e assim por diante.
Maior que o número de arquivos .CDX abertos Retorna a seqüência vazia.

nÁreaTrabalho Especifica o número da Área de trabalho de uma tabela, cujos nomes de arquivos
de índice composto abertos você deseja que sejam retornados por CDX( ).
cAliasTabela Especifica o alias de uma tabela, cujos nomes de arquivos de índice composto
abertos você deseja que sejam retornados por CDX( ).

Se você omitir nÁreaTrabalho e cAliasTabela, serão retornados os nomes dos arquivos de índice
composto correspondentes à tabela na Área de trabalho selecionada no momento.

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

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

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

CDX( ), exemplo da função

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

CLOSE 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 não são mais encontradas marcas
ENDIF
ENDFOR

CEILING( ), função

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

Sintaxe

CEILING(nExpressão)

Tipos de retorno
Numérico

Argumentos

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

Comentários

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

CEILING( ), exemplo de função

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

Sintaxe

CHANGE
[FIELDS ListaCampos]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[FONT cNomeFonte [,nTamanhoFonte]]
[STYLE cEstiloFonte]
[FREEZE NomeCampo]
[KEY eExpressão1 [, eExpressão2]]
[LAST | NOINIT]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NORMAL]
[NOWAIT]
[PARTITION nNúmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferência]
[REST]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTítulo]
[VALID [:F] lExpressão3 [ERROR cTextoMensagem]]
[WHEN lExpressão4]
[WIDTH nLarguraCampo]
[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN | IN MACDESKTOP]]
[COLOR SCHEME nNúmeroEsquema
| COLOR ListaParesCores]

Argumentos

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

Comentários

CHANGE funciona da mesma forma que EDIT.

CHR( ), função

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

Sintaxe

CHR(nCódigoANSI)

Tipos de retorno

Caractere

Argumentos

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

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

Comentários

CHR( ) retorna um caractere único correspondente à posição numérica do caractere na tabela de


caracteres da página de código atual. CHR( ) pode ser utilizado para enviar códigos de controle de
impressão para a impressora.

CHR( ), exemplo de função


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

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

CHRSAW( ), função

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

Sintaxe

CHRSAW([nSegundos])

Tipos de retorno

Lógico

Argumentos

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

A inclusão de nSegundos permite que você utilize CHRSAW( ) para diversas atividades com
intervalo de tempo determinado. Por exemplo, seu programa pode fechar um aplicativo se uma tecla
não for pressionada após um número específico de segundos.

Comentários

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

CHRSAW( ), exemplo de função

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

SET TALK 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( ), função

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

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

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

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


cExpressãoProcurada.

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

Se um caractere em cExpressãoProcura for localizado em cExpressãoProcurada, o caractere em


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

Se cExpressãoSubstituição tiver menos caracteres do que cExpressãoProcura, os caracteres


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

Comentários

CHRTRAN( ) converte a expressão de caracteres cExpressãoProcurada utilizando as expressões de


conversão cExpressãoProcura e cExpressãoSubstituição e retorna a seqüência de caracteres
resultante.

CHRTRAN( ), exemplo de função


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

CHRTRANC( ), função

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

Sintaxe

CHRTRANC(cProcurado, cProcurarPor, cSubstituição)

Tipos de retorno

Caractere

Argumentos

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

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


cProcurada.

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

Se um caractere em cProcurarPor for localizado em cProcurada, o caractere em cProcurada será


substituído por um caractere de cSubstituição que estiver na mesma posição em cSubstituição que o
respectivo caractere em cProcurarPor.

Se cSubstituição tiver menos caracteres do que cProcurarPor, os caracteres adicionais em


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

Comentários

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

CLEAR, comandos

Libera o item ou itens especificados da memória.

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

Argumentos

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

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

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

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

CLASSLIB NomeBibliotecaClasses Limpa da memória todas as definições de classes contidas em


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

DEBUG Limpa todos os pontos de interrupção no Depurador e restaura as janelas de depuração


(Chamar Pilha, Rastrear, Observar etc.) às suas posições padrão.

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

Trabalha no modo de moldura do depurador ou fox.

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

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

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

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

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

MEMORY Libera da memória todas as matrizes e variáveis de memória públicas e privadas. As


variáveis de memória do sistema não são liberadas.

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

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

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

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

READ [ALL] Incluído para manter a compatibilidade com versões anteriores. Utilize CLEAR
EVENTS como substituto.

RESOURCES [NomeArquivo] Especifica o nome de um arquivo de ícone, cursor, fonte, figura ou


bitmap no cache a ser limpo da memória. Se nenhum nome de arquivo for especificado, todos os
arquivos de ícone, cursor, fonte, figura e bitmap serão removidos da memória.

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

Limpar um arquivo de recurso é útil principalmente para remover uma imagem gráfica da memória
e fazer com que o Visual FoxPro recarregue uma imagem com o mesmo nome a partir do disco. Por
exemplo, um relatório pode exibir imagens gráficas de um banco de dados, todas denominadas
TEMP; no entanto, como todas possuem o mesmo nome, o Visual FoxPro não recarregará cada
nova imagem gráfica, a menos que uma já existente tenha sido limpa da memória utilizando o
comando CLEAR RESOURCES.

TYPEAHEAD Limpa o buffer de teclado. CLEAR TYPEAHEAD é útil quando você deseja evitar
que um campo receba entrada ou que um aviso seja respondido antes que o campo ou aviso seja
exibido.
WINDOWS Libera da memória todas as características de janelas definidas pelo usuário e limpa
as janelas da janela principal do Visual FoxPro ou da janela ativa definida pelo usuário. Utilize
SAVE WINDOW para salvar as definições de janelas em um arquivo ou campo Memo para uso
posterior.

CLEAR WINDOWS libera da memória qualquer referência de variáveis de memória aos


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

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

Ao se emitir CLEAR WINDOWS, a referência da variável de memória é liberada e a variável de


memória passa a conter o valor nulo:

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

Comentários

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

CLOSE, comandos

Fecha diversos tipos de arquivos.

Sintaxe

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

Argumentos

ALL Fecha todos os bancos de dados, tabelas e índices abertos em todas as Áreas de trabalho e
seleciona a Área de trabalho 1. CLOSE ALL também fecha todos os arquivos abertos com as
funções de arquivo de nível inferior FCREATE( ) e FOPEN( ). CLOSE ALL não fecha um arquivo
aberto com SET PRINT.

CLOSE ALL também fecha os itens:

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

CLOSE ALL não fecha os itens:

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

CLOSE DATABASES [ALL] Fecha o banco de dados atual e suas tabelas. Se não houver um
banco de dados aberto no momento, todas as tabelas livres, índices e arquivos de formatação
abertos em todas as Áreas de trabalho são fechados e a Área de trabalho 1 é selecionada.

ALL

Especifica que serão fechados os itens a seguir:

Todos os bancos de dados abertos e suas respectivas tabelas.


Todas as tabelas livres abertas.
Todos os índices e arquivos de formatação em todas as áreas de trabalho.
A Área de trabalho 1 é selecionada.

CLOSE DEBUGGER Fecha o depurador do Visual FoxPro.

CLOSE FORMAT Fecha um arquivo de formatação da Área de trabalho atual aberto com SET
FORMAT.

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

CLOSE PROCEDURE Fecha um arquivo de procedimentos aberto com SET PROCEDURE.

CLOSE TABLES [ALL] Fecha todas as tabelas de todos os bancos de dados abertos, mas deixa os
bancos de dados abertos. Caso não haja um banco de dados aberto, CLOSE TABLES fechará todas
as tabelas livres de todas as Áreas de trabalho.

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

ALL

Especifica que todas as tabelas, inclusive as livres, serão fechadas em todas as Áreas de trabalho.
Todos os bancos de dados permanecerão abertos.
CMONTH( ), função

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

Sintaxe

CMONTH(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

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

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

Comentários

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

CMONTH( ), exemplo de função

? CMONTH(DATE( ))
STORE {02/16/95} TO gdDueDate
? 'Seu pagamento venceu em ', CMONTH(gdDueDate)
STORE gdDueDate+60 TO gdFinalDate
? 'Você deve pagar até ', CMONTH(gdFinalDate)
? | ??, comando

Avalia expressões e exibe os resultados.

Sintaxe

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

Argumentos

? Expressão1 Avalia a expressão especificada por Expressão1 e envia um retorno de carro e


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

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

?? Expressão1 Avalia a expressão especificada por Expressão1 e exibe os resultados da expressão


na linha atual na posição atual da janela principal do Visual FoxPro, de uma janela ativa definida
pelo usuário ou da impressora. Um retorno de carro e alimentação de linha não são enviados antes
dos resultados.

PICTURE cCódigosFormato Especifica um formato de figura no qual é exibido o resultado de


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

Os códigos de função afetam o formato geral do resultado; os códigos de figura agem sobre
caracteres individuais no resultado. Se os códigos de função forem utilizados em cCódigosFormato,
eles deverão aparecer antes dos códigos de figura e ser precedidos por @. Vários códigos de função
sem espaços incorporados podem aparecer logo depois de @. O último código de função deve ser
seguido de um ou mais espaços. O(s) espaço(s) indicam o fim dos códigos de função e o início dos
códigos de figura.

FUNCTION cCódigosFormato Especifica um código de função a ser incluído na saída ? e ??. Se a


cláusula de função estiver incluída, não coloque @ antes dos códigos de função. Os códigos de
função devem ser precedidos por @ quando incluídos em PICTURE.

VnLargura Especifica um código de função especial que permite que os resultados de uma
expressão de caracteres se estendam verticalmente em um número limitado de colunas. nLargura
especifica o número de colunas na saída.

? 'Este é um exemplo de como o código de função V funciona.' ;


FUNCTION 'V10'

AT nColuna Especifica o número da coluna onde a saída é exibida. Essa opção permite que você
alinhe a saída em colunas para criar uma tabela. A expressão numérica nColuna pode ser uma
função definida pelo usuário que retorne um valor numérico.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para a saída ? | ??. cNomeFonte
especifica o nome da fonte e nTamanhoFonte especifica o tamanho em pontos. Por exemplo, o
comando a seguir exibe a data do sistema na fonte Courier de 16 pontos:

? DATE( ) FONT 'Courier',16

Se você incluir a cláusula FONT, mas omitir o tamanho em pontos nTamanhoFonte, será utilizada
uma fonte de 10 pontos.

Caso omita cláusula FONT e a saída ? | ?? for colocada na janela principal do Visual FoxPro, a
fonte da janela principal do FoxPro será utilizada na saída. Caso omita a cláusula FONT e a saída ? |
?? for colocada em uma janela definida pelo usuário, a fonte da janela definida pelo usuário será
utilizada na saída.
· Se a fonte especificada não estiver disponível, ela será substituída por outra fonte com
características semelhantes.

STYLE cEstiloFonte Especifica um estilo de fonte para a saída ? | ??. Se você omitir a cláusula
STYLE, o estilo de fonte Normal será utilizado. Se o estilo de fonte especificado não estiver
disponível, ele será substituído por um estilo de fonte com características semelhantes.

Observação É necessário incluir a cláusula FONT ao especificar um estilo de fonte com a cláusula
STYLE.

Os estilos de fonte que podem ser especificados com cEstiloFonte são:

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por
exemplo, o comando a seguir exibe a data do sistema em Courier Negrito Itálico:

? DATE( ) FONT 'COURIER' STYLE 'BI'

Comentários

? e ?? avaliam expressões e enviam os resultados para a janela principal do Visual FoxPro, para
uma janela ativa definida pelo usuário ou para a impressora.

Caso SET PRINTER estiver ativado (ON), os resultados da expressão serão direcionados para a
impressora e para a janela principal do Visual FoxPro ou para uma janela ativa definida pelo
usuário. Se SET PRINTER estiver ativado (ON) e SET CONSOLE estiver desativado (OFF), os
resultados serão direcionados somente para a impressora.

? | ??, exemplo do comando

? 15 * (10+10)
? 'Bem-vindo ao ' PICTURE '@!'
?? 'Visual FoxPro'

????, comando

Envia a saída diretamente para a impressora.


Sintaxe

??? cExpressão

Argumentos

cExpressão Especifica os caracteres que são enviados para a impressora.

Comentários

Um grupo de três pontos de interrogação desconsidera o driver da impressora e envia o conteúdo de


cExpressão diretamente para a impressora. cExpressão deve conter códigos de impressora válidos.

Os códigos de controle de impressora permitem reinicializar a impressora, alterar o tamanho e estilo


de tipo gráfico, bem como ativar ou desativar a impressão em negrito. Esses códigos podem
consistir em qualquer combinação de caracteres que podem ser ou não impressos e são específicos
da impressora que está sendo utilizada. Existem várias maneiras diferentes de direcionar códigos de
controle à impressora:

· Utilizar combinações de CHR( ) e seqüências entre aspas concatenadas com + para enviar
caracteres ASCII diretamente à impressora.
· Utilizar aspas para enviar uma seqüência contendo códigos de impressora ou caracteres
ASCII.
· Os códigos podem ser enviados para a impressora antes do início e depois do término da
impressão com as variáveis do sistema _PSCODE e _PECODE. Para obter maiores informações,
consulte _”PSCODE” e _”PECODE”.

Os códigos de controle de impressora variam de impressora a impressora. A melhor fonte de


informações sobre os códigos de controle de impressora é o manual que acompanha a sua
impressora.

CONTINUE, comando

Dá continuidade ao LOCATE anterior.

Sintaxe

CONTINUE

Comentários
CONTINUE é utilizado depois que LOCATE localiza um registro, a fim de continuar a operação de
LOCATE. CONTINUE move o ponteiro do registro até o próximo registro para o qual a expressão
lógica especificada no LOCATE anterior resultar verdadeiro (.T.).

CONTINUE pode ser utilizado várias vezes até o fim do arquivo ou do escopo especificado com
LOCATE.

Se CONTINUE localizar um registro, RECNO( ) retornará o número do registro, FOUND( )


retornará um valor verdadeiro (.T.) e EOF( ) retornará um valor falso (.F.).

Se CONTINUE não localizar um registro, RECNO( ) retornará o número de registros da tabela mais
um, FOUND( ) retornará falso (.F.) e EOF( ) retornará verdadeiro (.T.).

CONTINUE, exemplo do comando

No exemplo a seguir, todos os clientes da França são contados e o total será exibido. Todos os
registros são encontrados com a utilização de um comando LOCATE seguido de um comando
CONTINUE dentro de um loop.

CLOSE 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 França: '+ LTRIM(STR(gnCount))

COPY FILE, comando

Duplica qualquer tipo de arquivo.

Sintaxe

COPY FILE NomeArquivo1 TO NomeArquivo2

Comentários

COPY FILE cria uma duplicata do arquivo cujo nome é especificado em NomeArquivo1. É
possível utilizar COPY FILE para copiar qualquer tipo de arquivo. O arquivo a ser copiado não
pode estar aberto. Você deve incluir as extensões para o nome de arquivo de origem NomeArquivo1
e o nome de arquivo de destino NomeArquivo2.
NomeArquivo1 e NomeArquivo2 pode conter caracteres curinga como * e ?. Por exemplo, para
criar cópias de backup de todos os arquivos de programa com a extensão .PRG no diretório ou pasta
atual, emita COPY FILE *.PRG TO *.BAK.

Se você utilizar COPY FILE para criar uma cópia de backup de uma tabela, que possui um campo
Memo, um índice estrutural ou ambos, certifique-se de copiar também os arquivos .FPT e .CDX.

COPY STRUCTURE, comando

Cria uma nova tabela livre e vazia com a mesma estrutura da tabela selecionada no momento.

Sintaxe

COPY STRUCTURE TO NomeArquivo


[FIELDS ListaCampos]
[[WITH] CDX | [WITH] PRODUCTION]

Argumentos

NomeArquivo Especifica o nome da nova tabela vazia a ser criada.

No Visual FoxPro, o suporte ao valor nulo e à página de código para a nova tabela livre são
idênticos à tabela selecionada atualmente.

FIELDS ListaCampos Especifica que apenas os campos, cujos nomes estão indicados em
ListaCampos, serão copiados para a nova tabela. Se você omitir FIELDS ListaCampos, todos os
campos serão copiados para a nova tabela.

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de índice estrutural
idêntico ao da tabela existente. As marcas e as expressões de índice do arquivo de índice estrutural
original são copiadas para o novo arquivo de índice estrutural.

As cláusulas CDX e PRODUCTION são idênticas.

No Visual FoxPro, um índice primário para a tabela selecionada no momento é convertido em um


índice candidato para a nova tabela vazia.

COPY STRUCTURE, exemplo do comando

No exemplo a seguir, a tabela customer é aberta, sua estrutura é copiada para uma tabela
denominada backup e a tabela backup é aberta. APPEND FROM, em seguida, inclui registros na
tabela backup a partir da tabela customer e uma janela Pesquisar é aberta para a tabela backup.

CLOSE 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 serão incluídos
em um registro na nova tabela. Se você omitir FIELDS ListaCampos, todos os campos terão um
registro na nova tabela.

Comentários

As informações sobre cada campo da tabela selecionada no momento são copiadas para um registro
na nova tabela. A estrutura da nova tabela tem um formato fixo e consiste em dezesseis campos. A
tabela abaixo lista os nomes dos dezesseis campos e seu respectivo conteúdo.

Campo Tipo do campo Conteúdo

FIELD_NAME Caractere Nomes de campos da tabela selecionada (128 caracteres de largura)


FIELD_TYPE Caractere Tipos de campos:
C = Caractere
Y = Moeda
N = Numérico
F = Flutuante
I = Inteiro
B = Duplo
D = Data
T = DataHora
L = Lógico
M = Memo
G = Geral
FIELD_LEN Numérico Largura dos campos
FIELD_DEC Numérico Número de casas decimais em campos numéricos
FIELD_NULL Lógico Suporte ao valor nulo do campo
FIELD_NOCP Lógico Não é permitida a tradução da página de código (somente campos do tipo
caractere e memo)
FIELD_DEFA Memo Valores padrão do campo
FIELD_RULE Memo Regras de validação do campo
FIELD_ERR Memo Texto de validação do campo
TABLE_RULE Memo Regra de validação da tabela
TABLE_ERR Memo Texto de validação da tabela
TABLE_NAME Caractere Nome de tabela extenso (somente o primeiro registro)
INS_TRIG Memo Inserir expressão de disparo (somente o primeiro registro)
UPD_TRIG Memo Atualizar expressão de disparo (somente o primeiro registro)
DEL_TRIG Memo Excluir expressão de disparo (somente o primeiro registro)
TABLE_CMT Memo Comentário da tabela (somente o primeiro registro)

Você pode modificar a tabela recém-criada e utilizar CREATE FROM para criar uma nova tabela
com uma estrutura diferente. COPY STRUCTURE e CREATE FROM permitem a alteração da
estrutura de uma tabela através de programação.
A largura do campo FIELD_NAME é de 10 caracteres em versões anteriores do Visual FoxPro,
FoxPro para Windows e FoxPro para MS-DOS. Para utilizar CREATE FROM com uma tabela
criada por COPY STRUCTURE EXTENDED no Visual FoxPro 4.0, deve-se alterar a largura do
campo FIELD_NAME para 10 caracteres.

COPY STRUCTURE EXTENDED, exemplo do comando

O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para uma tabela
temp, pesquisa temp, cria uma tabela backup a partir de temp e exibe a estrutura de backup.

CLOSE 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 NomeArquivoÍndice

Argumentos

NomeMarca Especifica a marca utilizada para criar o arquivo de índice de entrada única .IDX.

OF NomeArquivoCDX Especifica o arquivo de índice composto que contém a marca. Inclua esta
cláusula se houver marcas com nomes iguais nos arquivos de índice composto abertos. Se OF
NomeArquivoCDX for omitido, o Visual FoxPro irá procurar a marca primeiro no arquivo de
índice estrutural. Se a marca não for encontrada nesse arquivo, o Visual FoxPro pesquisará todos os
arquivos de índice composto não-estrutural que estiverem abertos.

TO NomeArquivoÍndice Especifica o nome do arquivo de índice de entrada única .IDX a ser


criado.

Comentários

Utilize COPY TAG para criar um novo arquivo de índice de entrada única .IDX a partir de uma
marca em um arquivo de índice composto .CDX.

O arquivo de índice composto a partir do qual é criado o arquivo de índice de entrada única .IDX
deve estar aberto. Os arquivos de índice composto estrutural são abertos automaticamente quando
você abre uma tabela. Os índices compostos não-estruturais devem ser explicitamente abertos com
USE ... INDEX ou SET INDEX. Para obter maiores informações sobre arquivos de índice
composto, consulte “ INDEX”.

Utilize COPY INDEX para criar marcas em arquivos de índice composto a partir de arquivos de
índice de entrada única .IDX.

COPY TO ARRAY, comando

Copia dados da tabela selecionada no momento para uma matriz.

Sintaxe

COPY TO ARRAY NomeMatriz


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

Argumentos

NomeMatriz Especifica a matriz para a qual os dados da tabela são copiados.

FIELDS ListaCampos Especifica que apenas os campos especificados em ListaCampos serão


copiados para a matriz. Se você omitir FIELDS ListaCampos, todos os campos serão copiados para
a matriz, caso ela possua o número suficiente de colunas.

Escopo Especifica um intervalo de registros a serem copiados para a matriz. Apenas os registros
dentro do intervalo são copiados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD
nNúmeroRegistro e REST.

Para obter maiores informações sobre cláusulas de escopo, consulte o tópico Cláusulas de Escopo.

O escopo padrão para COPY TO ARRAY é ALL (todos os registros).

FOR lExpressão1 Especifica que apenas os registros que satisfazem a condição lógica lExpressão1
serão copiados para a matriz. Ao incluir FOR, você poderá copiar os registros condicionalmente
para a matriz, filtrando os registros indesejáveis.

Uma otimização Rushmore ocorrerá em uma consulta COPY TO ARRAY que inclui FOR
lExpressão1 se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho,
utilize uma expressão otimizável na cláusula FOR.

Para obter informações sobre expressões otimizáveis Rushmore, consulte SET OPTIMIZE e
“Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos,” no Guia do
Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão copiados para a matriz
desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).
NOOPTIMIZE Desativa a otimização Rushmore de COPY TO ARRAY. Para obter maiores
informações, consulte SET OPTIMIZE e “Compreendendo a Tecnologia Rushmore” no capítulo
15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

Comentários

COPY TO ARRAY e SCATTER são semelhantes. COPY TO ARRAY copia vários registros para
uma matriz, enquanto SCATTER copia apenas um registro para uma matriz ou um conjunto de
variáveis de memória. COPY TO ARRAY e SCATTER criarão uma nova matriz caso não exista
uma matriz com o nome especificado.

Para copiar um só registro para uma matriz, você pode especificar uma matriz unidimensional. A
matriz unidimensional especificada deve ter o mesmo número de elementos que os campos da
tabela, sem contar os campos Memo. Os campos Memo são ignorados em COPY TO ARRAY.

Se você especificar uma matriz unidimensional, o primeiro campo do registro será armazenado no
primeiro elemento da matriz, o segundo campo será armazenado no segundo elemento da matriz e
assim por diante. Se uma matriz unidimensional possuir mais elementos do que a tabela possui
campos, os elementos restantes permanecerão inalterados. Caso o número de elementos da matriz
seja menor do que o número de campos da tabela, os campos restantes serão ignorados.

Para copiar vários registros ou uma tabela inteira para uma matriz, especifique uma matriz
bidimensional. O número de linhas na matriz corresponde ao número de registros que a matriz pode
conter, e o número de colunas corresponde ao número de campos que ela pode conter.

Cada registro é armazenado em uma linha da matriz, e cada campo do registro é armazenado em
uma coluna da matriz. Para cada registro, o primeiro campo é armazenado na primeira coluna da
matriz, o segundo campo é armazenado na segunda coluna e assim por diante. Se o número de
colunas da matriz for maior do que o número de campos da tabela, as colunas restantes não serão
alteradas. Se o número de colunas da matriz for menor do que o número de campos da tabela, os
campos restantes não serão armazenados na matriz.

Cada linha sucessiva na matriz é preenchida com o conteúdo do registro seguinte na tabela. Se o
número de linhas da matriz for maior do que o número de registros da tabela, as linhas restantes não
serão alteradas. Se o número de linhas da matriz for menor do que o número de registros da tabela,
os registros restantes não serão armazenados na matriz.

Os dados podem ser copiados das matrizes para os novos registros de tabela com APPEND FROM
ARRAY. Eles também podem ser copiados de uma matriz ou de um conjunto de variáveis de
memória para os registros de uma tabela, através de GATHER.

COPY TO ARRAY, exemplo do comando

No exemplo a seguir, a tabela customer é aberta. Uma matriz bidimensional é então criada e os três
primeiros registros de customer são copiados para a matriz. DISPLAY MEMORY mostra os dados
armazenados na matriz.
CLOSE 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 conteúdos da tabela selecionada no momento.

Sintaxe

COPY TO NomeArquivo
[DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]]
[FIELDS ListaCampos
| FIELDS LIKE Estrutura
| FIELDS EXCEPT Estrutura]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[[WITH] CDX] | [[WITH] PRODUCTION]
[NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
| DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB
| WITH CHARACTER Delimitador]]]
[AS nPáginaCódigo]

Argumentos

NomeArquivo Especifica o nome do novo arquivo criado por COPY TO. Se você não incluir uma
extensão com o nome do arquivo, será atribuída a extensão padrão do tipo de arquivo especificado.
Se você não especificar um tipo de arquivo, COPY TO criará uma nova tabela do Visual FoxPro e
atribuirá a extensão padrão .DBF ao nome de arquivo da tabela.

DATABASE NomeBancoDeDados Especifica um banco de dados ao qual a nova tabela será


adicionada.

NAME NomeTabelaExtenso Especifica um nome extenso para a nova tabela. Os nomes extensos
podem conter até 128 caracteres e podem ser utilizados no lugar de nomes de arquivo curtos no
banco de dados.

FIELDS ListaCampos Especifica os campos que serão copiados para o novo arquivo. Se você
omitir FIELDS ListaCampos, todos os campos serão copiados para o arquivo. Se o arquivo que
você está criando não for uma tabela, os campos Memo não serão copiados para o novo arquivo,
mesmo que nomes de campos Memo tenham sido incluídos na lista de campos.
FIELDS LIKE Estrutura Especifica que os campos da tabela original, correspondentes à estrutura
do arquivo estrutura, são incluídos no novo arquivo criado por COPY TO.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto os que correspondem ao
estrutura do arquivo Estrutura, são incluídos no novo arquivo criado por COPY TO.

A estrutura do campo Estrutura suporta caracteres curinga. Por exemplo, para especificar que todos
os campos que comecem pelas letras A e P sejam incluídos no novo arquivo, Utilize:

COPY TO mytable FIELDS LIKE A*,P*

A cláusula LIKE pode ser combinada com a cláusula EXCEPT:

COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*


Escopo Especifica um intervalo de registros a serem copiados para um arquivo. Apenas os
registros dentro do intervalo são copiados. As cláusulas de escopo são: ALL, NEXT nRegistros,
RECORD nNúmeroRegistro e REST. Para obter maiores informações sobre cláusulas de escopo,
consulte o tópico Cláusulas de Escopo.

FOR lExpressão1 Especifica que somente os registros para os quais a condição lógica lExpressão1
resulta em verdadeiro (.T.) são copiados para o arquivo. Inclua FOR lExpressão1 para copiar
registros condicionalmente, filtrando os registros indesejáveis.

Uma otimização Rushmore™ ocorrerá em COPY TO com uma cláusula FOR lExpressão1 se
lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma
expressão otimizável na cláusula FOR lExpressão1.

Para obter informações sobre expressões otimizáveis Rushmore, consulte “SET OPTIMIZE
” e “Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia
do Desenvolvedor.

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

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de índice estrutural
idêntico ao da tabela existente. As marcas e as expressões de índice do arquivo de índice estrutural
original são copiadas para o novo arquivo de índice estrutural. As cláusulas CDX e PRODUCTION
são idênticas.

Não inclua CDX ou PRODUCTION, se a cópia estiver sendo feita para um arquivo que não
pertence a uma nova tabela do Visual FoxPro.

NOOPTIMIZE Desativa a otimização Rushmore de COPY TO.

Para obter maiores informações, consulte “ SET OPTIMIZE” e “Compreendendo a Tecnologia


Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor
.
TYPE Especifica o tipo de arquivo, caso o arquivo criado não seja uma tabela do Visual FoxPro.
Embora você deva especificar um tipo de arquivo, não é necessário incluir a palavra-chave TYPE.

FOXPLUS Os arquivos do tipo memo do Visual FoxPro possuem uma estrutura diferente daquela
dos arquivos memo do FoxBASE+. Caso a tabela-fonte do Visual FoxPro contenha um campo
Memo, inclua a cláusula FOXPLUS para criar uma tabela que possa ser utilizada no FoxBASE+. O
campo Memo do Visual FoxPro não pode conter dados binários, pois o FoxBASE+ não suporta
dados binários em campos Memo.

FOX2X Cria uma nova tabela que pode ser aberta em versões anteriores do FoxPro (versões 2.0,
2.5 e 2.6).

Para campos do tipo Numérico, Flutuante, Inteiro, Duplo e Moeda, valores nulos na tabela-fonte
são convertidos para zero na nova tabela. Para outros tipos de campo, valores nulos na tabela-fonte
são deixados em branco na nova tabela. Para obter maiores informações sobre valores em branco,
consulte “ ISBLANK( )”.

A tabela abaixo lista os tipos de campo do Visual FoxPro que serão convertidos em tipos de campos
diferentes na nova tabela, quando o argumento FOX2X for incluído.

Tipo de Campo do Visual FoxPro Tipo de Campo do FoxPro 2.X

Moeda Flutuante
DataHora Data
Duplo Flutuante

Inteiro Numérico
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 extensão .DIF, caso não seja incluída uma extensão em NomeArquivo.
MOD Cria um arquivo do Microsoft Multiplan® versão 4.01. O nome do novo arquivo do
Microsoft Multiplan receberá a extensão .MOD, caso não seja incluída uma extensão
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 alimentação de linha. Os campos não são delimitados. O nome do arquivo SDF
receberá a extensão .TXT, caso não seja incluída uma extensão.

SYLK Cria um arquivo de intercâmbio SYLK (Symbolic Link). Os arquivos SYLK são utilizados
no Microsoft MultiPlan. Cada campo da tabela selecionada no momento torna-se uma coluna da
planilha, e cada registro torna-se uma linha. Os nomes de arquivos SYLK não possuem extensão.
WK1 Cria um arquivo de planilha do Lotus® 1-2-3® versão 2.x. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extensão de nome de arquivo .WK1.

WKS Cria um arquivo de planilha do Lotus 1-2-3 versão 1a. Cada campo da tabela selecionada no
momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha
recebe a extensão de nome de arquivo .WKS.
WR1 Cria um arquivo de planilha do Lotus Symphony® versão 1.1 ou 1.2. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extensão de nome de arquivo .WR1.

WRK Cria um arquivo de planilha do Lotus Symphony versão 1.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extensão de nome de arquivo .WR1.
XLS Cria um arquivo de planilha do Microsoft Excel versão 2.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha receberá a extensão .XLS, caso não seja incluída uma extensão.

XL5 Cria um arquivo de planilha do Microsoft Excel versão 5.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha receberá a extensão .XLS, caso não seja incluída uma extensão.
DELIMITED Cria um arquivo delimitado. Um arquivo delimitado é um arquivo de texto ASCII
no qual cada registro termina com um retorno de carro e um comando de alimentação de linha. O
separador de campo padrão é a vírgula. Como os dados de caractere podem incluir vírgulas, os
campos de caractere também podem ser delimitados por aspas.

A menos que você especifique outra coisa, a extensão .TXT será atribuída a todos os arquivos do
tipo DELIMITED recém-criados.

DELIMITED WITH Delimitador Cria um arquivo delimitado com campos de caractere


delimitados por um caractere que não seja as aspas. O caractere que delimita campos de caractere é
especificado com Delimitador.
DELIMITED WITH BLANK Cria um arquivo delimitado com campos separados por espaços em
vez de vírgulas.
DELIMITED WITH TAB Cria um arquivo delimitado com campos separados por tabulações em
vez de vírgulas.
DELIMITED WITH CHARACTER Delimitador Cria um arquivo delimitado com todos os
campos delimitados pelo caractere especificado por Delimitador. Se Delimitador for um ponto-e-
vírgula (o caractere utilizado no Visual FoxPro para indicar continuação de linha de comando),
coloque o caractere de ponto-e-vírgula entre aspas. Você também pode especificar as palavras-
chave BLANK e TAB para Delimitador.

Observe que a cláusula WITH do Delimitador pode ser combinada com a cláusula WITH
CHARACTER. Por exemplo, o comando a seguir cria um arquivo de texto com campos de
caracteres delimitados por caracteres de sublinhado e todos os campos delimitados por ponto-e-
vírgula:

COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ‘;’

AS nPáginaCódigo Especifica a página de código para a tabela ou arquivo criado por COPY TO.
O Visual FoxPro copia o conteúdo da tabela selecionada no momento e, ao copiar os dados,
converte-os automaticamente para a página de código especificada para a nova tabela ou arquivo.
Se for possível, o Visual FoxPro marcará a tabela ou arquivo recém-criado com a página de código
especificada.
Se você especificar para nPáginaCódigo um valor que não seja suportado, o Visual FoxPro gera
uma mensagem de erro. Você pode utilizar GETCP( ) em nPáginaCódigo a fim de exibir a caixa de
diálogo Página de código, onde poderá especificar uma página de código para a tabela ou o arquivo
criado pelo Visual FoxPro.

Se você omitir AS nPáginaCódigo, a tabela ou o arquivo recém-criados serão convertidos para a


página de código atual do Visual FoxPro.

Caso nPáginaCódigo seja igual a 0, não ocorrerá a conversão de página de código e a tabela ou
arquivo recém-criados não serão marcados com uma página de código.

Comentários

Caso uma ordem de índice seja definida, os registros serão copiados na ordem do índice principal.

COPY TO, exemplo do comando

No exemplo a seguir, a tabela customer é aberta e os três registros seguintes são copiados para um
novo arquivo de dados do tipo DELIMITED, denominado TEMP.TXT.

CLOSE 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( ), função

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

Sintaxe

COS(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica uma expressão numérica, cujo co-seno é retornado por COS( ). nExpressão
pode ser qualquer valor.
Comentários

COS( ) retorna o co-seno de nExpressão em radianos. Utilize DTOR( ) para converter um ângulo de
graus em radianos. O número de casas decimais que COS( ) retorna pode ser especificado com SET
DECIMALS. O valor retornado por COS( ) varia entre –1 e 1.

COS( ), função exemplo

CLEAR
? COS(0) && Exibe 1.00
? COS(PI( )) && Exibe -1.00
? COS(DTOR(180)) && Exibe -1.00
STORE PI( ) * 3 TO gnAngle
? COS(gnAngle) && Exibe -1.00

COUNT, comando

Conta os registros de uma tabela.

Sintaxe

COUNT
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[TO NomeVarMem]
[NOOPTIMIZE]

Argumentos

Escopo Especifica um intervalo de registros a serem incluídos na contagem. As cláusulas de


escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Os comandos que
incluem Escopo operam somente na tabela da Área de trabalho ativa.

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

FOR lExpressão1 Especifica que apenas os registros que satisfaçam a condição lógica lExpressão1
serão contados.Ao incluir FOR, você poderá contar os registros condicionalmente, filtrando os
registros indesejáveis.

Rushmore irá otimizar uma consulta COUNT FOR se lExpressão1 for uma expressão otimizável.
Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações sobre expressões otimizáveis, consulte SET OPTIMIZE, e
“Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do
Desenvolvedor.
WHILE lExpressão2 Especifica uma condição pela qual os registros serão contados, quando a
expressão lógica lExpressão2 resulta em verdadeiro (.T.).

TO NomeVarMem Especifica a matriz ou variável de memória na qual a contagem de registros


será armazenada.Se a variável de memória especificada não existir, o Visual FoxPro criará uma.

NOOPTIMIZE Desativa a otimização Rushmore de COUNT. Para obter maiores informações,


consulte SET OPTIMIZE, e “Compreendendo a tecnologia Rushmore” na Ajuda ou o capítulo 17,
“Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

COUNT conta os registros dentro de um escopo de registros para os quais a condição FOR ou
WHILE seja verdadeira. Se SET TALK estiver ativo (ON), a contagem de registros é exibida.

Os registros marcados para exclusão serão incluídos na contagem caso SET DELETE esteja
desativado (OFF).

COUNT, exemplo do comando

O exemplo a seguir conta e exibe o número de clientes em Paris.

CLOSE 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 definições de cores atuais.

Sintaxe

CREATE COLOR SET NomeConjuntoCores

Argumentos

NomeConjuntoCores Especifica o nome do conjunto de cores a ser criado.

Comentários
Os conjuntos de cores não são aceitos no FoxPro para Macintosh; CREATE COLOR SET será
ignorado.

Cada par de cores em cada esquema de cores é salvo no conjunto de cores que você criou. O nome
de um conjunto de cores pode ter até 24 caracteres no Visual FoxPro (10 caracteres em versões
anteriores do FoxPro) e pode conter números e caracteres de sublinhado, mas não pode começar
com um número.

Uma vez criado um conjunto de cores, você poderá carregá-lo com SET COLOR SET.

Os conjuntos de cores são salvos no arquivo de recurso do Visual FoxPro. Se já existir um conjunto
de cores com o nome especificado, ele será sobrescrito.

Para obter maiores informações sobre esquemas de cores e pares de cores, consulte Visão Geral de
Cores.

CREATE DATABASE, comando

Cria e abre um banco de dados.

Sintaxe

CREATE DATABASE [NomeBancoDados | ?]

Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser criado.

Caso SAFETY esteja ativado (ON) e o nome do banco de dados especificado tenha o mesmo
caminho e o mesmo nome de um banco de dados existente, o Visual FoxPro exibirá uma caixa de
diálogo de aviso, solicitando a especificação de um novo caminho ou nome para o banco de dados.

? Exibe a caixa de diálogo Criar na qual você pode especificar o nome do banco de dados a ser
criado.

Comentários

Um arquivo de banco de dados tem uma extensão .DBC. Os arquivos de memo do banco de dados
associado têm uma extensão .DCT e os arquivos de índice associados têm uma extensão .DCX.

O banco de dados é aberto em modo exclusivo, independente da definição de SET EXCLUSIVE.


Como CREATE DATABASE abre o banco de dados após a sua criação, não é necessário emitir um
comando OPEN DATABASE subseqüente.
Caso CREATE DATABASE seja emitido sem nenhum de seus argumentos opcionais, a caixa de
diálogo Criar será exibida, permitindo que você especifique um nome para o banco de dados.

CREATE DATABASE, exemplo do comando

Este exemplo cria um banco de dados chamado people. Uma tabela denominada friends é criada e
automaticamente adicionada ao banco de dados. DISPLAY TABLES é utilizado para exibir as
tabelas no banco de dados e DISPLAY DATABASES é utilizado para exibir informações sobre as
tabelas no banco de dados.

CREATE DATABASE people


CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas do banco de dados
DISPLAY DATABASES && Exibe informações sobre as tabelas

CREATE FROM, comando

Cria uma tabela a partir de um arquivo construído com COPY STRUCTURE EXTENDED.

Sintaxe

CREATE
[NomeArquivo1 [DATABASE NomeBancoDados [NAME NomeLongoTabela]]]
FROM [NomeArquivo2]

Argumentos

NomeArquivo1 Especifica o nome da nova tabela a ser criada.

DATABASE NomeBancoDados Especifica um banco de dados em que a nova tabela será


adicionada.

NAME NomeLongoTabela Especifica um nome longo para a nova tabela. Os nomes longos
podem conter até 128 caracteres e podem ser utilizados em substituição aos nomes de arquivos
reduzidos no banco de dados.

NomeArquivo2 Especifica a tabela (criada com COPY STRUCTURE EXTENDED ou


manualmente) a partir da qual a nova tabela será criada.

Comentários

Esta variação de CREATE pressupõe que a tabela especificada em NomeArquivo2 tenha sido
criada com COPY STRUCTURE EXTENDED ou manualmente. Uma nova tabela,
NomeArquivo1, é criada com a estrutura descrita em NomeArquivo2. A tabela recém-criada torna-
se a tabela ativa.
Se você não incluir NomeArquivo1 ou NomeArquivo2 ou ambos, será exibida uma caixa de
diálogo, na qual você poderá especificar o arquivo a ser criado, o arquivo FROM ou ambos.

Observe que todos os registros em NomeArquivo2, incluindo aqueles que estão marcados para
exclusão, são utilizados para criar NomeArquivo1.

CREATE FROM, exemplo do comando

O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para a tabela
temp, pesquisa temp, cria uma tabela denominada backup a partir de temp e exibe a estrutura de
backup.

CLOSE 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 temporária contém 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 não seja especificada
uma extensão para o nome de arquivo, o Visual FoxPro atribuirá automaticamente a extensão
.MNX.
? Exibe a caixa de diálogo Criar, solicitando que você digite um nome para o menu que está sendo
criado.

NOWAIT Continua a execução do programa depois que o Criador de menus é aberto. Oprograma
não espera que o Criador de menus seja fechado, mas continua a execuçãona linha de programa
imediatamente após a linha que contém CREATE MENU NOWAIT.Caso você omita NOWAIT
quando CREATE MENU for emitido em um programa, oCriador de menus será aberto e a execução
do programa interrompida até que oCriador de menus seja fechado.

Se você emitir CREATE MENU na janela Comando e incluir NOWAIT, não será exibida a caixa
de diálogo Novo menu. Esta caixa de diálogo permite que você especifique o tipo de menu criado
(padrão ou de atalho).

SAVE Faz com que o Criador de menus permaneça aberto depois que outra janela éativada. Se
você omitir SAVE, o Criador de menus será fechado quando outra janela forativada. A inclusão de
SAVE não tem efeito quando o comando é emitido na janelaComando.

WINDOW NomeJanela1 Especifica uma janela cujas características são adotadas peloCriador de
menus. Por exemplo, se a janela for criada com a opção FLOAT de DEFINEWINDOW, o Criador
de menus poderá ser movido. Não é necessário que a janela estejaativa ou visível, mas ela deve
estar definida.

O Criador de menus possui um tamanho padrão que pode ser maior que a janela
cujascaracterísticas ele assume. Nesse caso, o Criador de menus ainda adquire ascaracterísticas da
janela na qual é posicionado. O canto superior esquerdo do Criador demenus é posicionado nas
mesmas coordenadas do canto superior esquerdo da janela ese estende além das bordas da janela.

IN [WINDOW] NomeJanela2 Especifica uma janela pai onde o Criador de menus éaberto. O
Criador de menus não adquire as características da janela pai e não pode sermovido para fora dela.
Caso a janela pai seja movida, o Criador de menus também serámovido.

A janela pai deve ser definida primeiramente com DEFINE WINDOW, e deve estar visívelpara
que se possa acessar o Criador de menus.

IN SCREEN Especifica que o Criador de menus seja explicitamente aberto na janelaprincipal do


Visual FoxPro, depois de ter sido posicionado em uma janela pai. O Criadorde menus é posicionado
em uma janela pai com a inclusão da cláusula IN WINDOW.

Comentários

A emissão de CREATE MENU sem argumentos adicionais abre o Criador de menus, noqual você
pode definir um sistema de menu. O nome MENU1 é atribuído temporariamente àtabela de
definição de menu. Ao sair do Criador de menus, você pode salvar a definição demenu com um
nome diferente.

Para obter maiores informações sobre como criar menus, consulte “Criando um sistema de menus”
e o capítulo 11, “Criando menus e barras de ferramentas”, no Guia do Desenvolvedor.
CREATE REPORT - Relatório Rápido, comando

Cria um relatório utilizando a linguagem de programação.

Sintaxe

CREATE REPORT NomeArquivo1 | ? FROM NomeArquivo2


[FORM | COLUMN] [FIELDS ListaCampos] [ALIAS]
[NOOVERWRITE] [WIDTH nColunas]

Argumentos

NomeArquivo1 Especifica o nome de arquivo do relatório. Caso não seja especificada uma
extensão para o nome de arquivo, o Visual FoxPro atribuirá automaticamente a extensão .FRX.

? Exibe a caixa de diálogo Criar, que solicita um nome para o relatório que está sendo criado.

FROM NomeArquivo2 Especifica o nome da tabela a partir da qual o relatório será criado. A
tabela não precisa estar aberta.

FORM Especifica que o relatório é criado com os campos e seus nomes organizados de cima para
baixo na faixa Detalhes.

COLUMN Especifica que o relatório seja criado com os campos organizados da esquerda para a
direita da página na faixa Detalhes. Os nomes dos campos são localizados na faixa Cabeçalho de
página. Caso você omita FORM e COLUMN, o relatório assume os padrões para o formato de
COLUMN.

FIELDS ListaCampos Especifica os campos da tabela que aparecerão no relatório. Separa os


campos em ListaCampos por vírgulas.

ALIAS Especifica que o alias da tabela é adicionado aos nomes dos campos no relatório.

NOOVERWRITE Especifica que um relatório existente não é sobrescrito. Caso já exista um


relatório com o nome especificado com NomeArquivo1, o relatório não será criado.

WIDTH nColunas Especifica a largura da página do relatório, em colunas.

Comentários

Este formato de CREATE REPORT cria um relatório rápido sem abrir o Criador de relatórios. O
relatório será criado como se você selecionar Relatório rápido no menuRelatório.

Outra forma de CREATE REPORT, discutida no tópico anterior, abre o Criador de relatórios e
permite criar um relatório de forma interativa.
Para obter outras informações sobre relatórios e etiquetas, consulte “Criando relatórios e etiquetas”
na seção “Utilizando o Visual FoxPro” e o capítulo 7, “Criando relatórios e etiquetas”, no Guia do
Usuário.

CREATE TRIGGER, comando

Cria um disparador de Exclusão, Inserção ou Atualização para uma tabela.

Sintaxe

CREATE TRIGGER ON NomeTabela


FOR DELETE | INSERT | UPDATE AS lExpressão

Argumentos

NomeTabela Especifica a tabela do banco de dados atual para a qual é criado um disparador.

FOR DELETE | INSERT | UPDATE Especifica o tipo de disparador criado pelo Visual FoxPro.

Caso já exista um disparador do tipo especificado e SET SAFETY esteja ativado (ON), o Visual
FoxPro perguntará se você gostaria de sobrescrever o disparador existente. Caso SET SAFETY
esteja desativado (OFF), o disparador existente será automaticamente sobrescrito.

AS lExpressão Especifica a expressão lógica avaliada quando o disparador ocorre. lExpressão pode
ser uma função definida pelo usuário ou um procedimento armazenado que retorna um valor lógico.
Procedimentos armazenados são criados para uma tabela com MODIFY PROCEDURE.

Uma função definida pelo usuário ou um procedimento armazenado pode utilizar AERROR( ) para
determinar o nome da tabela para a qual o disparador ocorreu e o tipo de disparador.

Caso lExpressão resulte em verdadeiro (.T.), o comando ou evento que provocou a ocorrência do
disparador será executado.

Caso lExpressão resulte em falso (.F.), o comando ou evento, que provocou a ocorrência do
disparador, não será executado. Caso haja um procedimento ON ERROR em vigor, o procedimento
ON ERROR será executado em vez do comando ou evento. Caso não haja um procedimento ON
ERROR em vigor, o comando ou evento não será executado e o Visual FoxPro irá gerar uma
mensagem de erro.

Comentários

Utilize CREATE TRIGGER para interceptar eventos que fazem com que os registros de uma tabela
sejam excluídos, adicionados ou alterados. Os disparadores de Exclusão, Inserção ou Atualização
podem ser criados somente para uma tabela que tenha sido adicionada a um banco de dados. Utilize
CREATE DATABASE para criar um banco de dados e ADD TABLE para adicionar uma tabela a
um banco de dados.

As listas abaixo descrevem os eventos que provocam a ocorrência de um disparador de Exclusão,


Inserção ou Atualização.

Disparador de exclusão

· DELETE é emitido.
· Um registro é marcado para exclusão a partir do menu Tabela em uma janela Pesquisar ou
em uma janela Editar.
Disparador de inserção

· APPEND FROM é emitido.


· APPEND FROM ARRAY é emitido.
· APPEND BLANK é emitido.
· Um registro é incluído a partir do menu Tabela em uma janela Pesquisar ou Editar.
· IMPORT é emitido.
· INSERT - SQL é emitido.
· RECALL é emitido.
· Um registro é reintegrado a partir do menu Tabela em uma janela Pesquisar ou Editar.

Disparador de atualização

· GATHER é emitido.
· REPLACE é emitido.
· REPLACE FROM ARRAY é emitido.
· UPDATE – SQL é emitido.
· outro evento que provoque uma modificação em um registro, como acontece a um
Formulário alterar o conteúdo de um campo.

As regras a seguir aplicam-se a disparadores criados com CREATE TRIGGER:

· INSERT não pode ser emitido para uma tabela com um disparador. No entanto, INSERT -
SQL pode ser utilizado.
· A emissão de PACK não provoca a ocorrência de nenhum disparador.
· A emissão de ZAP não provoca a ocorrência de um disparador de Exclusão.
· Não ocorrerá nenhum disparador se você atualizar um registro marcado para exclusão.
· Um disparador poderá não ocorrer imediatamente, dependendo do modo de utilização do
buffer atual:

CREATE TRIGGER, exemplo de comando

O exemplo a seguir cria um disparador de Atualização que impede que valores acima de 50 sejam
digitados no campo maxordamt da tabela customer. Uma mensagem de erro é gerada quando o
primeiro comando REPLACE é executado, pois o valor do campo maxordamt
é maior que 50. O segundo comando REPLACE não gera erro porque o valor do campo
maxordamt é menor ou igual a 50.

CLOSE DATABASES

OPEN DATABASE SYS(2004)+"samples\data\testdata"


USE customer && Abre a tabela customer

* Define o disparador no campo maxordamt para falhar com valores <= 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 diálogo Criar, solicitando que você digite um nome para a tabela que está sendo
criada.

Comentários

No Visual FoxPro, se houver um banco de dados aberto, quando uma tabela for criada, a tabela será
automaticamente adicionada ao banco de dados.
No Visual FoxPro, FoxPro para Windows e FoxPro para MS-DOS, não é possível criar uma tabela
com o nome de um dispositivo do MS-DOS, como CON, NUL, PRN e COM1. Você deve evitar
utilizar hífens em um nome de tabela, pois os nomes de tabela hifenizados não aparecem na janela
Visualizar e podem ser confundidos com o indicador de alias (->).

Uma tabela é criada definindo-se o nome, o tipo e o tamanho de cada campo. Depois que a estrutura
da tabela estiver criada, você poderá adicionar os registros. Para obter maiores informações sobre
tabelas, consulte o capítulo 2, “Criando tabelas e índices”, no Guia do Usuário.

CTOBIN( ), função

Converte uma representação de caractere binário para um valor inteiro.

Sintaxe

CTOBIN(cExpressão)

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica a representação de caractere binário a ser convertida.

Comentários

Utilize CTOBIN( ) para converter uma representação de caractere binário criada com BINTOC( )
de volta ao seu valor inteiro.

CTOD( ), função

Converte uma expressão de caracteres em uma expressão de data.

Sintaxe

CTOD(cExpressão)

Tipos de retorno

Data
Argumentos

cExpressão Especifica uma expressão de caracteres para a qual CTOD( ) retorna um valor do tipo
Data. cExpressão deve resultar em uma data válida de 1/1/100 a 12/31/9999.

O formato padrão para cExpressão é mm/dd/aa. É possível utilizar SET DATE e SET CENTURY
para alterar o formato padrão. Se o século não for especificado quando uma data for digitada (como
na expressão de caracteres 1/1/95), será adotado o século XX.

Comentários

CTOD( ), a função de conversão de caractere para data, retorna um valor do tipo Data a partir de
uma expressão de caracteres.

CTOD( ), exemplo da função

STORE '7/4/1776' TO gcthe_4th

CLEAR
? CTOD(gcthe_4th)
STORE DATE( ) TO gdtoday
STORE CTOD('12/25/95') TO gdchristmas
STORE STR(gdchristmas - gdtoday, 4) TO gddays_left
? 'Faltam', gddays_left, 'dias para o Natal'

CTOT( ), função

Retorna um valor de DataHora a partir de uma expressão de caracteres.

Sintaxe

CTOT(cExpressãoCaracteres)

Tipos de retorno

DataHora

Argumentos

cExpressãoCaracteres Especifica uma expressão de caracteres a partir da qual um valor de


DataHora é retornado. O formato adequado para cExpressãoCaracteres é determinado pelas
definições atuais de SET DATE, SET HOURS e SET MARK. cExpressãoCaracteres tem que
retornar um valor de DataHora reconhecível, caso contrário o Visual FoxPro irá gerar um erro.

A seguir são apresentados exemplos de expressões de caracteres válidas:


02/16/95 2:00: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 cExpressãoCaracteres, o
Visual FoxPro adicionará automaticamente a hora padrão de meia-noite (12:00:00 A.M.) ou a data
padrão de 12/30/1899 à cExpressãoCaracteres.

É possível incluir o século em cExpressãoCaracteres, mas ele somente será retornado se SET
CENTURY estiver ativado (ON). Caso não seja incluído um século, será adotado o século XX.

CTOT( ), exemplo da função

O exemplo a seguir utiliza CTOT( ) para converter uma seqüência de caracteres para um valor de
DataHora. Observe que CTOT( ) acrescenta automaticamente a hora de meia-noite (12:00:00 A.M.)
à seqüência de caracteres.

? BETWEEN(CTOT('02/16/95'), {02/15/95 11:00pm}, {02/16/95 1:00am})


? CTOT('02/16/95')

CURDIR( ), Função

Retorna o diretório atual.

Sintaxe

CURDIR([cExpressão])

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a unidade de disco ou o volume para o qual CURDIR( ) retorna o diretório
ou pasta atual. Caso você omita cExpressão, será adotado o volume ou a unidade de disco padrão
atual. A seqüência vazia será retornada se a unidade ou volume especificado em cExpressão não
existir.
Comentários

CURDIR( ) retorna, como seqüência de caracteres, o diretório atual do MS-DOS em uma unidade
especificada.

CURDIR( ), exemplo de Função

O exemplo a seguir armazena o diretório atual em uma variável, define a padrão para o diretório no
qual o Visual FoxPro foi criado, exibe o novo diretório, retorna o padrão para o diretório original e
exibe o diretório original.

CLEAR
? 'Diretório atual: ', CURDIR( )
gcOldDir = SET('DEFAULT') + SYS(2003)
SET DEFAULT TO (HOME( ))
? 'Diretório do Visual FoxPro: ', CURDIR( )
SET DEFAULT TO (gcOldDir)
? 'Diretório atual: ', CURDIR( )

DATE( ), função

Retorna a data do sistema atual, que é controlada pelo sistema operacional.

Sintaxe

DATE( )

Tipos de Retorno

Data

Comentários

Nenhum comando ou função do Visual FoxPro pode alterar diretamente a data do sistema.

O formato da seqüência de caracteres retornado por DATE( ) pode ser alterado com SET
CENTURY, SET DATE e SET MARK TO.

DATE( ),exemplo da função

O exemplo a seguir exibe a data do sistema atual com e sem o século.

CLEAR
SET CENTURY OFF
? DATE( ) && Exibe a data de hoje sem o século
SET CENTURY ON
? DATE( ) && Exibe a data de hoje com o século
DATETIME( ), função

Retorna a data e a hora atuais como um valor de DataHora.

Sintaxe

DATETIME( )

Tipos de Retorno

DataHora

Comentários

O formato do valor de DataHora retornado por DATETIME( ) depende das definições atuais de
SET DATE, SET MARK, SET CENTURY, SET HOURS e SET SECONDS. Depende também das
definições selecionadas no Painel de controle do sistema operacional.

DATETIME( ), exemplo da função

Este exemplo armazena a data e hora para Ano Novo em uma variável denominada tNewyear, e
armazena a data e hora atual em uma variável denominada tToday. O número de segundos entre a
data e hora atual e Ano Novo será então exibido.

tNewyear = {01/01/96 12:00am} && Ano Novo 1996


tToday = DATETIME( )
nSecondstonewyear = tNewyear - tToday
CLEAR
? "There are " + ALLTRIM (STR(nSecondstonewyear)) ;
+ " seconds to the New Year."

DAY( ), função

Retorna o número do dia do mês para uma dada expressão de data ou de data e hora.

Sintaxe

DAY(dExpressão | tExpressão)
Tipos de Retorno

Numérico

Argumentos

dExpressão Especifica a data da qual DAY( ) retorna um dia do mês. dExpressão pode ser um
literal de data, uma variável de memória do tipo Data, um elemento de matriz ou um campo de data.

tExpressão Especifica uma data ou hora da qual DAY( ) retorna um dia do mês. dExpressão pode
ser um literal de data e hora, uma variável de memória do tipo DataHora, um elemento de matriz ou
um campo de data e hora.

Comentários

DAY( ) retorna um número de 1 a 31.

DAY( ), exemplo da função

STORE {03/05/95} TO gdBDate

CLEAR
? CDOW(gdBDate) && Exibe Domingo
? DAY(gdBDate) && Exibe 5
? 'That date is ', CMONTH(gdBDate),STR(DAY(gdBDate),2)

DBC( ), função

Retorna o nome e o caminho do banco de dados atual.

Sintaxe

DBC( )

Tipos de Retorno

Caractere

Comentários

DBC( ) retornará a seqüência vazia caso não haja nenhum banco de dados atual.

Utilize SET DATABASE para especificar o banco de dados atual.


DBC( ), exemplo da função

O exemplo a seguir abre o banco de dados testdata e utiliza DBC( ) para exibir informações sobre o
banco de dados.

CLOSE DATABASES
OPEN DATABASE (SYS(2004) + "samples\data\testdata") && Abre o DBC.

CLEAR
? DBC( ) && Exibe o caminho e o nome do banco de dados

DBF( ), função

Retorna o nome de uma tabela aberta em uma Área de trabalho especificada ou um nome de tabela
de um alias de tabela.

Sintaxe

DBF([cAliasTabela | nÁreaTrabalho])

Tipos de Retorno

Caractere

Argumentos

cAliasTabela Especifica o alias de tabela.

nÁreaTrabalho Especifica o número da Área de trabalho.

Se você omitir cAliasTabela e nÁreaTrabalho, DBF( ) retornará o nome da tabela aberta na Área de
trabalho atual. DBF( ) retornará uma seqüência vazia caso não esteja aberta uma tabela na Área de
trabalho especificada. Caso uma tabela não tenha o alias especificado com cAliasTabela, o Visual
FoxPro irá gerar uma mensagem de erro.

Para obter informações sobre como criar um alias para uma tabela, consulte USE.

Comentários

Quando SET FULLPATH está ativado (ON), DBF( ) retorna o caminho da tabela com o nome da
tabela. Quando SET FULLPATH está desativado (OFF), DBF( ) retorna a unidade de disco em que
a tabela está residente com o nome da tabela.

DBF( ), exemplo da função


O exemplo abaixo retorna o nome de uma tabela de sua Área de trabalho e seu alias e retorna a
seqüência vazia após o fechamento de todas as tabelas.

CLOSE 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 seqüência vazia

DBUSED( ), função

Retorna verdadeiro (.T.) se o banco de dados especificado estiver aberto.

Sintaxe

DBUSED(cNomeBancoDados)

Tipos de retorno

Lógico

Argumentos

cNomeBancoDados Especifica o nome do banco de dados para o qual DBUSED( ) retorna um


valor lógico que indica se o banco de dados está ou não aberto.

Comentários

A função DBUSED( ) retornará verdadeiro (.T.) se o banco de dados especificado estiver aberto;
caso contrário, retornará falso (.F.).

DBUSED( ), exemplo da função

O exemplo a seguir abre o banco de dados TESTDATA e, em seguida, utiliza DBUSED( ) para
determinar se o banco de dados TESTDATA e um banco de dados definido TEST estão abertos.

CLOSE 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 usuário e remove-a da tela, mas não remove da memória
a definição da barra de menus.

Sintaxe

DEACTIVATE MENU NomeMenu1 [, NomeMenu2 ...] | ALL

Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica os nomes das barras de menus a serem desativadas. É
possível desativar um conjunto de barras de menus incluindo uma lista de nomes de barras de
menus separados por vírgulas.

ALL Desativa todos os menus ativos.

Comentários

DEACTIVATE MENU remove uma barra de menus ativa ou um conjunto de barras de menus da
janela principal do Visual FoxPro ou de uma janela definida pelo usuário sem remover a definição
da barra de menus da memória. É possível ativar novamente uma barra de menus utilizando
ACTIVATE MENU e o nome da barra de menus.

Dica Ao incluir a barra de menus do sistema (_MSYSMENU) em um aplicativo, não é necessário


defini-la, ativá-la ou desativá-la. Em vez disso, emita SET SYSMENU AUTOMATIC.

Para liberar uma barra de menus específica ou um conjunto de barras de menus da memória, utilize
RELEASE MENUS. Você pode liberar todas as barras de menus da memória com CLEAR
MENUS ou CLEAR ALL.

O controle do programa será retornado à linha do programa imediatamente após à linha que ativou a
barra de menus, a menos que DEFINE MENU BAR seja utilizado para criar a barra de menus ou
que ACTIVATE MENU NOWAIT seja utilizado para ativá-la.

DEACTIVATE MENU, exemplo do comando

O exemplo a seguir utiliza DEACTIVATE MENU para desativar um menu e removê-lo da tela. A
barra de menus do sistema atual é salva na memória com SET SYSMENU SAVE e todos os títulos
de menu do sistema são removidos com SET SYSMENU TO.
Dois títulos de menu são criados com DEFINE PAD, e DEFINE POPUP cria um menu para cada
título de menu. DEFINE BAR cria itens de menu em cada um dos menus. Quando um título de
menu é selecionado, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente.
ACTIVATE MENU exibe e ativa a barra de menus.

Quando um item de um menu é selecionado, é executado o procedimento CHOICE. CHOICE exibe


o nome do item selecionado e o nome do menu que contém o item. O controle do programa
continua na linha após ACTIVATE MENU.
Finalmente, o menu é desativado e removido da tela e, em seguida, é liberado da memória com
RELEASE MENUS EXTENDED.

*** Nomeia este programa como DEACMENU.PRG ***


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 '\<Conversões' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Informações \<do cartão' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP 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 cobranças' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\<w usuários' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças'
ON SELECTION POPUP cardinfo;

DO choice IN deacmenu WITH PROMPT( ), POPUP( )


ACTIVATE MENU 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 usuário ou as janelas do sistema do


Visual FoxPro e as remove da tela, mas não da memória.

Sintaxe

DEACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica uma ou mais janelas a serem desativadas. É possível
especificar janelas do sistema do Visual FoxPro como a janela Comando ou a janela de pesquisa.

ALL Desativa todas as janelas ativas.

Comentários

Mais de uma janela definida pelo usuário pode ser colocada na janela principal do Visual FoxPro ao
mesmo tempo, mas a saída é direcionada apenas à janela definida pelo usuário mais recentemente
ativada. Quando mais de uma janela definida pelo usuário for exibida, desativar a janela de saída
atual definida pelo usuário limpará o conteúdo da janela, removerá a janela da tela e envia a saída
subseqüente à janela definida pelo usuário anteriormente ativada. Se não houver janela de saída, a
saída será direcionada para a janela principal do Visual FoxPro.

Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas tanto da tela quanto
da memória.

Para desativar uma janela do sistema e/ou uma barra de ferramentas (no Visual FoxPro), inclua o
nome completo da janela ou barra de ferramentas do sistema entre aspas. Por exemplo, para
desativar a Barra de ferramentas controles de relatório no Visual FoxPro, emita o comando a seguir:
DEACTIVATE WINDOW "Controles de relatório"

DEACTIVATE WINDOW, exemplo do comando

No exemplo a seguir, uma janela denominada wOutput1 é definida e ativada. Depois que um
registro da tabela customer é exibido, o programa espera que o usuário pressione uma tecla e, em
seguida, desativa a janela.

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

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;
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])] ...

Comentários

DECLARE é idêntico a DIMENSION em termos de operação e sintaxe. Para obter maiores


informações, consulte DIMENSION.

DEFINE MENU, comando

Cria uma barra de menus.

Sintaxe
DEFINE MENU NomeBarraMenus
[BAR [AT LINE nLinha]]
[IN [WINDOW] NomeJanela | IN SCREEN]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[KEY RótuloTecla]
[MARK cCaractereMarca]
[MESSAGE cTextoMensagem]
[NOMARGIN]
[COLOR SCHEME nNúmeroEsquema
| COLOR ListaParesCores]

Argumentos

NomeBarraMenus Especifica o nome da barra de menus a ser criada. O nome da barra de menus
permite que você faça referência à barra de menus em outros comandos e funções.

BAR [AT LINE nLinha] Cria uma barra de menus que age como a barra de menus do sistema do
Visual FoxPro. A barra de menus possui as características a seguir:

· A barra de menus é desenhada horizontalmente, com uma linha de altura, de um lado a


outro da janela principal do Visual FoxPro ou da janela definida pelo usuário na qual está localizada
· A colocação dos títulos de menus na barra de menus é gerenciada automaticamente.
· Se o tamanho ou número de títulos de menus definidos ultrapassar o tamanho da tela ou
janela na qual a barra de menus está localizada, a barra de menus rola.

O número da linha é especificado com nLinha.

IN [WINDOW] NomeJanela Coloca a barra de menus em uma janela definida pelo usuário.
Especifique o nome da janela na qual você deseja colocar a barra de menus com NomeJanela. Se
você omitir IN WINDOW, a barra de menus será colocada na janela principal do Visual FoxPro
como padrão, a menos que haja uma janela ativa definida pelo usuário. Nesse caso, a barra de
menus será colocada na janela ativa.

IN SCREEN Coloca a barra de menus explicitamente na janela principal do Visual FoxPro.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padrão para todos os títulos de
menus da barra de menus. Você pode substituir a fonte padrão de um título de menu individual
incluindo a cláusula FONT em DEFINE PAD.

cNomeFonte especifica o nome da fonte e cTamanhoFonte o tamanho em pontos. Por exemplo, o


comando a seguir cria uma barra de menus com títulos de menus na fonte Courier de 12 pontos:

DEFINE MENU mnuExample FONT 'Courier', 12


Se a fonte especificada não estiver disponível, uma fonte similar com características de fontes
similares irá substituí-la. Se você incluir a cláusula FONT, mas omitir o tamanho em pontos de
cTamanhoFonte, será utilizada uma fonte de 10 pontos.

A cláusula FONT será ignorada para títulos de menus acrescentados ao menu do sistema do Visual
FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

STYLE cEstiloFonte Especifica um estilo de fonte padrão para todos os títulos de menus da barra
de menus. Você pode substituir o estilo padrão de títulos de menu individuais incluindo a cláusula
STYLE em DEFINE PAD.

Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver disponível, será
utilizado o estilo de fonte Normal.

Os estilos de fonte que podem ser especificados com cEstiloFonte são os seguintes:

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itálico:

DEFINE MENU mnuExample STYLE 'BI'


A cláusula STYLE será ignorada para títulos de menu adicionados ao menu _MSYSMENU do
sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

KEY RótuloTecla Especifica a tecla ou combinação de teclas utilizada para ativar a barra de
menus. Para obter uma lista de teclas e combinações de teclas disponíveis e seus respectivos nomes
de rótulos de tecla, consulte ” ON KEY LABEL”.

Incluir a cláusula KEY é equivalente a emitir o comando a seguir:

ON KEY LABEL RótuloTecla ACTIVATE MENU NomeMenu

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá
prioridade e a barra de menus não poderá ser ativada com a tecla ou combinação de teclas
especificada.

MARK cCaractereMarca Especifica um caractere de marca exibido à esquerda dos títulos de


menus na barra de menus. MARK pode ser incluído para alterar o caractere de marca padrão por um
caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere,
somente o primeiro caractere será utilizado como o caractere de marca.

O caractere de marca padrão é uma verificação. A cláusula MARK é ignorada e o caractere de


marca padrão será utilizada se a barra de menus for o menu do sistema do Visual FoxPro. Além
disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela principal do Visual
FoxPro ou da janela definida pelo usuário na qual está localizada a barra de menus.

Observação A especificação de um caractere de marca não marca os nomes de menus em uma barra
de menus. Utilize SET MARK OF para marcar os títulos de menus em uma barra de menus com o
caractere especificado.

Os caracteres de marca especificados com DEFINE PAD têm prioridade sobre os caracteres de
marca especificados com a cláusula MARK em DEFINE MENU. SET MARK OF é utilizado para
ativar ou desativar caracteres de marca, podendo também ser utilizado para especificar um caractere
de marca para um item individual ou todos os itens de menu.

MESSAGE cTextoMensagem Exibe uma mensagem quando você seleciona um título de menu. A
mensagem é colocada na barra de status gráfica. Se a barra de status for desativada com SET
STATUS BAR OFF, a mensagem será centralizada na última linha da janela principal do Visual
FoxPro.

NOMARGIN Como padrão, remove os espaços colocados à esquerda e à direita de cada nome de
menu.

COLOR SCHEME nNúmeroEsquema Especifica as cores para uma barra de menus individual.

COLOR ListaParesCores Especifica as cores para uma barra de menus individual. Por padrão, as
cores dos itens de menu são determinadas pelo esquema de cores 2 do conjunto atual de cores.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de
cores” .

Comentários

Utilize DEFINE MENU para criar a barra de menus para o sistema de menus de seu aplicativo.
Utilize DEFINE PAD para criar cada um dos títulos de menus (pads) na barra de menus. Utilize
ON PAD ... ACTIVATE para especificar o menu que será exibido embaixo de cada título de menu.
Utilize DEFINE POPUP para criar os menus embaixo de cada título de menu. Utilize ACTIVATE
MENU para ativar todo o sistema de menus.

Se você utilizar o Criador de menus para criar seu menu, talvez não tenha que utilizar nenhum
desses comandos. O Criador de menus cria automaticamente os comandos para seu menu. Ele
utiliza o menu do sistema do Visual FoxPro, que você pode modificar adicionando seus próprios
itens de menu.

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de
menus”, no capítulo 11, “Criando menus e barras de ferramentas”, no Guia do Desenvolvedor.
DEFINE MENU, exemplo do comando

O exemplo a seguir utiliza DEFINE MENU para criar um sistema de menus definido pelo usuário.
A barra de menus do sistema atual é salva para memória com SET SYSMENU SAVE e, em
seguida, os títulos de menu do sistema são removidos com SET SYSMENU TO.
DEFINE MENU cria a barra de menus e dois títulos de menu são criados com DEFINE PAD.
DEFINE POPUP cria um menu para cada título de menu. DEFINE BAR cria itens em cada um dos
menus. Quando um título de menu é escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o
menu correspondente. ACTIVATE MENU exibe e ativa a barra de menus.

Quando um item é escolhido a partir de um menu, o procedimento CHOICE é executado. CHOICE


exibe o nome do item escolhido e o nome do menu que contém o item.

*** 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 '\<Conversões' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT '\<Informações do cartão' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP 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\<branças' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\< Usuários' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças '
ON SELECTION POPUP cardinfo;

DO choice IN defimenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU 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 título de menu (pad) em uma barra de menus definida pelo usuário ou na barra de menus
do sistema do Visual FoxPro.

Sintaxe

DEFINE PAD TítuloMenu1 OF NomeBarraMenus PROMPT cTextoTítuloMenu


[AT nLinha, nColuna]
[BEFORE NomeMenu2 | AFTER NomeMenu3]
[NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[KEY RótuloTecla [, cTextoTecla]]
[MARK cCaractereMarca]
[SKIP [FOR lExpressão]]
[MESSAGE cTextoMensagem]
[COLOR SCHEME nNúmeroEsquema
| COLOR ListaParesCores]

Argumentos

TítuloMenu1 Especifica o título de menu a ser criado. O título de menu permite fazer referência ao
título de menu de outros comandos e funções.

OF NomeBarraMenus Especifica o nome da barra de menus na qual o título de menu está


localizado.

PROMPT cTextoTítuloMenu Especifica o texto exibido no título de menu.

Você pode criar uma tecla de acesso para o título de menu, colocando uma barra invertida e um
sinal de menor que (\<) antes do caractere que você gostaria que fosse a tecla de acesso. No
exemplo a seguir, o usuário pode pressionar a tecla F para escolher Faturas no menu Receber e a
tecla C para escolher Consulta no mesmo menu:

DEFINE MENU mnuReceive


DEFINE PAD padInvoice OF mnureceive PROMPT "\<Faturas"
DEFINE PAD padInquire OF mnureceive PROMPT "\<Estoque"
ACTIVATE MENU mnuReceive

AT nLinha, nColuna Especifica onde o título de menu é exibido na barra de menus. nLinha
, nColuna são as coordenadas do lado esquerdo do título de menu na janela principal do Visual
FoxPro ou em uma janela definida pelo usuário.

Se você omitir a cláusula AT, o lado esquerdo do primeiro título de menu será colocado na linha 0
da janela principal do Visual FoxPro ou da janela definida pelo usuário. O próximo título de menu
será colocado à direita do primeiro nome na linha 0 e assim por diante.

Observação Você não pode incluir AT para especificar uma localização para os títulos de menus
nas barras de menus criadas com a cláusula BAR em DEFINE MENU.

BEFORE NomeMenu2 Coloca o título de menu na barra de menus à esquerda do título de menu
especificado com NomeMenu2.A ordem em que os títulos de menus são acessados pelo teclado
corresponde à localização dos títulos de menus na barra de menus.
AFTER NomeMenu3 Coloca o título de menu na barra de menus à direita do título de menu
especificado com NomeMenu3. A ordem em que os títulos de menus são acessados a partir do
teclado corresponde à localização dos títulos de menus na barra de menus.

Você deve criar primeiro o título de menu especificado na cláusula BEFORE ou AFTER. Se você
não criá-lo primeiro, a colocação do título de menu na barra de menus será determinada pela ordem
na qual ele é criado ou pela localização especificada com a cláusula AT.

Para as barras de menus criadas sem BAR, a ordem em que os títulos de menus são acessados pelo
teclado é determinada por BEFORE ou AFTER. A localização de um título de menu é determinada
pela localização especificada com a cláusula AT.

Execute os dois exemplos a seguir e observe as diferenças na colocação do título de menu e na


ordem de acesso quando os títulos de menus são definidos com e sem a cláusula AT:

*** Exemplo de Programa 1 sem ATs ***


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 localização do


título de menu na barra de menus do
Visual FoxPro quando ocorre a edição visual de OLE.

NEGOTIATE LEFT especifica que o título de menu é colocado à esquerda do Grupo de arquivos.

NEGOTIATE MIDDLE especifica que o título de menu é colocado à esquerda do Grupo de


recipientes, após o menu Editar.

NEGOTIATE RIGHT especifica que o título de menu é colocado à esquerda do Grupo de janelas.

Se você omitir a cláusula NEGOTIATE, o título de menu será removido da barra de menus quando
ocorre a edição visual de OLE.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o título de menu. cNomeFonte
especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o comando a
seguir cria um título de menu na fonte Courier de 12 pontos:

DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12

Se a fonte especificada não estiver disponível, uma fonte similar com características de fonte
similares irá substituí-la. Se você incluir a cláusula FONT mas omitir o tamanho em pontos de
cTamanhoFonte, será utilizada uma fonte de 10 pontos.

A cláusula FONT será ignorada para títulos de menus acrescentados ao menu do sistema do Visual
FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

STYLE cEstiloFonte Especifica um estilo de fonte para o item de menu. Se você omitir a cláusula
STYLE ou se o estilo de fonte não estiver disponível, o estilo de fonte Normal será utilizado.

Os estilos de fonte que podem ser especificados com cEstiloFonte são:

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itálico:

DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'

A cláusula STYLE será ignorada para os títulos de menus adicionados ao menu _MSYSMENU do
sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

KEY RótuloTecla [, cTextoTecla] Especifica uma tecla de acesso ou combinação de teclas para
um título de menu. Para obter uma lista de teclas e combinações de teclas disponíveis e seus
respectivos nomes de rótulos de teclas, consulte ” ON KEY LABEL”.

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá
prioridade e o item de menu não poderá ser escolhido com a tecla ou combinação de teclas
especificada.

O rótulo de tecla é colocado à direita dos títulos de menus nas barras de menus criadas sem a
cláusula BAR. O rótulo de tecla não é exibido nas barras de menus criadas com a cláusula BAR ou
para os títulos de menus da barra de menus do sistema do Visual FoxPro.

Inclua cTextoTecla para substituir o rótulo de tecla pelo seu próprio texto. Você pode utilizar
qualquer caractere no parâmetro cTextoTecla; por exemplo, o texto “^B” pode ser utilizado para
indicar um rótulo de tecla de CTRL+B. A inclusão de KEY CTRL+B coloca o texto CTRL+B no
menu, à direita do nome do título de menu. Ao especificar KEY CTRL+B, “^B”, o texto ^+B será
colocado no menu. Você pode suprimir a exibição de um rótulo de tecla, especificando a seqüência
vazia para cTextoTecla.

MARK cCaractereMarca Especifica um caractere de marca exibido à esquerda do título de menu.


MARK pode ser incluído para alterar o caractere de marca padrão por um caractere especificado
com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro
caractere será utilizado como o caractere de marca.

O caractere de marca padrão é uma verificação. A cláusula MARK será ignorada e o caractere de
marca padrão será utilizado se a barra de menus que contém o título de menu for o menu do sistema
do Visual FoxPro. Além disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela
principal do Visual FoxPro ou da janela definida pelo usuário na qual está localizada a barra de
menus que contém o título de menu.

Os caracteres de marca especificados com DEFINE PAD têm prioridade sobre os caracteres de
marca especificados com a cláusula MARK em DEFINE MENU. SET MARK OF é utilizado para
ativar ou desativar as marcas, podendo ser utilizado também para especificar um caractere de marca
para um título de menu individual ou para todos os títulos de menus.

Observação A especificação de um caractere de marca não marca o título de menu. Utilize SET
MARK OF para marcar um título de menu com o caractere especificado.
SKIP [FOR lExpressão] Especifica uma condição por meio da qual, se lExpressão resultar em
verdadeiro (.T.), o título de menu será desativado, impedindo que o formulário do usuário o escolha.
Se lExpressão resultar em falso (.F.), o título de menu será ativado

Você pode também desativar um item de menu, colocando uma barra invertida (\) antes do texto do
título de menu. Por exemplo:

DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'

O título de menu padPageAccts é exibido escurecido, indicando que não pode ser escolhido.

Um título de menu desativado pode ser exibido, mas não selecionado. Entretanto, uma mensagem
especificada com a cláusula MESSAGE é exibida.

MESSAGE cTextoMensagem Exibe uma mensagem quando você seleciona um título de menu. A
mensagem é colocada na barra de status gráfica. Se a barra de status for desativada com SET
STATUS BAR OFF, a mensagem será centralizada na última linha da janela principal do Visual
FoxPro.

COLOR SCHEME nNúmeroEsquema Especifica as cores para um título de menu individual,


substituindo as cores padrão ou as cores especificadas com DEFINE MENU.

COLOR ListaParesCores Especifica as cores para um título de menu individual, substituindo as


cores padrão ou as cores especificadas com DEFINE MENU.

Como padrão, as cores dos títulos de menus nas barras de menus são determinadas pelo esquema
de cores 2 do conjunto de cores atual.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de
cores”.

Comentários

Você deve criar cada título de menu localizado na barra de menus com seu próprio comando
DEFINE PAD. A barra de menus deve ser definida com DEFINE MENU antes que se possam
colocar títulos de menus e você deve incluir o nome da barra de menus em DEFINE PAD.

Se você utilizar o Criador de menus para criar seu menu, talvez não precise utilizar esses comandos.
O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do
sistema do Visual FoxPro, que você pode modificar adicionando seus próprios itens de menu. Para
obter maiores informações sobre a criação de menus, consulte “Criando um sistema de menus” no
capítulo 11, “Criando menus e barras de ferramentas,” no Guia do Desenvolvedor.

DEFINE PAD, exemplo do comando


O exemplo a seguir utiliza DEFINE PAD para colocar os títulos de menu na barra de menus do
sistema do Visual FoxPro. A barra de menus do sistema atual é salva para memória com SET
SYSMENU SAVE e, em seguida, os títulos de menu do sistema são removidos com SET
SYSMENU TO.
Muitos títulos de menu do sistema são criados com DEFINE PAD. Quando um título de menu é
escolhido, o procedimento CHOICE é executado. CHOICE exibe o nome do título de menu
escolhido e o nome da barra de menus e ativa e desativa o caractere de marca de título de menu. Se
o título de menu Sair é escolhido, o menu do sistema original do Visual FoxPro é restaurado.

*** Nomeie este programa como DEFINPAD.PRG ***


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\<latórios' COLOR SCHEME 3 ;
KEY ALT+L, ''
DEFINE PAD exitpad OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN definpad WITH PAD( ), MENU( )
PROCEDURE choice

PARAMETER mpad, 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 RótuloTecla]
[MARGIN]
[MARK cCaractereMarca]
[MESSAGE cTextoMensagem]
[MOVER]
[MULTISELECT]
[PROMPT FIELD NomeCampo | PROMPT FILES [LIKE EstruturaArquivo]
| PROMPT STRUCTURE]
[RELATIVE]
[SCROLL]
[SHORTCUT]
[TITLE cTextoTítuloMenu]
[COLOR SCHEME nNúmeroEsquema
| COLOR ListaParesCores]

Argumentos

NomeMenu Especifica o nome do menu a ser criado.

FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica onde o menu é colocado.


nLinha1, nColuna1 especifica coordenadas para o canto superior esquerdo do menu. Se você omitir
a cláusula FROM, o Visual FoxPro colocará o canto superior esquerdo do menu na primeira linha e
coluna da janela principal do Visual FoxPro ou de uma janela definida pelo usuário.

Para criar um menu com um tamanho específico, você pode também incluir TO nLinha2, nColuna2
para especificar a localização do canto inferior direito do menu. Se você incluir FROM nLinha1,
nColuna1 e omitir TO nLinha2, nColuna2, o Visual FoxPro dimensionará automaticamente o menu.
O menu tem a largura do item de menu mais longo contido nele (se os itens forem criados com
DEFINE BAR) e a extensão necessária para exibir todos os itens de menu. O comprimento do menu
é limitado pelo tamanho da janela principal do Visual FoxPro ou da janela definida pelo usuário na
qual o menu está localizado. Se o menu não for grande o suficiente para conter todos os itens de
menu, será exibida uma barra de rolagem para que você possa percorrer os itens de menu.
IN [WINDOW] NomeJanela Coloca o menu em uma janela definida pelo usuário especificada
com NomeJanela. Se você omitir essa cláusula, o menu será colocado na janela principal do Visual
FoxPro como padrão a menos que haja uma janela ativa definida pelo usuário. Se houver uma
janela ativa definida pelo usuário, o menu será colocado na janela ativa.

IN SCREEN Coloca o menu explicitamente na janela principal do Visual FoxPro.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padrão para o menu. Você pode
substituir a fonte padrão de um item de menu individual, incluindo a cláusula FONT em DEFINE
BAR.

cNomeFonte especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o


comando a seguir cria um menu na fonte Courier de
12 pontos:

DEFINE POPUP popMyPopup FONT 'Courier', 12

Se a fonte especificada não estiver disponível, uma fonte similar com características de fonte
similares irá substituí-la. Se você incluir a cláusula FONT, mas omitir o tamanho em pontos de
cTamanhoFonte, será utilizada uma fonte de 10 pontos.

STYLE cEstiloFonte Especifica um estilo de fonte padrão para o menu. Você pode substituir o
estilo padrão de um item individual incluindo a cláusula FONT em DEFINE BAR.

Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver disponível, o estilo
de fonte Normal será utilizado.

Os estilos de fonte que podem ser especificados com cEstiloFonte são listados na tabela a seguir:

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itálico:

DEFINE MENU popMyPopup STYLE 'BI'

FOOTER cTextoRodapé Cria um rodapé com o texto especificado, com cTextoRodapé


centralizado na borda inferior do menu.
KEY RótuloTecla Especifica uma tecla de acesso ou combinação de teclas para um menu. Para
obter uma lista de teclas e combinações de teclas disponíveis e seus respectivos nomes de rótulos de
tecla, consulte ON KEY LABEL.

Incluir KEY é equivalente a emitir o comando a seguir:

ON KEY LABEL RótuloTecla ACTIVATE POPUP NomeMenu

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá
prioridade e o menu não poderá ser ativado com a tecla ou combinação de teclas especificada.

MARGIN Coloca um espaço extra à esquerda e à direita de cada item de menu. Os caracteres de
marca são exibidos no espaço à esquerda de um item e setas indicando submenus adicionais em
cascata estão disponíveis, sendo exibidos à direita dos itens de menu. Se você omitir MARGIN, os
caracteres de marca irão sobrescrever o primeiro caractere dos nomes dos itens de menu; setas
hierárquicas irão sobrescrever o último caractere dos itens de menu.

MARK cCaractereMarca Especifica um caractere exibido à esquerda de um item de menu. O


caractere de marca é uma marca de verificação. A cláusula MARK será ignorada e o caractere de
marca padrão será utilizado se o menu estiver integrado dentro do menu do sistema do Visual
FoxPro. Além disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela principal
do FoxPro ou da janela definida pelo usuário na qual o menu está localizado.

MARK pode ser incluído para alterar o caractere de marca padrão por um caractere especificado
com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro
caractere será utilizado como o caractere de marca.

Observação A especificação de um caractere de marca não marca um item de menu. Utilize SET
MARK OF para marcar um item de menu.

A cláusula MARK define o caractere de marca para todos os itens do menu. Os caracteres de marca
especificados com os comandos DEFINE BAR têm prioridade sobre os caracteres de marca
especificados com a cláusula MARK em DEFINE POPUP. SET MARK OF é utilizado para ativar
ou desativar os caracteres de marca, podendo ser utilizado também para especificar um caractere de
marca para um item de menu individual ou para todos os itens de menu.

MESSAGE cTextoMensagem Exibe uma mensagem quando você seleciona um item de menu. A
mensagem é colocada na barra de status gráfica. Se a barra de status baseada em caractere for
ativada com SET STATUS ON, a mensagem será centralizada na última linha da janela principal do
Visual FoxPro.

MOVER Coloca uma seta de duas pontas () na caixa de diálogo Deslocador à esquerda do item
selecionado no menu. Você pode arrastar a seta de duas pontas a fim de mover um item para outra
posição no menu. GETBAR( ) pode ser utilizado para determinar o posicionamento de cada item no
menu.

Não é possível reorganizar itens em menus criados com a cláusula PROMPT.


MULTISELECT Permite que o usuário selecione vários itens de um menu ao mesmo tempo.
Quando o usuário escolhe o item de um menu, o caractere de marca é colocado à esquerda do item.

Não é possível fazer várias seleções a partir de um menu criado com a cláusula PROMPT.

MRKBAR( ) pode ser utilizado para determinar os itens que serão escolhidos a partir do menu.

Se você incluir MULTISELECT em DEFINE POPUP, poderá incluir MARGIN para reservar
espaço em cada item para o caractere de marca.

No exemplo a seguir, é criado um menu denominado popFruits. MULTISELECT é incluído para


criar um menu que permita que vários itens sejam escolhidos.

Cada um dos quatro itens têm um caractere de marca diferente. Quando o usuário escolhe itens do
menu, eles são marcados e uma rotina denominada yourchoice exibe os itens escolhidos.

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
várias escolhas
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Maçãs' 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 '\<Limões' 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 opção é marcada,
? PRMBAR('popFruits', gnCount) AT 5 && exibe legenda
ENDIF
NEXT

PROMPT FIELD NomeCampo Especifica o nome de campo de uma tabela aberta cujos registros
serão os itens do menu. O menu contém um item para cada registro da tabela. Quando o menu é
ativado, a Área de trabalho da tabela é selecionada.
Dica Você pode beneficiar-se da otimização de Rushmore se definir um filtro no campo
especificado com PROMPT FIELD utilizado no menu.

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

NomeCampo pode também conter vários nomes de campos e expressões concatenadas com o
operador de adição (+). NomeCampo pode também ser o nome do campo de uma tabela aberta em
outra Área de trabalho ou uma função definida pelo usuário.

Não há limite para o número de entradas que podem ser exibidas em um menu criado com
PROMPT FIELD.

PROMPT FILES [LIKE EstruturaArquivo] Cria um menu que exibe os nomes dos arquivos
disponíveis no diretório ou pasta atual.

LIKE EstruturaArquivo permite especificar os arquivos a serem exibidos no menu utilizando


curingas. Por exemplo, para criar um menu que exiba os nomes das tabelas na unidade ou diretório
padrão, inclua o comando a seguir:

PROMPT FILES LIKE *.DBF

Você pode criar um menu que exiba os nomes dos arquivos em outras unidades e em outros
diretórios, incluindo uma especificação de unidade, de diretório ou ambas. Por exemplo, para criar
um menu que exiba os nomes dos arquivos de programa em um diretório denominado PROGRAMS
na unidade C, inclua o comando a seguir:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG

PROMPT STRUCTURE Exibe os nomes dos campos da tabela atual no menu, de acordo com a
estrutura dos campos da tabela. Quando o menu é ativado, a Área de trabalho da tabela é
selecionada.

RELATIVE Especifica a ordem de colocação dos itens no menu. Se você criar um menu sem a
cláusula RELATIVE, um item será posicionado no menu na ordem ditada pelo número da barra do
item. O espaço no menu é reservado para itens indefinidos. Por exemplo, se o primeiro e terceiro
itens forem definidos e o menu estiver ativado, uma linha em branco reservada para o segundo item
será colocada no menu.

Se você criar um menu com RELATIVE, os itens serão exibidos no menu na ordem em que foram
definidos. O espaço no menu não é reservado para itens indefinidos.

A definição de um menu com RELATIVE também permite que você utilize as cláusulas BEFORE e
AFTER em DEFINE BAR para posicionar os itens de um menu em relação a outros itens. Se um
menu for criado sem RELATIVE,
a inclusão de BEFORE ou AFTER em DEFINE BAR gerará um erro.
Execute os dois exemplos de programas a seguir e compare a colocação dos itens em cada menu.

*** Exemplo de RELATIVE ***


DEFINE POPUP popRelatYes RELATIVE FROM 1,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 usuário na qual está localizado.

SHORTCUT Cria um menu de atalho. Um menu de atalho é exibido tipicamente quando um botão
de seleção, barra de ferramentas ou barra de tarefas é clicado com o botão direito do mouse. O
menu de atalho lista comandos que pertencem à área da tela na qual o mouse foi clicado com o
botão direito.

Você pode incluir MROW( ) e MCOL( ) na cláusula FROM para ativar o popup na localização
onde o mouse é clicado.

TITLE cTextoTítuloMenu Exibe um título no centro da borda superior do menu.


cTextoTítuloMenu especifica o título do menu.

COLOR SCHEME nNúmeroEsquema Especifica as cores de todos os elementos do menu. Como


padrão, as cores dos menus criadas com DEFINE POPUP são controladas pelo esquema de cores 2.

COLOR ListaParesCores Especifica as cores de todos os elementos do menu.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico Visão geral de
cores.

Comentários
Para colocar um conjunto de itens definidos no menu, utilize uma série de comandos DEFINE
BAR. Para colocar registros, arquivos ou campos no menu utilize as opções PROMPT FIELD,
PROMPT FILES ou PROMPT STRUCTURE de DEFINE POPUP.

Quando o menu é exibido e ativado com ACTIVATE POPUP, você pode escolher um dos itens do
menu. Dependendo do item escolhido, uma rotina poderá ser executada ou outro menu poderá ser
exibido e ativado. Um menu que exibe outro menu quando um item é escolhido é denominado
submenu em cascata. Para obter maiores informações sobre a criação de submenus, consulte ON
BAR.

Se você utilizar o Criador de menus para criar seu menu, talvez não precise utilizar esses comandos.
O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do
sistema do Visual FoxPro, que você pode modificar adicionando seus próprios itens de menu.

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de
menus”, no capítulo 11, “Criando menus e barras de ferramentas”, no Guia do Desenvolvedor.

DEFINE POPUP, exemplo do comando

O exemplo a seguir utiliza DEFINE POPUP para criar menus que estão ativos quando um título de
menu na barra de menus é escolhido. A barra de menus do sistema atual é salva para memória com
SET SYSMENU SAVE e, em seguida, os títulos de menu do sistema são removidos com SET
SYSMENU TO.
Dois títulos novos de menu do sistema são criados com DEFINE PAD e DEFINE POPUP cria um
menu suspenso para cada título de menu. DEFINE BAR cria itens em cada um dos menus. Quando
um título de menu é escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o menu
correspondente.

Quando um item é escolhido a partir de um menu, ON SELECTION POPUP utiliza PROMPT( ) e


POPUP( ) para passar o número do item e o nome do menu para o procedimento CHOICE.
CHOICE exibe o texto do item escolhido e o nome do menu que contém o item. Se o item Saída for
escolhido de um menu Informações de cartão, o menu do sistema do Visual FoxPro é restaurado.

*** Nomeie este programa como DEFINPOP.PRG ***


CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversões' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT '\<Informações do Cartão' COLOR SCHEME
3;
KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP 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\<branças' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar \<Usuários' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças '
DEFINE BAR 6 OF cardinfo PROMPT '\-'
DEFINE BAR 7 OF cardinfo PROMPT 'Sa\<ir '
ON SELECTION POPUP cardinfo;

DO choice IN definpop WITH PROMPT( ), POPUP( )


PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'Você escolheu ' + mprompt + ;
' do popup ' + mpopup NOWAIT
IF mprompt = 'Saída'
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 extensão no Visual FoxPro (10 caracteres nas versões anteriores do FoxPro). Eles
devem começar com uma letra ou caractere de sublinhado e não podem começar com um número.
Eles podem conter qualquer combinação de letras, números e caracteres de sublinhado.

FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica a posição e o tamanho da janela


definida pelo usuário na janela principal do Visual FoxPro. FROM nLinha1, nColuna1 especifica a
posição do canto superior esquerdo da janela definida pelo usuário na janela principal do Visual
FoxPro. TO nLinha2, nColuna2 especifica a posição do canto inferior direito da janela definida pelo
usuário na janela principal do Visual FoxPro.

Uma janela pode ser definida com as coordenadas que estão fora da borda da janela do Visual
FoxPro e pode ser maior que a janela principal do Visual FoxPro.

A localização e o tamanho da janela são determinados pela fonte da janela pai. A janela pai pode ser
outra janela definida pelo usuário ou a janela principal do Visual FoxPro.

AT nLinha3, nColuna3 SIZE nLinha4, nColuna4 Especifica a posição e o tamanho de uma janela
definida pelo usuário.

AT nLinha3, nColuna3 especifica a posição do canto superior esquerdo da janela definida pelo
usuário na janela principal do Visual FoxPro. Essa posição é determinada pela fonte atual da janela
pai. Como a cláusula AT é idêntica à cláusula FROM em todos os aspectos, as duas cláusulas
podem ser utilizadas de forma intercambiável.

SIZE nLinha4, nColuna4 especifica em linhas e colunas o tamanho da janela definida pelo usuário e
assegura que o texto exibido em uma fonte específica caberá na janela criada.

Você pode especificar uma fonte e um estilo de fonte para uma janela definida pelo usuário,
incluindo as cláusulas FONT e STYLE. Se você especificar uma fonte para a janela e incluir a
cláusula SIZE, o tamanho da fonte será determinado pela largura e altura da fonte da janela. Se você
não especificar a fonte para uma janela, será utilizada a fonte padrão do sistema, a fonte FoxFont de
10 pontos.
IN [WINDOW] NomeJanela2 Coloca uma janela definida pelo usuário em uma janela pai. A
janela definida pelo usuário torna-se a janela filho e não pode ser movida para fora da janela pai. Se
a janela pai for movida, a janela filho será movida junto com ela.

Quando uma janela filho é colocada em uma janela pai, as coordenadas da janela filho especificadas
com as cláusulas FROM e TO ou AT e SIZE terão relação com a janela pai, não com a janela
principal do Visual FoxPro.

No exemplo a seguir, uma janela pai, wParent, é criada. Uma janela filho, wChild, é colocada na
janela pai.

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 usuário explicitamente na janela principal do Visual
FoxPro. Se você omitir IN SCREEN, a janela definida pelo usuário será colocada na janela
principal do Visual FoxPro, como padrão.

Você pode incluir a cláusula IN WINDOW em ACTIVATE WINDOW para colocar a janela em
outra janela definida pelo usuário e substituir a cláusula IN SCREEN.

IN DESKTOP Coloca uma janela definida pelo usuário na Área de trabalho do Microsoft
Windows, fora da janela principal do Visual FoxPro. A posição da janela está relacionada com a
Área de trabalho do Windows e com a fonte atual da janela principal do Visual FoxPro.

NAME NomeObjeto Cria uma referência de objeto para a janela, permitindo que você manipule a
janela com as propriedades orientadas a objetos disponíveis para o objeto do formulário.

Para obter informações adicionais sobre a programação orientada a objetos no Visual FoxPro,
consulte o capítulo 3, “Programação orientada a objetos”, no Guia do Desenvolvedor. Para obter
informações adicionais sobre as propriedades do objeto do formulário que podem ser especificadas
para uma janela criada com a cláusula NAME, consulte o tópico Form, objeto.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o texto colocado na janela.
cNomeFonte especifica o nome da fonte, e cTamanhoFonte, o tamanho em pontos. Se você omitir
nTamanhoFonte, será utilizada uma fonte de 9 pontos.
Por exemplo, este comando cria uma janela que exibe a saída enviada para a janela na fonte Courier
de 16 pontos:

DEFINE WINDOW wDisplayFont FROM 2,2 TO 12,22 FONT 'Courier', 16

Se você omitir a cláusula FONT, será utilizada a fonte FoxFont de 10 pontos. Se a fonte
especificada não estiver disponível, será utilizada uma fonte com características semelhantes em
substituição.

STYLE cEstiloFonte Especifica um estilo de fonte para o texto colocado na janela. cEstiloFonte
especifica a fonte. Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver
disponível, o estilo de fonte Normal será utilizado.

A tabela a seguir lista estilos de fonte e seus caracteres correspondentes.

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. No
Visual FoxPro, os comandos a seguir especificam os estilos Negrito e Itálico:

DEFINE WINDOW wDisplayStyle FROM 2, 2 TO 12, 22 STYLE 'BI'

TITLE cTextoTítulo Atribui um título com a cláusula TITLE. cTextoTítulo especifica o texto do
título e é centralizado na borda superior da janela. Se o título for mais largo do que a janela, será
truncado.

HALFHEIGHT Cria uma janela com uma barra de título de meia altura. Isso fornece
compatibilidade para as janelas criadas nas versões anteriores do FoxPro que são importadas para o
Visual FoxPro.

Quando você utiliza DEFINE WINDOW para criar uma janela, uma barra de título de meia altura é
utilizada, a menos que você inclua a palavra-chave SYSTEM ou uma cláusula FONT.

Se você incluir a palavra-chave HALFHEIGHT, a barra de título de meia altura será utilizada
independentemente da cláusula SYSTEM ou FONT estar incluída.

DOUBLE | PANEL | NONE | SYSTEM | cSeqüênciaBorda Especifica um estilo de borda para


uma janela definida pelo usuário. A borda padrão é uma única linha.
Argumento Descrição

DOUBLE Especifica uma borda com linha dupla em volta da janela.


PANEL Especifica uma borda larga em volta da janela.
NONE Suprime completamente a borda.
SYSTEM Especifica que a janela definida pelo usuário deverá ter a aparência de uma janela
do sistema. Quando certas cláusulas diferentes (GROW, ZOOM etc.) são incluídas, os controles
apropriados da janela são colocados na sua borda.
cSeqüênciaBorda Especifica uma borda personalizada. Para obter maiores informações sobre
a definição de uma borda personalizada, consulte ” SET BORDER”.
A inclusão de DOUBLE ou de uma seqüência de borda personalizada cria uma janela com a borda
PANEL. A inclusão das cláusulas CLOSE, FLOAT, GROW, ZOOM ou MINIMIZE coloca os
controles apropriados na janela, mesmo que a cláusula SYSTEM de definição da janela não seja
incluída.

CLOSE Permite fechar uma janela definida pelo usuário utilizando o teclado ou mouse. Ao fechar
uma janela, ela é removida da janela principal do Visual FoxPro ou de uma janela pai definida pelo
usuário e sua definição é removida da memória. Se omitir CLOSE, você não poderá fechar a janela
utilizando a interface; a janela deverá ser fechada utilizando um comando em um programa ou na
janela Comando.
NOCLOSE Impede que a janela seja fechada exceto ao utilizar um comando em um programa ou
na janela Comando.

FLOAT Permite que a janela seja movida, utilizando o teclado ou mouse. Se omitir FLOAT, você
não poderá mover a janela, a menos que utilize o comando MOVE WINDOW em um programa ou
na janela Comando.
NOFLOAT Impede que a janela seja movida, exceto quando utilizar o comando MOVE
WINDOW em um programa ou na janela Comando.
GROW Permite que você dimensione uma janela definida pelo usuário, utilizando o teclado ou
mouse. Se omitir GROW, você não poderá dimensionar a janela exceto ao utilizar o comando SIZE
WINDOW em um programa ou na janela Comando.

NOGROW Impede que você dimensione uma janela exceto ao utilizar o comando SIZE WINDOW
em um programa ou na janela Comando.
MDI Cria uma janela definida pelo usuário em conformidade com MDI. MDI (interface de
múltiplos documentos) é uma especificação que permite janelas com vários documentos e
determina suas estruturas e procedimentos. Se você omitir MDI, a janela criada não estará em
conformidade com MDI.

Quando uma janela em conformidade com MDI é maximizada:

· A janela considera o tamanho da janela principal do Visual FoxPro. Os controles da janela


desaparecem e a caixa do menu Controle é exibida na barra de menus do sistema do Visual FoxPro.
O botão Restaurar da janela também é colocado na barra de menus do sistema do Visual FoxPro.
· O título da janela é colocado na barra de títulos do Visual FoxPro e é separado do título do
Visual FoxPro por um hífen.
· Se você ativar outra janela em conformidade com MDI, ela será automaticamente
maximizada.
NOMDI Cria uma janela que não está em conformidade com MDI.

MINIMIZE Permite minimizar uma janela definida pelo usuário utilizando o teclado ou mouse.

NOMINIMIZE Impede que as janelas sejam minimizadas.

ZOOM Permite que a janela seja maximizada utilizando o teclado ou mouse. Você pode também
restaurar a janela ao seu tamanho original.

NOZOOM Impede que a janela seja maximizada.

ICON FILE NomeArquivo Especifica o ícone exibido quando a janela é minimizada. É preciso
incluir a palavra-chave MINIMIZE em DEFINE WINDOW. Você pode especificar somente um
arquivo de ícone (.ICO); não é possível especificar um arquivo bitmap (.BMP).

FILL FILE NomeArquivo2 Especifica um papel de parede (o segundo plano) para a janela. A
janela é exibida lado a lado, com o NomeArquivo2 especificado. Você especifica um arquivo
bitmap .BMP.

COLOR SCHEME nNúmeroEsquema Especifica as cores para a janela definida pelo usuário.
Como padrão, as cores das janelas criadas com DEFINE WINDOW são controladas pelo esquema
de cores 1.

COLOR ListaParesCores Especifica as cores para a janela definida pelo usuário.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de
cores”.

Comentários

Depois que as janelas definidas pelo usuário forem criadas com DEFINE WINDOW, elas poderão
ser exibidas na janela principal do Visual FoxPro com ACTIVATE WINDOW ou SHOW
WINDOW. O número de janelas definidas pelo usuário que podem ser criadas é limitado somente
pela quantidade de memória disponível e pelos recursos do sistema.

As janelas ativadas permanecem na janela principal do Visual FoxPro até que DEACTIVATE
WINDOW ou HIDE WINDOW seja emitido. DEACTIVATE WINDOW e HIDE WINDOW
removem janelas da janela principal do Visual FoxPro, mas não removem as definições das janelas
da memória. As janelas podem ser colocadas de volta na janela principal do Visual FoxPro com
ACTIVATE WINDOW ou SHOW WINDOW.

Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas da janela principal do
Visual FoxPro e as definições das janelas da memória. As janelas cujas definições foram removidas
da memória devem ser recriadas com DEFINE WINDOW para serem exibidas novamente.

DEFINE WINDOW, exemplo do comando


No exemplo a seguir, uma janela denominada Saída é criada e ativada. O programa espera você
pressionar uma tecla e, em seguida, oculta a janela. O programa espera você pressionar uma tecla
novamente e, em seguida, exibe a janela mais uma vez.

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

DELETE DATABASE, comando

Exclui um banco de dados do disco.

Sintaxe

DELETE DATABASE NomeBancoDados | ?


[DELETETABLES] [RECYCLE]

Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser excluído do disco. O banco de


dados especificado não poderá ser aberto. NomeBancoDados pode incluir o caminho do banco de
dados com o nome dele.

? Exibe a caixa de diálogo Excluir onde você pode especificar o nome do banco de dados a ser
excluído do disco.

DELETETABLES Exclui do disco as tabelas contidas no banco de dados e o banco de dados que
contém as tabelas.

RECYCLE Especifica que o banco de dados não é excluído imediatamente do disco e é colocado
na Lixeira do Windows 95.

Comentários

Utilize sempre DELETE DATABASE para excluir um banco de dados do disco. Ao contrário de
outros utilitários de manipulação do sistema operacional, DELETE DATABASE remove
referências do banco de dados das tabelas do banco de dados.
Caso SET SAFETY esteja ativado (ON), o Visual FoxPro perguntará se você gostaria de excluir o
banco de dados especificado. Caso SET SAFETY esteja desativado (OFF), o banco de dados será
excluído automaticamente do disco.

DELETE DATABASE, exemplo do comando

Este exemplo cria um banco de dados denominado people. Uma tabela denominada friends é criada
e é automaticamente adicionada ao banco de dados. DISPLAY TABLES é utilizado para exibir as
tabelas no banco de dados e DISPLAY DATABASES é utilizado para exibir as informações sobre
as tabelas no banco de dados.
DELETE DATABASE é utilizado com a opção DELETETABLES para remover o banco de dados
e sua tabela friends do disco.

CLOSE 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 informações 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 excluído. NomeArquivo pode conter caracteres curingas
como * e ?. Por exemplo, para excluir os arquivos de backup com a extensão .BAK no diretório ou
pasta atual, emita DELETE FILE *.BAK.

? Exibe a caixa de diálogo Excluir do qual você pode escolher um arquivo a ser excluído.

RECYCLE Especifica que o banco de dados não é excluído imediatamente do disco e é colocado
na Lixeira do Windows 95.

Cuidado Qualquer arquivo excluído com este comando não pode ser recuperado. Mesmo se SET
SAFETY estiver ativado (ON), você não será avisado antes de o arquivo ser excluído.
Comentários

O arquivo que você deseja excluir não pode estar aberto quando DELETE FILE é emitido. O nome
do arquivo deve incluir um caminho se estiver em uma unidade de disco ou volume diferente, ou
em um diretório ou pasta diferente do padrão e a extensão do nome do arquivo deve estar incluída.
O nome do arquivo não pode conter curingas.

Antes de excluir uma tabela de um banco de dados, emita REMOVE TABLE com o nome da tabela
para remover as referências à tabela do banco de dados. Se você excluir uma tabela que tenha um
arquivo memo .FPT associado, certifique-se de excluir o arquivo memo.

DELETE FILE, exemplo do comando

No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros no qual o país é EUA


são copiados para uma tabela denominada backup. Os dados em backup são, em seguida, copiados
para um arquivo de texto, temp, que é aberto e, em seguida, excluído quando é fechado.

CLOSE 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 não excluído','Arquivo excluído')
USE
DELETE FILE backup.dbf

DELETE TRIGGER, comando

Remove um disparador de exclusão, inserção ou atualização de uma tabela do banco de dados atual.

Sintaxe

DELETE TRIGGER ON NomeTabela FOR DELETE | INSERT | UPDATE

Argumentos

NomeTabela Especifica o nome da tabela da qual o disparador está excluído.


FOR DELETE | INSERT | UPDATE Especifica o disparador a ser excluído. Inclui FOR DELETE
para remover o Disparador de exclusão, FOR INSERT para remover o Disparador de inserção e
FOR UPDATE para remover o Disparador de atualização.

Comentários

Utilize CREATE TRIGGER para criar um disparador de exclusão, inserção ou atualização de uma
tabela.

DELETE TRIGGER, exemplo do comando

Os exemplos a seguir criam um Disparador de atualização que impede que valores maiores que 50
sejam digitados no campo maxordamt na tabela customer. DISPLAY DATABASE é utilizado para
exibir o Disparador de atualização. Em seguida, DELETE TRIGGER é utilizado para remover o
Disparador de atualização e DISPLAY DATABASE é emitido novamente para verificar a remoção
do Disparador de atualização.

CLOSE 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 exclusão.

Sintaxe

DELETE
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[IN nÁreaTrabalho | cAliasTabela]
[NOOPTIMIZE]

Argumentos

Escopo Especifica um intervalo de registros a serem marcados para exclusão. As cláusulas de


escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.
Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de
escopo.

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

FOR lExpressão1 Especifica uma condição através da qual somente os registros que satisfazem à
condição lógica lExpressão1 são marcados para exclusão.

Rushmore otimizará uma consulta especificada com DELETE ... FOR se lExpressão1 for uma
expressão otimizável e a tabela for indexada em DELETED( ). Para obter um melhor desempenho,
utilize uma expressão otimizável na cláusula FOR.

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

WHILE lExpressão2 Especifica uma condição através da qual os registros serão marcados para
serem excluídos quando lExpressão2 resultar em verdadeiro (.T.).

IN nÁreaTrabalho Especifica a Área de trabalho da tabela onde os registros são marcados para
exclusão.

IN cAliasTabela Especifica o alias da tabela onde os registros são marcados para exclusão.

Se você omitir nÁreaTrabalho e cAliasTabela, os registros serão marcados para exclusão na tabela
da Área de trabalho atualmente selecionada.

NOOPTIMIZE Desativa a otimização de Rushmore de DELETE.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

Os registros marcados para exclusão não são removidos fisicamente da tabela até que PACK seja
emitido. Os registros marcados para exclusão podem ser reintegrados (desmarcados) com
RECALL.
DELETE, exemplo do comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE é utilizado para
marcar todos os registros para exclusão onde o campo country contém EUA. Todos os registros
marcados para exclusão são exibidos. RECALL ALL é utilizado para desmarcar todos os registros
marcados para exclusão.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
DELETE FOR country = 'EUA' && Marca para exclusão
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados
RECALL ALL && Desmarca todos os registros marcados para exclusão

DELETED( ), função

Retorna um valor lógico que indica se o registro atual está marcado para exclusão.

Sintaxe

DELETED([cAliasTabela | nÁreaTrabalho])

Tipos de retorno

Lógico

Argumentos

cAliasTabela | nÁreaTrabalho Você pode verificar o status do registro atual de uma tabela aberta
em outra Área de trabalho especificando o número da Área de trabalho com nÁreaTrabalho ou o
alias da tabela com cAliasTabela. Se uma tabela não estiver aberta na Área de trabalho especificada,
DELETED( ) retornará falso.

Se você omitir cAliasTabela e nÁreaTrabalho, o status de exclusão será retornado para o registro
atual da Área de trabalho atual.

Comentários

Se o registro estiver marcado para exclusão, DELETED( ) retornará verdadeiro (.T.); caso contrário,
DELETED( ) retornará falso (.F.).

É possível marcar registros para exclusão com DELETE e DELETE - SQL e desmarcá-los com
RECALL.

Rushmore otimiza consultas que testam o status de exclusão dos registros se a tabela estiver
indexada por DELETED( ).

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

DELETED( ), exemplo da função


O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL é utilizado
para marcar todos os registros a serem excluídos, onde o campo country que contém USA.
DELETED( ) é utilizado para exibir todos os registros marcados para exclusão. RECALL ALL é
utilizado para desmarcar todos os registros a serem excluídos.

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

DELETE FROM customer WHERE country = 'USA' && Marca para exclusão
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados
RECALL ALL && Desmarca todos os registros a serem excluídos

DIFFERENCE( ), função

Retorna um número inteiro de 0 a 4 que representa a diferença fonética relativa entre duas
expressões de caracteres.

Sintaxe

DIFFERENCE(cExpressão1, cExpressão2)

Tipos de retorno

Numérico

Argumentos

cExpressão1, cExpressão2 Especifica as expressões de caracteres que são comparadas por


DIFFERENCE( ).

Comentários

DIFFERENCE( ) é útil para procurar tabelas quando a ortografia exata de uma entrada não é
conhecida.

Quanto mais parecida for a ortografia de duas expressões, maior será o número retornado por
DIFFERENCE( ). Se a ortografia das expressões de caracteres for muito semelhante,
DIFFERENCE( ) retornará 4. Para duas expressões de caracteres com poucas semelhanças
fonéticas, DIFFERENCE( ) retornará 0.
DIFFERENCE( ), exemplo da função

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 variáveis de memória.

Sintaxe

DIMENSION NomeMatriz1 (nLinhas1 [, nColunas1])


[, NomeMatriz2 (nLinhas2 [, nColunas2])] ...

Argumentos
NomeMatriz1 Especifica o nome da matriz. Podem ser criadas várias matrizes com um único
comando DIMENSION, incluindo nomes de matrizes adicionais (NomeMatriz2, NomeMatriz3
etc.).

nLinhas1 [, nColunas1] Especifica o tamanho da matriz a ser criada. Se você incluir apenas
nLinhas1, será criada uma matriz unidimensional. Esse tipo de matriz apresenta uma coluna e
nLinhas1 linhas. Por exemplo, o comando a seguir cria uma matriz unidimensional denominada
gaArrayOne que contém uma coluna e dez linhas.

DIMENSION gaArrayOne(10)

Para criar uma matriz bidimensional, inclua os argumentos nLinhas1 e nColunas1. nLinhas1
especifica o número de linhas da matriz e nColunas1 especifica o número de colunas. O exemplo a
seguir cria uma matriz bidimensional denominada gaArrayTwo que contém duas linhas e quatro
colunas:

DIMENSION gaArrayTwo(2,4)

É preciso especificar um tamanho para cada matriz criada com DIMENSION. No exemplo a seguir,
são criadas três matrizes: gaArrayOne e gaArrayTwo, a partir dos exemplos anteriores, e uma
terceira matriz denominada gaArrayThree:

DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)

Você pode colocar as expressões em DIMENSION ou DECLARE entre colchetes ou parênteses.


Por exemplo, os dois comandos a seguir criam matrizes idênticas:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)


DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]

Comentários

DIMENSION é idêntico, em operação e sintaxe, a DECLARE.

Elementos da matriz…O tamanho de uma matriz determina a quantidade de elementos que ela pode
conter. Cada elemento de uma matriz pode armazenar um único item de informação. Para
determinar quantos elementos uma matriz contém e a quantidade de informações que pode
armazenar, multiplique seu número de linhas (nLinhas1) pelo seu número de colunas (nColunas1).

Os elementos de uma matriz podem conter qualquer tipo de dados e são inicializados com o valor
falso (.F.) na primeira vez que a matriz é criada. Você pode inicializar todos os elementos de uma
matriz com o mesmo valor utilizando STORE se SET COMPATIBLE estiver definido como
FOXPLUS ou OFF (a definição padrão). Por exemplo:
DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray

Índices de matriz…Para se fazer referência aos elementos de uma matriz, empregam-se os


respectivos índices. Cada elemento de matriz possui um índice numérico exclusivo que o identifica.
Se a matriz for unidimensional, o índice de um elemento será igual ao seu número de linha. Por
exemplo, o índice correspondente ao elemento da terceira linha de uma matriz unidimensional é 3.

Para se fazer referência aos elementos de matrizes bidimensionais, utilizam-se dois índices. O
primeiro indica a localização da linha do elemento e o segundo, a localização da coluna. Por
exemplo, os índices correspondentes ao elemento da terceira linha e quarta coluna de uma matriz
bidimensional são 3,4. Para obter uma discussão mais ampla sobre os índices de elementos de
matriz, consulte ASUBSCRIPT( ).

O(s) índice(s) do primeiro elemento de uma matriz sempre começam com 1. Caso uma matriz seja
bidimensional, ela também poderá ser referenciada por um único índice. Utilize AELEMENT( )
para retornar esse índice único a partir de um par de índices de linha e de coluna de uma matriz.
Utilize ASUBSCRIPT( ) para retornar os índices de linha e de coluna a partir de um único índice.

Redimensionando matrizes…Para alterar o tamanho e as dimensões de uma matriz, emita o


comando DIMENSION novamente. O tamanho de uma matriz pode ser aumentado ou diminuído,
matrizes unidimensionais podem ser convertidas em duas dimensões e matrizes bidimensionais
podem ser reduzidas a uma dimensão.

Se o número de elementos de uma matriz for aumentado, o conteúdo de todos os elementos da


matriz original será copiado para a matriz recém-redimensionada. Os elementos adicionais são
inicializados com o valor falso (.F.).

Exemplo de redimensionamento de matrizes

O Exemplo 1 mostra o resultado do aumento do tamanho de uma matriz unidimensional. (Observe


que se você digitar esses comandos na janela Comando, a matriz será pública (PUBLIC), mas se
copiá-los para um programa e executá-lo, a matriz será privada (PRIVATE)).
Se o número de elementos em uma matriz estiver reduzido, os elementos e qualquer dos dados
contidos neles serão excluídos. Quando uma matriz unidimensional é remanejada para duas
dimensões, o conteúdo da matriz original é copiado para a nova matriz em uma ordem elemento
para linha.

No Exemplo 2, uma matriz unidimensional é convertida em uma matriz bidimensional. O conteúdo


dos elementos da matriz unidimensional é copiado para a primeira linha da nova matriz, seguido da
segundo linha e, assim, sucessivamente. Os elementos adicionais são inicializados com o valor falso
(.F.).
Quando uma matriz bidimensional é convertida em uma dimensão, seu conteúdo é copiado para a
nova matriz em uma ordem linha-para-elemento. O primeiro elemento da primeira linha torna-se o
primeiro elemento da matriz unidimensional, o segundo elemento da primeira linha torna-se o
segundo elemento e, assim, sucessivamente.
Utilize ADEL( ) ou AINS( ) para excluir ou inserir elementos de matriz, linhas e colunas. Utilize
APPEND FROM ARRAY, COPY TO ARRAY, SCATTER e GATHER para transferir dados entre
registros e matrizes da tabela.
No Exemplo 3, uma matriz bidimensional é criada e carregada com os dados. Os elementos de
matriz e os dados contidos neles são exibidos.

* Exemplo 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 informações sobre arquivos em um diretório ou pasta.

Sintaxe

DIR | DIRECTORY [ON Unidade]


[[LIKE] [Caminho] [EstruturaArquivo]]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Argumentos

ON Unidade Especifica o nome da unidade de disco ou do volume onde está localizado o diretório
ou pasta.

[LIKE] [Caminho] [EstruturaArquivo] Especifica o caminho para o diretório ou pasta que contém
os arquivos. O caminho poderá incluir o nome da unidade de disco ou do volume se você omitir ON
Unidade.

Inclua EstruturaArquivo para exibir informações sobre tipos de arquivo que não as tabelas.
EstruturaArquivo é uma estrutura de especificação de arquivo que aceita curingas. Por exemplo,
para listar todos os arquivos de programa no diretório ou pasta atual, emita o comando a seguir:

DIR *.PRG

No Visual FoxPro, você pode emitir o comando a seguir para listar todos os arquivos sem as
extensões:

DIR *.
TO PRINTER [PROMPT] Envia a saída de DIRECTORY para uma impressora.

No Visual FoxPro, você pode incluir a cláusula PROMPT opcional para exibir uma caixa de
diálogo de impressão antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as
definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As
definições da impressora que podem ser ajustadas dependem do driver de impressora instalado no
momento. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Envia a saída de DIR para o arquivo especificado com NomeArquivo. Se
o arquivo já existir e SET SAFETY estiver ativado (ON), será exibida uma pergunta para saber se
você deseja ou não sobrescrever o arquivo..

Comentários

Use DIR para exibir informações sobre arquivos.

DIR sem a cláusula LIKE ou uma estrutura exibe o seguinte:

· Nomes de todas as tabelas do diretório ou pasta.


· O número de registros em cada tabela.
· A data em que cada tabela foi atualizada pela última vez.
· O tamanho de cada tabela em bytes (as tabelas no formato FoxBASE original são assim
registradas).
· Se cada tabela faz parte de um banco de dados.
· O tamanho total em bytes ocupado pelas tabelas no disco (não incluindo arquivos de memo
.FPT associados).
· O número de tabelas exibidas.

· O número total de bytes restantes no disco.

As informações da tabela para a unidade de disco padrão ou volume e o diretório ou pasta são
exibidas, a menos que sejam especificadas de forma diferente com Unidade, Caminho ou ambos.

DIR ou DIRECTORY, exemplo de comando

CLEAR
DIR && Exibe as tabelas no diretório ou pasta atual
DIR *.CDX && Exibe os arquivos de índice no diretório ou pasta atual
DIR A*.DBF && Exibe as tabelas que começam com A
DIR *.* && Exibe todos os arquivos, incluindo aqueles sem extensões
DIRECTORY( ) , função

Retorna verdadeiro (.T.) se o diretório especificado for encontrado em disco.

Sintaxe

DIRECTORY(cNomeDiretório)

Tipos de retorno

Lógico

Argumentos

cNomeDiretório Especifica o nome do diretório a ser localizado. Se você não incluir um caminho
absoluto para o diretório especificado, o Visual FoxPro irá procurar aquele em relação ao diretório
padrão do Visual FoxPro.

Comentários

O diretório padrão do Visual FoxPro é especificado com SET DEFAULT.

DISKSPACE( ), função

Retorna o número de bytes disponível na unidade ou volume de disco padrões ou especificados.

Sintaxe

DISKSPACE([cNomeVolume])
Tipos de retorno

Numérico

Argumentos

cNomeVolume Especifica o nome da unidade de disco ou do volume para o qual o espaço


disponível é retornado. Se cNomeVolume for omitido, o espaço disponível será retornado para o
volume ou unidade de disco padrão.

Comentários

Esta função é útil para determinar se há espaço suficiente em disco para fazer cópias de reserva de
arquivos ou executar comandos, como SORT, que precisam de espaço adicional em disco para
arquivos de trabalho temporário.

A unidade de disco ou o volume padrão são especificados com SET DEFAULT.

DISKSPACE( ) retorna -1 se houver um erro na leitura da unidade de disco ou volume. Em algumas


redes, o valor retornado por DISKSPACE( ) pode não ser exato para grandes unidades de rede.

DISKSPACE( ), exemplo de função

O exemplo a seguir utiliza DISKSPACE( ) para determinar se há espaço suficiente em disco


disponível para executar uma classificação.

*** Check DISKSPACE before sort ***


CLOSE 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 'Espaço suficiente em disco para classificação.'
ELSE
WAIT WINDOW 'Espaço insuficiente em disco. A classificação não pode ser feita.'

ENDIF
DISPLAY DATABASE, comando

Exibe informações sobre bancos de dados ou campos atuais, conexões definidas, tabelas ou
visualizações do banco de dados atual.

Sintaxe

DISPLAY DATABASE
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona a saída de DISPLAY DATABASE para uma impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir a caixa de diálogo
Imprimir antes do início da impressão. Coloque PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a saída de DISPLAY DATABASE para o arquivo especificado


com NomeArquivo. Caso o arquivo já exista e SET SAFETY esteja ativado (ON), o Visual FoxPro
exibirá um aviso perguntando se você deseja sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

Utilize DBGETPROP( ) para retornar maiores informações sobre o banco de dados atual.

DISPLAY DATABASE, exemplo de comando

O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends é
criada, sendo automaticamente acrescentada ao banco de dados. DISPLAY TABLES é utilizado
para exibir as tabelas do banco de dados e DISPLAY DATABASES é usado para exibir
informações sobre essas tabelas.

CREATE DATABASE people


CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas do banco de dados
DISPLAY DATABASES && Exibe informações sobre as tabelas
DISPLAY FILES, comando

Exibe informações sobre arquivos.

Sintaxe

DISPLAY FILES
[ON Unidade]
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Argumentos

ON Unidade Especifica a unidade ou volume onde residem os arquivos.

LIKE EstruturaArquivo Especifica uma condição que faz com que o Visual FoxPro exiba
informações apenas sobre arquivos com padrão correspondentes à da estrutura EstruturaArquivo. O
padrão da estrutura pode conter curingas como ? e *.

TO PRINTER [PROMPT] Inclua TO PRINTER para enviar a saída de DISPLAY FILES para a
impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir uma caixa de
diálogo antes do início da impressão. Nela, você pode ajustar as definições da impressora, incluindo
o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser
ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave
PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Inclua TO FILE NomeArquivo para enviar a saída de DISPLAY FILES
para o arquivo especificado com NomeArquivo. Se o arquivo já existir e SET SAFETY estiver
ativado (ON), será exibida uma pergunta para saber se você deseja ou não substituí-lo.
Comentários

Utilize DISPLAY FILES para exibir informações sobre arquivos em um disco. Você pode exibir
informações sobre todos os arquivos de uma determinada unidade de disco, volume, diretório ou
pasta, ou apenas arquivos que correspondam a um padrão de estrutura que contenha curingas como
? e *.

A emissão de DISPLAY FILES sem qualquer argumento exibe informações sobre as tabelas do
diretório atual. As informações exibidas incluem :

· O nome da tabela.
· O número de registros na tabela.
· Data e hora da última atualização da tabela.
· O tamanho de cada tabela em bytes.
· Se cada tabela faz parte de um banco de dados.

DISPLAY FILES, exemplo de comando

O exemplo a seguir exibe os nomes dos bancos de dados do diretório EXEMPLOS\DADOS.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')

CLEAR
DISPLAY FILES LIKE *.DBC
DISPLAY MEMORY, comando

Exibe o conteúdo atual das matrizes e variáveis de memória.

Sintaxe

DISPLAY MEMORY
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]

Argumentos

LIKE EstruturaArquivo Exibe informações sobre variáveis e matrizes que correspondem a


EstruturaArquivo do padrão de estrutura. Se você incluir LIKE EstruturaArquivo, o Visual FoxPro
exibirá apenas o conteúdo das matrizes e variáveis de memória que correspondam a
EstruturaArquivo. EstruturaArquivo aceita curingas como ? e *. Por exemplo, para exibir todas as
variáveis de memória que comecem com a letra A, emita:

DISPLAY MEMORY LIKE A*

TO PRINTER [PROMPT] Direciona a saída de DISPLAY MEMORY para a impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da
impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o
número de cópias e de páginas a serem impressas. As definições da impressora a serem ajustadas
dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo
após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de DISPLAY MEMORY para o arquivo especificado


com NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado, será exibida uma
pergunta para saber se você deseja ou não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela definida
pelo usuário que está ativa.
Comentários

DISPLAY MEMORY exibe o nome, tipo, conteúdo e status de todas as matrizes de variáveis e
variáveis definidas atualmente. Além disso, exibe o número de variáveis definidas, o número de
bytes utilizados e o número de variáveis adicionais disponíveis. Observe que o número de bytes
utilizados representa a memória utilizada por variáveis do tipo caractere. As variáveis do tipo de
caractere são o único tipo de variáveis que precisam de memória adicional, além daquela alocada
pela contagem de variáveis especificada com o item de configuração MVCOUNT.

Também são exibidas informações sobre variáveis do sistema, menus, barras de menus, títulos de
menus e janelas.

DISPLAY MEMORY, exemplo do comando

No exemplo a seguir, muitas variáveis são criadas e atribuídas a valores. DISPLAY MEMORY
exibe primeiro todas as variáveis que começam com “sam” e, em seguida, exibe todas as variáveis
que contêm cinco letras e terminam com “exit”.

STORE 'Adeus' TO 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 saída de DISPLAY STATUS para uma impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo de impressão
antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora,
incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que
podem ser ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-
chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de DISPLAY STATUS para o arquivo especificado


com NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado, será exibida uma
pergunta para saber se você deseja ou não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

Esse formulário de DISPLAY lista informações sobre o ambiente atual do Visual FoxPro. As
categorias de informações e as informações sobre cada categoria são as seguintes.

Informações sobre arquivos de índice e tabelas:

· Tabelas abertas
· Arquivos memo abertos
· Aliases de tabela
· Páginas de código de tabela
· Relacionamentos de tabela
· Índices ativos
· Chaves de arquivos de índice
· A marca ou arquivo de índice controlador
· Arquivos compostos estruturais abertos
· Marcas de índice compostas abertas
· O status do atributo compartilhado de cada tabela aberta
· Os registros bloqueados atualmente em cada tabela

· A definição EXCLUSIVE de uso


· A definição LOCK
· A definição MULTILOCKS
· O valor SET REFRESH
· O valor SET REPROCESS

Informações sobre o arquivo de baixo nível aberto:

· Arquivos de baixo nível abertos


· O número do identificador de arquivo para cada arquivo de baixo nível
· A posição do ponteiro de arquivo para cada arquivo de baixo nível
· Atributos de leitura e gravação para cada arquivo de baixo nível

Informações adicionais sobre o ambiente do Visual FoxPro:

· O arquivo de procedimentos em uso


· O tipo de processador
· O caminho do Visual FoxPro
· O diretório ou pasta padrão do Visual FoxPro
· O destino da impressão
· A definição das margens
· A Área de trabalho atual
· Definições do comando SET
· Módulos binários carregados atualmente
· Informações de DDE no Visual FoxPro
· Página de código atual
· Seqüência de ordenação atual

· Página de código do compilador


· Formato de data atual
· Combinação de teclas da macro de teclado
· Modo como os parâmetros UDF são passados
· Opções de MesclagemTexto
· Funções registradas da biblioteca compartilhada, como aquelas das bibliotecas de vínculo
dinâmico (DLLs, Dynamic-Link Libraries) do Windows ou das bibliotecas Apple Shared Library
Manager (ASLM) ou Code Fragment Manager (CFM) do Macintosh.

DISPLAY STRUCTURE, comando


Exibe a estrutura de um arquivo de tabela.

Sintaxe

DISPLAY STRUCTURE
[IN nÁreaTrabalho| cAliasTabela]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]

Argumentos

IN nÁreaTrabalho| cAliasTabela Exibe a estrutura da tabela em uma Área de trabalho diferente


das áreas de trabalho atuais. nÁreaTrabalho especifica o número da Área de trabalho e
cAliasTabela, o alias da tabela.

TO PRINTER [PROMPT] Direciona a saída de DISPLAY STRUCTURE para a impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da
impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o
número de cópias e de páginas a serem impressas. As definições da impressora que podem ser
ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave
PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de DISPLAY STRUCTURE para o arquivo


especificado com NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado, será
exibida uma pergunta para saber se você deseja ou não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

Utilize DISPLAY STRUCTURE para exibir a estrutura dos campos de uma tabela. O nome de cada
campo da tabela é exibido junto com seu tipo e comprimento. Se um campo for do tipo Numérico,
Duplo ou Flutuante, será exibido o número de casas decimais do campo. Também será exibido o
valor nulo aceito em cada campo.

DISPLAY STRUCTURE também exibe o número atual de registros na tabela e a data de sua última
atualização. Se a tabela tiver um campo Memo associado, será exibido o tamanho de bloco do
campo Memo. O comprimento total de todos os campos também será exibido, assim como a página
de código da tabela.

A tabela pode ter um índice composto estrutural que é aberto com a tabela. Se uma marca desse
índice tiver o mesmo nome que um campo da tabela, a ordem da marca (ascendente ou
descendente) e a seqüência de ordenação da marca serão exibidas próximas ao nome do campo.
Se SET FIELDS for utilizado para limitar o acesso aos campos da tabela, um colchete (>) será
exibido ao lado dos nomes dos campos que podem ser acessados.

DISPLAY STRUCTURE, exemplo do comando

No exemplo a seguir, a tabela customer no banco de dados testdata é aberta. DISPLAY


STRUCTURE é utilizado para exibir a estrutura da tabela.

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

CLEAR
DISPLAY STRUCTURE

DISPLAY TABLES, comando

Exibe nomes e informações sobre todas as tabelas contidas no banco de dados atual.

Sintaxe

DISPLAY TABLES
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]
Argumentos

TO PRINTER [PROMPT] Direciona a saída de DISPLAY TABLES para uma impressora.

Você pode incluir PROMPT para exibir a caixa de diálogo Imprimir antes do início da impressão.
Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de DISPLAY TABLES para o arquivo em disco


especificado com NomeArquivo. Caso o arquivo já exista e SET SAFETY esteja ativado (ON), o
Visual FoxPro exibirá um aviso perguntando se você deseja sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

As informações retornadas formam um subconjunto de informações exibidas com DISPLAY


STATUS. No entanto, as informações exibidas com DISPLAY TABLES contêm apenas
informações relacionadas a tabelas, exibindo as informações, independente de as tabelas estarem ou
não abertas.

As seguintes informações são exibidas:

· Nome da tabela
· Caminho da tabela

DISPLAY TABLES, exemplo do comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. DISPLAY TABLES é
utilizado para exibir informações sobre as tabelas do banco de dados.

CLOSE 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 informações sobre as tabelas no banco de dados
DISPLAY, comando

Exibe informações sobre a tabela atual na janela principal do Visual FoxPro ou em uma janela
definida pelo usuário.

Sintaxe

DISPLAY
[[FIELDS] ListaCampos]
[Escopo] [FOR lExpressão1] [WHILE Expressão2]
[OFF]
[NOCONSOLE]
[NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Argumentos

FIELDS ListaCampos Especifica os campos a serem exibidos. Se você omitir FIELDS


ListaCampos, todos os campos da tabela serão exibidos, como padrão.

O conteúdo do campo Memo não é exibido, a menos que o nome deste campo esteja explicitamente
incluído na lista de campos. Sua largura apresentada é determinada por SET MEMOWIDTH

Escopo Especifica o intervalo de registros a serem exibidos. Apenas os registros dentro do


intervalo serão exibidos. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD
nNúmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da Área de
trabalho ativa.

Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de
escopo.

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

FOR lExpressão1 Especifica que apenas os registros que satisfazem a condição lógica lExpressão1
serão exibidos. Isso permite que você extraia os registros não desejados.

Rushmore otimiza consultas criadas com DISPLAY ... FOR se lExpressão1 for uma expressão
otimizável. Para obter o melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição através da qual os registros serão exibidos quando a
expressão lógica lExpressão2 resultar em verdadeiro (.T.).

OFF Suprime a exibição dos números de registro. Se você omitir OFF, o número de registro será
exibido antes de cada registro.
NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

NOOPTIMIZE Desativa a otimização Rushmore de DISPLAY.

Para maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore”


no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

TO PRINTER [PROMPT] Envia a saída de DISPLAY para a impressora

No Visual FoxPro, , você pode incluir a cláusula PROMPT opcional para exibir uma caixa de
diálogo antes do início da impressão. Nela, você pode ajustar as definições da impressora, incluindo
o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser
ajustadas dependem do driver de impressora instalado no momento. Coloque PROMPT logo após
TO PRINTER.

TO FILE NomeArquivo Envia a saída de DISPLAY para o arquivo especificado com


NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado (ON), será exibida uma
pergunta para saber se você deseja ou não sobrescrever o arquivo.

Comentários

DISPLAY exibe o conteúdo dos registros e os resultados de expressões para a tabela atual. Se
houver mais informações do que podem ser exibidas na janela, a primeira tela de informações será
exibida e o Visual FoxPro, colocado em pausa. Pressione qualquer tecla ou clique sobre qualquer
local para ver a próxima tela de informações. DISPLAY é semelhante a LIST, com exceção de que
LIST exibe as mesmas informações em um fluxo contínuo sem ser colocado em pausa.

DISPLAY também pode ser utilizado para exibir os resultados de expressões, que podem consistir
em combinações de literais, variáveis de memória, elementos de matriz, campos e campos Memo.
Os nomes de campos e as expressões serão exibidas se SET HEADINGS estiver ativado (ON).

DISPLAY, exemplo de comando

O exemplo a seguir abre a tabela customer do banco de dados testdata. O conteúdo do primeiro
registro é exibido.

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

CLEAR
DISPLAY FIELD cust_id, company, contact OFF NEXT 10
DMY( ), função

Retorna uma expressão de caractere no formato dia-mês-ano(por exemplo, 31 Maio 1996) a partir
de uma expressão de data ou data e hora. O nome do mês não é abreviado.

Sintaxe

DMY(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica a expressão de data a partir da qual a função DMY( ) retorna uma
seqüência de caracteres no formato dia-mês-ano.

tExpressão Especifica a expressão de data e hora a partir da qual a função DMY( ) retorna uma
seqüência de caracteres no formato dia-mês-ano.

Comentários
Se SET CENTURY estiver desativado (OFF), DMY( ) retornará uma seqüência de caracteres no
formato dd mês yy ano (por exemplo, 16 Fevereiro 96). Se SET CENTURY estiver ativado (ON), o
formato será dd-mês-aaaa (por exemplo, 16 Fevereiro 1996).

DMY( ), exemplo da função

CLEAR
SET CENTURY OFF
? DMY(DATE( ))
SET CENTURY ON
? DMY(DATE( ))

DO CASE ... ENDCASE, comando

Executa o primeiro conjunto de comandos cuja expressão condicional resulta em verdadeiro (.T.).

Sintaxe

DO CASE
CASE lExpressão1
Comandos
[CASE lExpressão2
Comandos
...
CASE lExpressãoN
Comandos]
[OTHERWISE
Comandos]
ENDCASE

Argumentos

CASE lExpressão1 Comandos ... Quando a primeira expressão CASE verdadeira (.T.) é localizada,
o conjunto de comandos que a acompanha é executado. A execução do conjunto de comandos
continua até que a próxima cláusula CASE ou ENDCASE seja localizada. A execução é retomada,
então, pelo primeiro comando seguinte a ENDCASE.

Se uma expressão CASE for falsa (.F.), o conjunto de comandos seguintes a ela até a próxima
cláusula CASE será ignorado.

Apenas um conjunto de comandos é executado. É o primeiro conjunto de comandos cuja expressão


CASE resulta em verdadeiro (.T.). Qualquer expressão CASE verdadeira (.T.) posterior será
ignorada.

OTHERWISE Comandos Se todas as expressões CASE resultarem em falso (.F.), OTHERWISE


determinará se um conjunto de comandos adicionais será executado.

· Se você incluir OTHERWISE, os comandos que acompanham OTHERWISE serão


executados e a execução saltará para o primeiro comando que acompanha ENDCASE.
· Se você omitir OTHERWISE, a execução saltará para o primeiro comando que acompanha
ENDCASE.

Comentários

DO CASE é utilizado para executar um conjunto de comandos do Visual FoxPro, baseado no valor
de uma expressão lógica. Quando DO CASE é executado, as expressões lógicas sucessivas são
avaliadas; os valores das expressões determinam o conjunto de comandos que será executado.

Podem ser colocados comentários na mesma linha, após DO CASE e ENDCASE. Os comentários
são ignorados durante a compilação e execução do programa.

DO CASE ... ENDCASE, exemplo de comando

Neste exemplo, o Visual FoxPro avalia cada cláusula CASE até que a variável MONTH seja
encontrada em uma das listas. A seqüência apropriada é armazenada na variável rpt_title e a
estrutura DO CASE é fechada.

STORE CMONTH(DATE( )) TO month && O mês atual

DO CASE && Começa o loop


CASE INLIST(month,'Janeiro','Fevereiro','Março')
STORE 'Ganhos no primeiro trimestre' TO rpt_title

CASE INLIST(month,'Abril','Maio','Junho')
STORE 'Ganhos no segundo trimestre' TO rpt_title

CASE INLIST(month,'Julho','Agosto','Setembro')
STORE 'Ganhos no terceiro trimestre' TO rpt_title

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 lExpressão
Comandos
[LOOP]
[EXIT]
ENDDO

Argumentos

lExpressão Especifica uma expressão lógica cujo valor determina se os comandos entre DO
WHILE e ENDDO são executados. Se lExpressão for verdadeiro (.T.), o conjunto de comandos será
executado.
Comandos Especifica o conjunto de comandos do Visual FoxPro a ser executado se lExpressão for
verdadeiro (.T.).

LOOP Retorna o controle do programa diretamente para DO WHILE. LOOP pode ser colocado
em qualquer lugar entre DO WHILE e ENDDO.

EXIT Transfere o controle do programa de dentro do loop DO WHILE para o primeiro comando
após ENDDO. EXIT pode ser colocado em qualquer lugar entre DO WHILE e ENDDO.

Comentários

Os comandos entre DO WHILE e ENDDO são executados enquanto a expressão lógica lExpressão
permanecer como verdadeira (.T.). Cada instrução DO WHILE deve ter uma instrução ENDDO
correspondente.

Os comentários podem ser colocados depois de DO WHILE e ENDDO na mesma linha. Os


comentários serão ignorados durante a compilação e execução do programa.

DO WHILE ... ENDDO, exemplo do comando

No exemplo a seguir, o número de produtos em estoque com preços acima de $20 é totalizado no
loop DO WHILE até que seja encontrado o final do arquivo (EOF). O loop DO WHILE é executado
e o total é exibido.

CLOSE 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 são avaliados em aproximadamente 20 dólares:'
?? gnStockTot
DO, comando

Executa um procedimento ou programa do Visual FoxPro.

Sintaxe

DO NomePrograma1 | NomeProcedimento
[IN NomePrograma2]
[WITH ListaParâmetros]

Argumentos

NomePrograma1 Especifica o nome do programa a ser executado.

Se você não incluir uma extensão com o programa que executar, o Visual FoxPro procurará e
executará essas versões do programa na seguinte ordem:

· .EXE (versão executável)


· .APP (um aplicativo)
· .FXP (versão compilada)
· .PRG (programa)

Para utilizar DO, a fim de executar um programa de menu, um programa de formulário ou uma
consulta específica, você deve incluir as respectivas extensões (.MPR, .SPR ou .QPR).

NomeProcedimento Especifica o nome de um procedimento a ser executado. O Visual FoxPro


primeiro procura o procedimento no programa atualmente em execução. Se o procedimento não
estiver localizado nesse programa, o Visual FoxPro procurará o procedimento em um arquivo de
procedimentos aberto com SET PROCEDURE.

Você pode incluir a cláusula IN NomePrograma2, avisando ao Visual FoxPro para procurar o
procedimento no arquivo que você especificar.

Os procedimentos múltiplos, dentro de uma versão executável (.EXE) ou de um aplicativo (.APP),


podem ter o mesmo nome. Quando você utiliza DO para iniciar um procedimento em uma versão
executável ou em um aplicativo, o Visual FoxPro procura apenas o programa principal do aplicativo
ou versão executável do procedimento especificado.

IN NomePrograma2 Executa um procedimento no arquivo de programa especificado com


NomePrograma2.

Quando o arquivo é localizado, o procedimento é executado. Se o arquivo de programa não puder


ser localizado, será exibida a mensagem “Arquivo inexistente”. Se o arquivo de programa for
localizado mas o procedimento especificado não estiver nesse arquivo, será exibida a mensagem
“Procedimento não localizado”.

WITH ListaParâmetros Especifica os parâmetros a serem passados ao programa ou procedimento.


Os parâmetros listados em ListaParâmetros são expressões, variáveis de memória, literais, campos
ou funções definidas pelo usuário. Como padrão, os parâmetros são passados aos programas e
procedimentos por referência. Você pode passar um parâmetro por valor, colocando-o entre
parênteses.

Consulte SET UDFPARMS para obter informações sobre como passar parâmetros por valor ou
referência. O número máximo de parâmetros, que podem ser passados a um programa ou
procedimento é 27. Para obter maiores informações sobre como passar parâmetros, consulte
LPARAMETERS e PARAMETERS.

Comentários

DO executa um procedimento ou programa do Visual FoxPro em um programa ou arquivo de


procedimentos. O próprio arquivo de programa pode conter comandos DO adicionais, permitindo
que você aninhe os comandos DO em até 128 níveis.

Quando você utiliza DO para executar um programa, os comandos contidos no arquivo de programa
são executados até que ocorra uma das opções a seguir:

· RETURN é encontrado.
· CANCEL é executado.
· Outro comando DO é emitido.
· O fim do arquivo é atingido.
· QUIT é executado.

Quando a execução do programa for concluída, o controle será retornado para um dos locais a
seguir:

· O programa de chamada.
· A janela Comando.
· O sistema operacional.

Se você escolher Executar no menu Programa e executar um programa em um diretório em uma


unidade de disco diferente do diretório ou unidade de disco atual, o Visual FoxPro alterará
automaticamente a unidade de disco e o diretório padrão para o diretório e unidade de disco que
contêm o programa.
DOW( ), função

Retorna um valor numérico de dia da semana a partir de uma expressão de Data ou DataHora.

Sintaxe

DOW(dExpressão | tExpressão [, nPrimeiroDiaSemana])

Tipos de retorno

Numérico

Argumentos

dExpressão Especifica a expressão de Data da qual DOW( ) retorna o número do dia.

tExpressão Especifica a expressão de DataHora da qual DOW( ) retorna o número do dia.

nPrimeiroDiaSemana Especifica o primeiro dia da semana.

nPrimeiroDiaSemana pode ser um dos valores a seguir.

NPrimeiroDiaSemana Descrição

0 DOW( ) utiliza qualquer dia atualmente selecionado na caixa de listagem Começar semana
em, exibida na guia Regional da caixa de diálogo Opções.
1 Domingo. Esse é o padrão quando nPrimeiroDiaSemana é omitido, além de ser o primeiro
dia da semana utilizado nas versões anteriores do FoxPro.
2 Segunda-feira
3 Terça-feira
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sábado

DOW( ), exemplo da função

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]

Definições

NomeTabela Especifica a tabela a ser removida do banco de dados atual e excluída do disco.

NomeArquivo Especifica uma tabela livre a ser excluída do disco.

? Exibe a caixa de diálogo Remover da qual você pode selecionar uma tabela a ser removida do
banco de dados atual e excluída do disco.

RECYCLE Especifica que a tabela não seja imediatamente excluída do disco e seja colocada na
Lixeira do Windows 95.

Comentários

Quando DROP TABLE é emitido, todos os índices principais, valores padrão e regras de validação
associados à tabela também são removidos. DROP TABLE também afeta outras tabelas no banco
de dados atual se as tabelas possuírem regras ou relações associadas à tabela sendo removidas. As
regras e relações não estarão mais válidas quando a tabela for removida do banco de dados.

Qualquer tabela excluída com esse comando não pode ser recuperada. Mesmo que SET SAFETY
esteja ativado (ON), você não será avisado quando a tabela for excluída.
DTOC( ), função

Retorna uma data tipo Caractere a partir de uma expressão Data ou DataHora.

Sintaxe

DTOC(dExpressão | tExpressão [, 1])

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica uma variável de Data, elemento de matriz ou campo para os quais a função
DTOC( ) retorna uma data tipo Caractere.

tExpressão Especifica uma variável de DataHora, elemento de matriz ou campo para os quais a
função DTOC( ) retorna uma data do tipo Caractere.
1 Retorna a data em formato adequado para indexação. Isto é útil para manter os registros de
tabelas em seqüência cronológica.

Por exemplo, para ordenar os registros da tabela em uma seqüência de entrada, você pode emitir
este comando:

INDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG Timeindx

gdInvDate e gnInvTime são campos que contêm a data e a hora em que os dados foram inseridos no
registro.

Comentários

DTOC( ) retorna uma seqüência de caracteres que corresponde à expressão Data ou DataHora. O
formato de data é determinado por SET CENTURY e SET DATE.

DTOC( ), exemplo da função

STORE CTOD('10/31/95') TO 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( ), função

Converte graus em radianos.

Sintaxe
DTOR(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo valor você deseja converter em radianos. Um
ângulo expresso no formato grau:minuto:segundo deve ser convertido no seu equivalente decimal.

Comentários

DTOR( ) converte o valor de uma expressão numérica determinada em graus em um valor


equivalente em radianos. DTOR( ) é útil para trabalhar com estas funções trigonométricas do Visual
FoxPro: ACOS( ), ASIN( ), COS( ), SIN( ) e TAN( ).

Utilize RTOD( ) para converter radianos em graus.

DTOR( ), exemplo da função

CLEAR
? DTOR(0) && Exibe 0.00
? DTOR(45) && Exibe 0.79
? DTOR(90) && Exibe 1.57
? DTOR(180) && Exibe 3.14
? COS(DTOR(90)) && Exibe 0.00
DTOS( ), função

Retorna uma data de seqüência de caracteres no formato aaaammdd a partir de uma expressão Data
ou DataHora especificada.

Sintaxe

DTOS(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica a expressão Data que DTOS( ) converte em uma seqüência de caracteres de
oito dígitos.

tExpressão Especifica a expressão DataHora que DTOS( ) converte em uma seqüência de


caracteres de oito dígitos.

Comentários

Essa função é útil para indexar tabelas em um campo Data ou DataHora. É equivalente a DTOC( )
quando o argumento opcional 1 é incluído.

A seqüência de caracteres retornada por DTOS( ) não é afetada por SET DATE ou SET
CENTURY.

DTOS( ), exemplo da função

CLEAR
? DTOS(DATE( ))
DTOT( ), função

Retorna um valor de DataHora a partir de uma expressão Data.

Sintaxe

DTOT(dExpressãoData)

Tipos de retorno

DataHora

Argumentos

dExpressãoData Especifica a expressão Data da qual é retornado um valor de DataHora.

Comentários

O formato do valor de DataHora retornado por DTOT( ) depende das definições atuais de SET
DATE e SET MARK. Se não for dado um século, será utilizado o século vinte.
DTOT( ) adiciona uma hora padrão de meia-noite (12:00:00 A.M.) à data para produzir um valor de
DataHora válido.

DTOT( ), exemplo da função

? DTOT({02/16/95}) && Exibe 02/16/95 12:00:00am

EDIT, comando

Exibe campos para edição.

Sintaxe

EDIT
[FIELDS ListaCampos]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[FREEZE NomeCampo]
[KEY eExpressão1 [, eExpressão2]]
[LAST | NOINIT]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NORMAL]
[NOWAIT]
[PARTITION nNúmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferência]
[REST]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTitulo]
[VALID [:F] lExpressão3 [ERROR cTextoMensagem]]
[WHEN lExpressão4]
[WIDTH nLarguraCampo]
[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]
[COLOR SCHEME nNúmeroEsquema]

Argumentos
FIELDS ListaCampos Especifica os campos que irão aparecer na janela Editar. Os campos são
exibidos na ordem especificada na ListaCampos. Você pode incluir campos de outras tabelas
relacionadas na lista de campos. Ao incluir um campo de uma tabela relacionada, coloque o alias da
tabela e um ponto antes do nome do campo.

Se você omitir FIELDS, todos os campos da tabela serão exibidos na ordem em que aparecem na
estrutura da tabela.

A lista de campos pode especificar qualquer combinação de campos ou campos calculados,


incluindo campos de tabelas abertas em outras áreas de trabalho. A sintaxe da lista de campos é:

NomeCampo1
[:R]
[:nLarguraColuna]
[:V = lExpressão1 [:F] [:E = cTextoMensagem]]
[:P = cCódigosFormato]
[:B = eLimiteInferior, eLimiteSuperior [:F]]
[:H = cTextoCabeçalho]
[:W = lExpressao2]
[, NomeCampo2 [:R]...]

Campos calculados

A lista de campos pode conter instruções para a criação de campos calculados. Um campo calculado
contém dados somente para leitura criados com uma expressão. Essa expressão pode assumir
qualquer forma, mas precisa ser uma expressão válida do Visual FoxPro.

A sintaxe da instrução utilizada para criar um campo calculado é:

NomeCampoCalculado = eExpressão

Este exemplo cria um campo calculado chamado location:

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

A lista de campos da cláusula FIELDS inclui oito opções, o que permite um gerenciamento especial
dos campos exibidos na janela Editar.

:nLarguraColuna Especifica o tamanho para exibição de um campo em colunas. O valor de :


nLarguraColuna não afeta o tamanho do campo na tabela; ele só altera a forma de exibição do
campo na janela Editar
:R No exemplo a seguir, a janela Editar é aberta com os campos cust_id e company. O campo
cust_id é somente para leitura, não podendo ser alterado.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT FIELDS cust_id:R, company

:V = lExpressão1 Especifica uma opção de verificação que executa validação de dados em nível de
campos na janela Editar. Se lExpressão1 retornar verdadeiro (.T.) quando você mover o cursor para
fora do campo, a entrada de dados no campo será considerada correta e o cursor passará para o
próximo campo.

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

Como padrão, lExpressão1 só é avaliada quando o campo é modificado. Para forçar uma
verificação, inclua a opção :F.

Você pode exibir sua própria mensagem de erro incluindo a opção :E.

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

:F Especifica uma opção de validação forçada que determina se a expressão na opção de


verificação (lExpressão1) será avaliada quando você mover o cursor para fora de um campo. Se :F
não for incluído, lExpressão1 só será avaliada se forem feitas alterações no campo. Se :F for
incluído, lExpressão1 será avaliada, mesmo que o campo não seja modificado

:E = cTextoMensagem Exibe uma mensagem de erro especificada com cTextoMensagem em vez


da mensagem padrão do sistema.

Se a expressão de validação :V = lExpressão1 for verdadeira (.T.), o cursor sairá normalmente do


campo. Se a expressão for falsa (.F.), o cursor permanecerá no campo e uma mensagem de erro será
exibida.

Se a expressão de validação :V = lExpressão1 for 0, não será exibida uma mensagem de erro e o
cursor permanecerá no campo que está sendo validado, permitindo que você exiba suas próprias
mensagens de erro em rotinas de validação.

A mensagem de erro só será exibida se SET NOTIFY estiver ativado (ON). Uma campainha será
ouvida se SET BELL estiver ativado (ON).

O exemplo a seguir abre a tabela products e exibe os campos product_id e prod_name. Digite um
valor superior a 100 no campo product_id para executar a validação do campo.
:V especifica o critério de validação. :F força a verificação da validação, quer os dados sejam ou
não alterados. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma mensagem de
erro definida pelo usuário.

No Visual FoxPro, a mensagem de erro é exibida na barra de status, na parte inferior da janela
principal do Visual FoxPro.

Pressione ESC para fechar a janela Editar.

CLOSE 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 = cCódigosFormato Especifica uma opção de figura que permite criar um modelo de edição
especificado com cCódigosFormato, que controla a exibição e entrada de dados para cada campo
em uma janela Editar.

Para obter maiores informações sobre a utilização de códigos de edição de figuras, consulte as
propriedades Format e InputMask.

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

CLOSE 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 expressões de limite eLimiteInferior e eLimiteSuperior precisam
corresponder ao tipo de dados do campo e não podem ser nomes de funções definidas pelo usuário.
Se os dados digitados não estiverem entre eLimiteInferior e eLimiteSuperior, uma mensagem do
sistema será exibida, indicando o intervalo entre o qual os dados precisam estar.

Como padrão, os dados digitados só serão comparados com os valores dos limites se você alterar o
conteúdo do campo. Para forçar uma comparação com os valores dos limites, inclua a opção de
validação forçada (:F).

O exemplo a seguir garante que o valor do campo in_stock fique entre 1 e 100. Pressione ESC para
fechar a janela Editar.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
EDIT FIELDS in_stock :B = 1, 100 :F

:H = cTextoCabeçalho Especifica uma opção de cabeçalho (:H) que permite a substituição dos
nomes de campo padrão por seus próprios cabeçalhos, especificados com cTextoCabeçalho. Como
padrão, os nomes de campos são posicionados do lado esquerdo dos campos na janela Editar.

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

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
EDIT FIELDS prod_name :H = 'Nome Produto:', ;
unit_price :H = 'Preço por Unidade:'

:W = lExpressão2 Especifica uma opção WHEN que permite impedir, condicionalmente, que o
cursor seja movido para um campo baseado no valor da expressão lógica lExpressão
. (:W) avalia lExpressão. Se lExpressão2 retornar um valor falso, (.F.), você não poderá mover o
cursor para o campo. Se lExpressão2 retornar um valor verdadeiro (.T.), você poderá mover o
cursor para o campo. Funções definidas pelo usuário são aceitas em lExpressão2.

É proibido mover o cursor em todos os campos se o campo atual estiver marcado como somente
para leitura. Isso ocorre somente quando todos os campos contêm uma cláusula WHEN cujo retorno
é falso.

Escopo Especifica um intervalo de registros exibido na janela Editar. As cláusulas de escopo são:
ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Comandos que incluem Escopo
funcionam somente na tabela da Área de trabalho ativa. O escopo padrão para EDIT é ALL, isto é,
todos os registros.

Para obter maiores informações, consulte Cláusulas de escopo.

FOR lExpressão1 Especifica que somente os registros que satisfazem a condição lógica
lExpressão1 são exibidos na janela Editar. Isso permite que você exclua os registros indesejados.

Rushmore otimizará uma consulta EDIT FOR se lExpressão1 for uma expressão otimizável. Para
obter melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição em que os registros são exibidos na janela Editar
enquanto a expressão lógica lExpressão2 retorna um valor verdadeiro (.T.).
FONT cNomeFonte [, nTamanhoFonte] Especifica o nome e o tamanho da fonte da janela Editar.
A expressão de caracteres cNomeFonte especifica o nome da fonte e a expressão numérica
nTamanhoFonte especifica o tamanho da fonte. Por exemplo, a cláusula a seguir especifica a fonte
Courier de 16 pontos para os campos exibidos na janela Editar:

FONT 'Courier',16

Se você incluir a cláusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, uma fonte de 10
pontos será utilizada na janela Editar.

Se você omitir a cláusula FONT, a fonte MS Sans Serif de 8 pontos será utilizada. Se a fonte
especificada não estiver disponível, uma fonte com características semelhantes será utilizada em seu
lugar.

STYLE cEstiloFonte Especifica o estilo da fonte da janela Editar no Visual FoxPro. Se você omitir
a cláusula STYLE, o estilo de fonte normal será utilizado.

Se o estilo da fonte especificado não estiver disponível, um estilo de fonte com características
semelhantes será utilizado em seu lugar.

Caractere Estilo da fonte

B Negrito
I Itálico
N Normal
O Contorno
Q Opaco
S Sombra
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. O
exemplo a seguir abre a janela Editar e utiliza uma fonte sublinhada:

CLOSE 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 alterações sejam feitas somente em um campo especificado
com NomeCampo na janela Editar. Os campos restantes são exibidos, mas não podem ser editados.
KEY eExpressão1 [, eExpressão2] Limita o escopo dos registros exibidos na janela Editar. Com
KEY, você pode especificar um valor-chave de índice (eExpressão1) ou um intervalo de valores-
chave (eExpressão1, eExpressão2) para os registros exibidos na janela Editar. A tabela tem que ser
indexada e o valor ou valores-chave de índice incluídos na cláusula KEY devem ter o mesmo tipo
de dados que a expressão de índice do arquivo de índice mestre ou marca mestre.

No exemplo a seguir, somente registros com códigos postais entre 10.000 e 30.000 são 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 alteração de configuração feita na aparência de uma janela Editar.
As alterações são salvas no arquivo FOXUSER e podem incluir alterações feitas na lista de campos,
no tamanho de cada campo e na localização e tamanho da janela Editar. Para obter maiores
informações sobre este arquivo, consulte SET RESOURCE.

Se você emitir EDIT com a cláusula LAST, a janela Editar será aberta com a mesma configuração
que foi salva pela última vez no arquivo FOXUSER. Isso restaura a janela Editar anterior, criada
com o último EDIT. Se o último comando EDIT emitido na janela Comando tiver incluído uma
longa lista de cláusulas, emita EDIT LAST para não precisar digitar o comando novamente.

Alterações na configuração da janela Editar feitas na sessão atual não serão salvas se você sair de
EDIT pressionando CTRL+Q.

LPARTITION Coloca o cursor no primeiro campo da partição esquerda da janela Editar. Pode-se
dividir a janela Editar nas partições esquerda e direita, incluindo-se a cláusula PARTITION. Como
padrão, o cursor será colocado no primeiro campo da partição direita quando a janela Editar for
aberta.

O cursor será posicionado na partição direita da janela Editar se você incluir LPARTITION sem a
cláusula PARTITION.

NAME NomeObjeto Cria uma referência de objeto para a janela Editar, permitindo a você
manipular a janela Editar com propriedades orientadas a objetos disponíveis para o controle Grid.

Para obter informações adicionais sobre programação orientada a objetos no Visual FoxPro,
consulte o capítulo 3, “Programação orientada a objetos”, no Guia do Desenvolvedor. Para obter
maiores informações sobre as propriedades do controle Grid que podem ser especificadas para uma
janela Editar criada com a cláusula NAME, consulte o tópico Controle Grid.

NOAPPEND Impede que o usuário adicione registros à tabela pressionando CTRL+Y ou


escolhendo Modo de inclusão no menu Exibir.

Importante A inclusão de NOAPPEND não impede que você inclua o registro de uma rotina
(criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar.
NODELETE Impede que registros sejam marcados para exclusão na janela Editar. Como padrão,
um registro pode ser marcado para exclusão quando você pressiona CTRL+T, escolhe Alternar
marca de exclusão ou clica na coluna mais à esquerda do registro a ser excluído.

Importante A inclusão de NODELETE não impede que você marque um registro para exclusão em
uma rotina (criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar.

NOEDIT | NOMODIFY Impede que um usuário modifique a tabela. NOEDIT e NOMODIFY são
idênticos. Se você incluir uma dessas cláusulas, poderá pesquisar ou procurar registros na tabela,
mas não poderá editá-la. No entanto, poderá incluir e excluir registros.

NOLINK Desvincula partições na janela Editar. Como padrão, as partições esquerda e direita da
janela Editar estão vinculadas; quando você rola uma partição, a outra partição também é rolada.

NOMENU Remove da barra de menus do sistema o título de menu Tabela do Visual FoxPro,
impedindo o acesso ao menu Editar.

NOOPTIMIZE Desativa a otimização Rushmore de EDIT.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” na Ajuda ou o capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

NORMAL Abre a janela Editar com suas definições padrão normais, como cores, tamanho,
posição, título e opções de controle (GROW, FLOAT, ZOOM e assim por diante). Se você omitir
NORMAL e a janela de saída atual for uma janela definida pelo usuário com suas próprias
definições, a janela Editar também assumirá as definições feitas pelo usuário.

NOWAIT Continua a execução do programa quando a janela Editar é aberta. O programa não
espera que a janela Editar seja fechada, mas continua executando na linha do programa,
imediatamente após a linha do programa que contém EDIT NOWAIT. Se você omitir NOWAIT,
quando EDIT for emitido em um programa, uma janela Editar será aberta e a execução do programa
será interrompida até que ela seja fechada.

NOWAIT só pode ser acessado a partir de um programa. A inclusão de NOWAIT ao emitir EDIT
na janela Comando não tem efeito.

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

LEDIT Especifica que a partição esquerda da janela Editar aparece no modo Pesquisa.

REDIT Especifica que a partição direita da janela Editar aparece no modo Pesquisa. O exemplo a
seguir abre uma janela Editar, com a barra de divisão posicionada na coluna 20 e a partição direita
aberta no modo Pesquisa.

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

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

EDIT PARTITION 30 REDIT

PREFERENCE NomePreferência Salva os atributos e opções de uma janela Editar para utilização
posterior. Ao contrário de LAST, que restaura a janela Editar da maneira como apareceu na sessão
anterior, PREFERENCE salva os atributos de uma janela Editar indefinidamente, no arquivo de
recursos FOXUSER. As preferências podem ser recuperadas sempre que desejado. Para obter
maiores informações sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE.

Se você emitir EDIT pela primeira vez com o nome de preferência NomePreferência especificado,
será criada uma entrada no arquivo FOXUSER que salva a configuração da janela Editar. Se você
emitir EDIT posteriormente, com o mesmo nome de preferência, a janela Editar retornará àquele
estado de preferência. Quando a janela Editar for fechada, o estado de preferência será atualizado.

Os nomes das preferências podem ter até 10 caracteres, têm que começar com uma letra ou um
caractere de sublinhado e podem conter qualquer combinação de letras, números e caracteres de
sublinhado.

Quando você conseguir estabelecer uma preferência, poderá impedir que ela seja alterada. Feche a
janela Editar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e altere o
arquivo que contém a preferência para somente para leitura, mudando o valor do campo lógico
READONLY para verdadeiro (.T.).

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

REST Impede que o ponteiro do registro seja movido de sua posição atual para o topo da tabela.
Como padrão, EDIT posiciona o ponteiro do registro no topo da tabela.

SAVE Mantém ativa e visível (aberta) a janela Editar e qualquer de suas janelas de edição de texto
de campos Memo. Você pode, então, retornar para a janela Editar após percorrer outras janelas
abertas com o teclado ou mouse.

SAVE só pode ser acessado a partir de um programa. SAVE não tem efeito quando incluído com
EDIT na janela Comando, pois EDIT SAVE é sempre o padrão no modo interativo.

TIMEOUT nSegundos Especifica o tempo que uma janela Editar espera por entrada. A expressão
numérica nSegundos especifica quantos segundos podem se passar sem entrada antes que a janela
Editar se feche automaticamente.

TIMEOUT só pode ser acessado a partir de um programa; não tem efeito quando EDIT é emitido a
partir da janela Comando. No exemplo a seguir, a janela Editar será fechada se não houver entrada
em 10 segundos.

DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ;


CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT WINDOW wEdit ;
FIELDS phone :H = 'Número Telefone:' , ;
company :H = 'Empresa:' ;
TIMEOUT 10
RELEASE WINDOW wEdit

TITLE cTextoTitulo Substitui o nome ou alias padrão da tabela, exibido na barra de título da
janela Editar pelo título especificado com cTextoTitulo. Do contrário, o nome ou alias da tabela que
está sendo pesquisada aparece na barra de título.

Se você emitir EDIT WINDOW para colocar a janela Editar em uma janela definida pelo usuário, o
título da janela Editar substituirá o título da janela definida pelo usuário.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT;
TITLE 'Minha Janela Editar' ;
FIELDS phone :H = 'Número Telefone' , ;
company :H = 'Empresa:'

VALID lExpressão3 Executa a validação no nível de registros na janela Editar. A cláusula VALID
só será executada se uma alteração for feita no registro e você mover o cursor para outro registro. A
cláusula VALID não será executada se forem feitas alterações somente em um campo Memo.

Se VALID retornar verdadeiro (.T.), você poderá mover o cursor para outro registro. Se VALID
retornar falso (.F.), o cursor permanecerá no campo atual e o Visual FoxPro exibirá uma mensagem
de erro. Você poderá exibir sua própria mensagem de erro quando VALID retornar falso, incluindo
a cláusula ERROR. A expressão de caracteres cTextoMensagem é exibida como mensagem de erro.
Se VALID retornar 0, o cursor permanecerá no campo atual e não será exibida uma mensagem de
erro.

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

:F Faz com que a cláusula VALID seja executada antes que o usuário mova o cursor para o
registro seguinte. Nesse caso, VALID será executada mesmo que o registro não seja alterado.

ERROR cTextoMensagem Especifica uma mensagem de erro que substitui o padrão do sistema e
cujo conteúdo é especificado por cTextoMensagem. O Visual FoxPro exibe sua mensagem de erro
quando VALID retorna falso (.F.).
WHEN lExpressão4 Avalia uma condição quando o usuário move o cursor para outro registro. Se
lExpressão4 retornar verdadeiro (.T.), o usuário poderá modificar o registro para onde foi movido.
Se lExpressão4 retornar falso (.F.) ou 0, o registro em que o usuário estiver passará a ser somente
para leitura e não poderá ser modificado.

A cláusula WHEN não será executada quando outra janela estiver ativada.

WIDTH nLarguraCampo Limita o número de caracteres exibidos para todos os campos em uma
partição da janela editar a nLarguraCampo. A inclusão da cláusula WIDTH não altera o tamanho
dos campos na tabela em si, apenas a forma de exibição dos campos na janela Editar. Se uma
largura tiver sido especificada para um único campo com a cláusula FIELDS, ela substituirá a
largura especificada com a cláusula WIDTH para aquele campo.

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

IN [WINDOW] NomeJanela2 Especifica a janela pai NomeJanela2 na qual a janela Editar é


aberta. A janela Editar não assume as características da janela pai. Uma janela Editar ativada dentro
de uma janela pai não pode ser movida para fora desta. Se a janela pai for movida, a janela Editar
será movida junto com ela.

Para acessar a janela Editar, a janela pai tem que ser definida como DEFINE WINDOW e estar
ativa e visível.

IN SCREEN Posiciona uma janela Editar de forma explícita na janela principal do Visual FoxPro
quando uma janela definida pelo usuário está ativa.

COLOR SCHEME nNúmeroEsquema Especifica o número de um esquema de cores utilizado para


as cores da janela Editar. No Visual FoxPro, a janela Editar assume o esquema de cores definido
utilizando o Painel de controle de cores.

Comentários

EDIT possibilita a edição da tabela selecionada em uma janela. EDIT funciona de forma idêntica a
CHANGE.

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

Em um programa, utilize DEACTIVATE WINDOW para salvar suas alterações e fechar uma janela
Editar. Inclua o nome da janela Editar em DEACTIVATE WINDOW. Para obter maiores
informações sobre os nomes da janela Editar, consulte WTITLE( ).

Suporte SET SKIP

SET SKIP permite que você estabeleça um relacionamento um-para-n entre duas tabelas (veja o
exemplo). Para cada registro da tabela pai, podem existir diversos registros relacionados na tabela
filho. Se você criar um relacionamento um-para-n, poderá utilizar EDIT para visualizar registros
das tabelas pai e filho.

O registro pai aparece uma vez, juntamente com o primeiro registro correspondente da tabela filho.
Qualquer registro correspondente subseqüente é exibido nas linhas que vêm após o registro pai e o
primeiro registro filho correspondente. No FoxPro para MS-DOS, blocos sombreados são exibidos
em qualquer coluna que contenha informações da tabela pai além do primeiro registro
correspondente. No Visual FoxPro, caractere de preenchimento para informações pai repetidas
depende da atual fonte da janela Editar.

Para obter maiores informações, consulte SET SKIP.

Suporte COL( ) e ROW( )

Utilize COL( ) e ROW( ) para retornar a linha da tela e posição da coluna em que se encontra o
cursor em uma janela Editar. Se uma janela Editar estiver aberta na janela principal do Visual
FoxPro, a posição do cursor retornada será relativa à janela principal do Visual FoxPro, não à janela
Editar em si. Se uma janela Editar estiver aberta em uma janela definida pelo usuário, COL( ) e
ROW( ) retornarão a posição do cursor em relação à janela definida pelo usuário.

EJECT PAGE, comando

Envia um comando de avanço de página condicional para a impressora.

Sintaxe

EJECT PAGE
Comentários

Utilize EJECT PAGE para avançar o fluxo de saída. O avanço depende do valor de _PADVANCE
e se uma rotina ON PAGE está em andamento.

Se _PADVANCE estiver configurada para FORMFEED e uma rotina ON PAGE não estiver em
andamento, EJECT PAGE fará o seguinte:

· Enviará um comando de alimentação de página para a impressora, se ela estiver on-line.


· Enviará comandos de alimentação de linha, como foi determinado pelas variáveis de
memória do sistema _PLENGTH e _PLINENO, para a tela, um arquivo alternativo ou ambos.
· Incrementará _PAGENO em 1.
· Configurará _PLINENO para 0.
· Se a variável de memória do sistema _PADVANCE estiver configurada para INEFEEDS e
uma rotina ON PAGE estiver em andamento e _PLINENO for menor do que o número da linha da
página especificado na rotina ON PAGE, EJECT PAGE enviará para a impressora, para a janela
principal do Visual FoxPro ou para um arquivo alternativo (ou ambos) tantos comandos de
alimentação de linha quantos forem necessários para avançar até o início da página seguinte.

Se uma rotina ON PAGE não estiver em andamento ou se _PADVANCE estiver configurada para
LINEFEEDS e _PLINENO for maior do que o número da linha da página especificado com ON
PAGE, EJECT PAGE fará o seguinte:

· Enviará comandos de alimentação de linha, conforme determinado pelas variáveis de


memória do sistema _PLENGTH e _PLINENO, para a impressora, para a janela principal do Visual
FoxPro ou para um arquivo alternativo (ou ambos).
· Incrementará _PAGENO em 1.
· Configurará _PLINENO para 0.
EJECT, comando

Envia um comando de alimentação de página para a impressora.

Sintaxe

EJECT

Comentários

EJECT faz com que a impressora avance para o início da página seguinte. EJECT enviará um
comando de alimentação de página para a impressora se a variável de memória do sistema
_PADVANCE estiver configurada para FORMFEED. Se _PADVANCE estiver configurada para
LINEFEEDS, EJECT enviará comandos de alimentação de linha para avançar até o início da página
seguinte.

EJECT redefine os valores PCOL( ) e PROW( ) para a posição atual de coluna e de linha do
cabeçote de impressão da impressora, mas não afeta o valor das variáveis do sistema _PAGENO e
_PLINENO.

EJECT, exemplo do comando

No exemplo a seguir, os campos company e phone na tabela customer serão impressos. (Certifique-
se de que há uma impressora anexada e ligada para esse exemplo.) Quando o número de linhas
impressas for maios do que 62, a página será ejetada.

CLOSE 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( ), função

Determina se uma expressão retorna um valor vazio.

Sintaxe

EMPTY(eExpressão)

Tipos de Retorno

Lógico

Argumentos

eExpressão Especifica a expressão retornada pela função EMPTY( ).

A expressão incluída pode ser de caracteres, data, numérica ou lógica, bem como o nome de um
campo Memo ou geral de uma tabela aberta. EMPTY( ) retorna verdadeiro (.T.) quando as
expressões retornam um dos valores a seguir:

Tipo de expressão Retorna este valor

Caractere Seqüência vazia, espaços, tabulações, retornos de carro, alimentações de linha ou


qualquer combinação dos mesmos.
Numérica 0
Moeda 0
Flutuante 0
Número inteiro 0
Dupla 0
Data Vazio (e.g. CTOD(''))
DataHora Vazio (e.g. CTOT(''))
Lógica Falso (.F.)
Memo Vazio (sem conteúdo)
Geral Vazio (sem objeto OLE)
Figura Vazio (nenhuma figura)
EMPTY( ) não pode ser utilizada para determinar se uma referência a um objeto de variável de
memória é vazia. Por exemplo, uma variável de memória pode conter uma referência de objeto para
um formulário. Se o formulário for fechado a partir da caixa de menu Controle do formulário ou
com CLEAR WINDOWS, a variável de memória conterá o valor nulo.
O exemplo de programa a seguir mostra como utilizar TYPE( ) e ISNULL( ) para determinar se
uma referência a um objeto de variável de memória é válida.

goMyForm = CREATEOBJECT('Form')
WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ;
'goMyForm has valid object reference',;
'goMyForm does not have valid object reference')

Comentários

EMPTY( ) retornará verdadeiro (.T.) se a expressão eExpressão retornar um valor vazio; caso
contrário, EMPTY( ) retornará falso (.F.).

EMPTY( ), exemplo da função

O exemplo a seguir abre a tabela customer do banco de dados testdata. FOR ... ENDFOR é utilizado
para criar um loop em que EMPTY( ) é utilizado para determinar se TAG( ) retorna a seqüência
vazia. O nome de cada marca de índice estrutural é exibida com seu status de candidato.

CLOSE 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 seqüência 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( ), função

Determina se o ponteiro do registro está posicionado após o último registro na tabela atual ou
especificada.

Sintaxe

EOF([nÁreaTrabalho | cAliasTabela])

Tipos de Retorno

Lógico

Argumentos

nÁreaTrabalho Especifica o número da Área de trabalho da tabela.

cAliasTabela Especifica o alias da tabela.

EOF( ) retornará falso (.F.) se uma tabela não estiver aberta na Área de trabalho que você
especificou.

Se você não especificar uma Área de trabalho ou alias, a tabela que estiver aberta na Área de
trabalho selecionada no momento será testada para o final da condição de tabela.

Comentários

EOF( ) retornará verdadeiro (.T.) se o ponteiro do registro alcançar o final do arquivo de tabela
(EOF). O final da tabela é alcançado quando o ponteiro do registro passa pelo último registro da
tabela. Por exemplo, quando os comandos FIND, LOCATE ou SEEK não têm êxito, o Visual
FoxPro move o ponteiro do registro para depois do último registro e EOF( ) retorna verdadeiro
(.T.). EOF( ) retornará falso (.F.) se o ponteiro do registro não estiver no final da tabela.

EOF( ), exemplo da função


O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma página de cada vez até o
final do arquivo ser alcançado ou até você selecionar Cancelar.

CLOSE 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 diretório diferente da unidade de disco ou diretório
atual.

NomeArquivo pode conter caracteres curinga como * e ?. Por exemplo, para excluir arquivos de
backup com ERASE *.BAK.

? Exibe a caixa de diálogo Excluir, a partir da qual você pode escolher um arquivo a ser apagado.

RECYCLE Especifica que o arquivo não seja imediatamente excluído do disco e seja colocado na
Lixeira do Windows 95.
Cuidado Atenção ao utilizar ERASE. Os arquivos apagados com esse comando não poderão ser
recuperados. Você não será avisado antes do arquivo ser apagado, mesmo que SET SAFETY esteja
ativado (ON).

ERASE, exemplo do comando

No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros nos quais o país é


Estados Unidos são copiados para uma tabela denominada backup. Os dados em backup são, então,
copiados para um arquivo texto, temp, que é aberto e, em seguida, excluído ao ser fechado.

CLOSE 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( ), função

Retorna o número do erro que disparou uma rotina ON ERROR.

Sintaxe

ERROR( )

Tipos de retorno
Numérico

Comentários

ERROR( ) retorna o número do erro mais recente. Uma rotina ON ERROR deve estar ativa para
que ERROR( ) retorne um valor diferente de 0.

Quando um erro é interceptado durante a execução de um programa, o tipo de erro pode ser
retornado por ERROR( ) em uma rotina ON ERROR. A mensagem de erro correspondente pode ser
retornada por MESSAGE( ).

O valor retornado por ERROR( ) é redefinido por RETURN ou RETRY.

Para obter uma listagem numérica de todos os números de erro e as mensagens de erro
correspondentes, consulte “Mensagens de erro” na seção “Referência técnica”.

ERROR( ), exemplo da função

O exemplo a seguir demonstra uma rotina de gerenciamento de erro simples que exibe uma
mensagem quando ocorre um erro.

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 nNúmeroErro
| nNúmeroErro, cTextoMensagem1
| [cTextoMensagem2]

Argumentos

nNúmeroErro Especifica o número do erro a ser gerado. A mensagem de erro padrão do Visual
FoxPro será utilizada quando um número de erro for especificado.

Para obter uma lista de mensagens de erro do Visual FoxPro e os respectivos números de erro,
consulte “Mensagens de erro”.

cTextoMensagem1 Especifica o texto a ser exibido em mensagens de erro que fornecem


informações adicionais sobre o erro. Por exemplo, se você fizer referência a uma variável de
memória que não existe, o Visual FoxPro fornecerá o nome da variável de memória na mensagem
de erro.

cTextoMensagem2 Especifica o texto exibido na mensagem de erro. Quando cTextoMensagem2


for especificado em vez de nNúmeroErro, o número de erro 1098 (erro definido pelo usuário) do
Visual FoxPro será gerado. Utilize um retorno de carro (CHR(13)) em cTextoMensagem2 para
mover uma parte da mensagem de erro para a próxima linha.

Comentários

ERROR pode ser utilizado para testar rotinas de gerenciamento de erro ou para exibir mensagens de
erro personalizadas.

Se uma rotina de gerenciamento de erro ON ERROR estiver ativa quando ERROR for emitido, o
Visual FoxPro executará a rotina ON ERROR. Se ocorrer um erro para um objeto, o evento Error
desse objeto será executado.

Se você emitir ERROR a partir da janela Comando e uma rotina de gerenciamento de erro ON
ERROR não estiver ativa, o Visual FoxPro exibirá a mensagem de erro. Se ERROR for emitido em
um programa e uma rotina de gerenciamento de erro ON ERROR não estiver ativa, o Visual FoxPro
exibirá a mensagem de erro e permitirá que você cancele ou suspenda o programa ou ignore o erro.
ERROR, exemplo do comando

O exemplo a seguir gera três mensagens de erro. A primeira mensagem de erro é “Variável não
encontrada” do Visual FoxPro (número de erro 12). A segunda mensagem de erro torna a gerar o
erro 12, incluindo o nome de variável Myvariable. A última mensagem de erro é definida pelo
usuário (número de erro 1089) “Minha mensagem de erro”.

ERROR 12 && Gera o erro do Visual FoxPro "Variável não encontrada"


ERROR 12, 'Myvariable' && Erro variável 'Myvariable' não encontrada
ERROR 'My error message' && Gera o erro 'Minha mensagem de erro'

EVALUATE( ), função

Avalia uma expressão de caracteres e retorna o resultado.

Sintaxe
EVALUATE(cExpressão)

Tipos de retorno

Caractere, Numérico, Moeda, Data, DataHora, Lógico ou Memo

Argumentos

cExpressão Especifica a expressão a ser avaliada. cExpressão pode ser uma seqüência de
caracteres literal ou uma expressão, uma variável de memória, um elemento de matriz ou campo de
qualquer tipo de dados válidos do Visual FoxPro incluídos entre delimitadores de seqüência de
caracteres. cExpressão não pode exceder 255 caracteres.

Sempre que possível, utilize EVALUATE( ) ou uma expressão de nome para trocar uma
substituição de macro utilizando &. EVALUATE e expressões de nome são executadas mais
rapidamente do que a substituição de macro.

Comentários

EVALUATE( ) é semelhante a TYPE( ), mas retorna o resultado de uma expressão em vez do tipo
da expressão. Uma expressão que contenha EVALUATE( ) não pode ser otimizada por Rushmore.
EXIT, comando

Sai de um loop DO WHILE, FOR ou SCAN.

Sintaxe

EXIT

Comentários

EXIT transfere o controle de dentro de um loop DO WHILE ... ENDDO, FOR ... ENDFOR ou
SCAN ... ENDSCAN para o comando imediatamente após ENDDO, ENDFOR ou ENDSCAN.

EXIT, exemplo do comando

No exemplo a seguir, o número de produtos em estoque com preço acima de 20 dólares é totalizado
no loop DO WHILE até que o final do arquivo (EOF) seja encontrado. O loop DO WHILE é
fechado e o total, exibido.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela Products
SET TALK OFF
gnStockTot = 0

DO WHILE .T. && Início 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 preço acima de 20 dólares:'
?? gnStockTot

EXP( ), função

Retorna o valor de e^x onde x é uma expressão numérica especificada.

Sintaxe

EXP(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica o expoente, x, na expressão exponencial e^x.

Comentários

O valor de e, a base de logaritmos naturais, é aproximadamente 2,71828. O número de casas


decimais retornadas por EXP( ) é especificado com SET DECIMALS.
EXP( ), exemplo da função

? EXP(0) && Exibe 1.00


? EXP(1) && Exibe 2.72

EXPORT, comando

Copia dados de uma tabela do Visual FoxPro para um arquivo em um formato diferente.

Sintaxe

EXPORT TO NomeArquivo
[TYPE] DIF | MOD | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
[FIELDS ListaCampos]
[Escopo]
[FOR lExpressão1]
[WHILE lExpressão2]
[NOOPTIMIZE]
[AS nPáginaCódigo]

Argumentos

NomeArquivo Especifica o nome do arquivo para o qual o Visual FoxPro exporta dados. Se você
não incluir uma extensão com o nome do arquivo, será atribuída a extensão padrão para o tipo de
arquivo especificado.

TYPE Especifica o tipo de arquivo a ser criado. A palavra-chave TYPE é opcional, mas é preciso
especificar um dos tipos a seguir.

Tipo de arquivo Descrição

DIF Cada campo de uma tabela do Visual FoxPro torna-se um vetor (coluna) e cada registro
torna-se uma tupla (linha) em um arquivo DIF (Data Interchange Format) utilizado por VisiCalc.
Será atribuída uma extensão .DIF ao nome do novo arquivo se não for incluída uma extensão em
NomeArquivo.
MOD Utilize a cláusula MOD para exportar para um arquivo do Microsoft Multiplan versão 4.01
formato MOD. Será atribuída uma extensão .MOD se não for incluída uma extensão em
NomeArquivo.
SYLK Um formato de intercâmbio Symbolic Link (utilizado pelo Microsoft Multiplan) no qual
cada campo de uma tabela do Visual FoxPro torna-se uma coluna da planilha e cada registro torna-
se uma linha. Como padrão, nomes de arquivos SYLK não possuem extensão.
WK1 Inclua essa opção para criar uma planilha eletrônica do Lotus 1-2-3 a partir de uma tabela
do Visual FoxPro. É atribuída uma extensão .WK1 ao nome do arquivo de planilha eletrônica para
ser utilizado com o Lotus 1-2-3 revisão 2.x. Cada campo da tabela torna-se uma coluna na nova
planilha eletrônica e cada registro da tabela torna-se uma linha na planilha.
WKS Inclua essa opção para criar uma planilha eletrônica do Lotus 1-2-3 a partir de uma tabela
do Visual FoxPro. É atribuída uma extensão .WKS ao nome do arquivo de planilha eletrônica para
ser utilizado com o Lotus 1-2-3 revisão 1-A. Cada campo da tabela torna-se uma coluna na nova
planilha eletrônica e cada registro torna-se uma linha na planilha.
WR1 Inclua essa opção para criar uma planilha eletrônica do Lotus Symphony a partir de uma
tabela do Visual FoxPro. Uma extensão .WR1 é atribuída à planilha para ser utilizada com o
Symphony versão 1.01. Cada campo da tabela torna-se uma coluna na nova planilha eletrônica e
cada registro torna-se uma linha na planilha.
WRK Inclua essa opção para criar uma planilha eletrônica do Lotus Symphony a partir de uma
tabela do Visual FoxPro. Uma extensão WRK é atribuída ao nome do arquivo de planilha eletrônica
para ser utilizado com o Symphony versão 1.10. Cada campo da tabela torna-se uma coluna na nova
planilha eletrônica e cada registro torna-se uma linha na planilha.
XLS Inclua essa opção para criar uma planilha eletrônica do Microsoft Excel a partir de uma
tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna da planilha
eletrônica e cada registro torna-se uma linha. Será atribuída uma extensão de nome de arquivo .XLS
ao último arquivo de planilha criado, a não ser que você especifique uma extensão diferente.
XL5 Inclua essa opção para criar um arquivo de planilha do Microsoft Excel versão 5.0 a partir
de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna na planilha
eletrônica e cada registro torna-se uma linha. Será atribuída uma extensão .XLS à nova planilha se
você não incluir uma extensão de arquivo.

FIELDS ListaCampos Especifica os campos copiados para o novo arquivo. Se você omitir a
cláusula FIELDS, todos os campos serão copiados para o novo arquivo. Campos Memo e Geral não
são copiados para o novo arquivo, mesmo que seus nomes estejam incluídos na lista de campos.
Escopo Especifica um intervalo de registros a serem copiados para o novo arquivo. Escopo
Especifica um intervalo de registros a serem copiados para o novo arquivo. Apenas os registros
que estejam no intervalo são copiados para o novo arquivo. As cláusulas de escopo são: ALL,
NEXT nRegistros, RECORD nNúmeroRegistro e REST.

Para obter maiores informações sobre cláusulas de escopo, consulte Cláusulas de escopo
. Os comandos que incluem Escopo operam somente na tabela da Área de trabalho ativa.
O escopo padrão para EXPORT são todos os registros.

FOR lExpressão1 Especifica que somente os registros que satisfazem à condição lógica
lExpressão1 são copiados para o novo arquivo. Isso permite extrair os registros não desejados.

Um comando EXPORT ... FOR lExpressão1 terá otimização Rushmore se a lExpressão1 for uma
expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na
cláusula FOR..
Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia
Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor
.

WHILE lExpressão2 Especifica uma condição de acordo com a qual os registros são copiados para
o novo arquivo enquanto a expressão lógica lExpressão2 retornar um valor verdadeiro (.T.).
NOOPTIMIZE Desativa a otimização Rushmore de EXPORT.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

AS nPáginaCódigo Especifica a página de código do arquivo criada por EXPORT. O Visual


FoxPro copia o conteúdo da tabela atualmente selecionada e, à medida que copia os dados,
converte-os automaticamente na página de código especificada para o novo arquivo. Se possível, o
Visual FoxPro marcará o arquivo recém-criado com a página de código especificada.

Caso você especifique um valor para nPáginaCódigo que não seja suportado, o Visual FoxPro irá
gerar uma mensagem de erro. É possível utilizar GETCP( ) para nPáginaCódigo a fim de exibir a
caixa de diálogo Página de código, que permite especificar uma página de código para o arquivo
criado pelo Visual FoxPro.
Caso AS nPáginaCódigo for omitida, não ocorrerá a conversão de página de código. Se possível, o
Visual FoxPro marcará o arquivo recém-criado com a página de código da tabela da qual os dados
são copiados.

Se nPáginaCódigo for 0, não ocorrerá conversão de página e o arquivo recém-criado não será
marcado com uma página de código.
Comentários

Utilize EXPORT para empregar os dados do Visual FoxPro em outros pacotes de software.
Se a tabela da qual você está exportando estiver indexada, o novo arquivo será criado na ordem
indexada.

FCHSIZE( ), função

Altera o tamanho de um arquivo aberto com uma função de arquivo de nível inferior.

Sintaxe

FCHSIZE(nIdentificadorArquivo, nNovoTamanhoArquivo)

Tipos de retorno

Numérico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo cujo tamanho você deseja alterar. O


identificador de arquivo é retornado por FOPEN( ) quando você abre o arquivo ou por FCREATE( )
quando você cria o arquivo. Caso um arquivo seja aberto com FOPEN( ), ele deve ser aberto com
permissão para gravação ou para leitura e gravação para que o seu tamanho possa ser alterado.
nNovoTamanhoArquivo Especifica o novo tamanho do arquivo em bytes. Se
nNovoTamanhoArquivo for menor do que o tamanho do arquivo original, o arquivo será truncado.
Se nNovoTamanhoArquivo for maior do que o tamanho do arquivo original, o tamanho do arquivo
será aumentado.

Comentários

Utilize a função FCHSIZE( ) para aumentar o tamanho do arquivo ou para truncá-lo após um byte
especificado.

Quando aumenta-se o tamanho de um arquivo, o Visual FoxPro aloca setores para este arquivo na
unidade em que ele está aberto. Visto que FCHSIZE( ) não inicializa o novo espaço do arquivo, este
espaço poderá conter dados anteriores. Certifique-se de gerenciar o novo espaço do arquivo.

É retornado o tamanho final do arquivo em bytes. O Visual FoxPro retornará –1 caso FCHSIZE( )
não consiga alterar o tamanho do arquivo se, por exemplo, for especificado um identificador de
arquivo inválido por causa de espaço insuficiente no disco ou se o arquivo for somente para leitura.

Dica Pode-se utilizar esta função para truncar um arquivo para o comprimento 0.

FCLOSE( ), função

Descarrega e fecha um arquivo ou uma porta de comunicação aberta com uma função de arquivo de
nível inferior.

Sintaxe

FCLOSE(nIdentificadorArquivo)
Tipos de retorno

Lógico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo de nível inferior a ser fechado. O


identificador de arquivo numérico é retornado quando você cria o arquivo com FCREATE( ) ou
abre o arquivo com FOPEN( ).

Comentários

Caso o fechamento do arquivo seja bem-sucedido, FCLOSE( ) retornará verdadeiro (.T.) e liberará
o identificador de arquivo. Caso não seja possível fechar o arquivo, FCLOSE( ) retornará falso (.F.).

A função CLOSE ALL também fecha arquivos de nível inferior.


FCOUNT( ), função

Retorna o número de campos em uma tabela.

Sintaxe

FCOUNT([nÁreaTrabalho| cAliasTabela])

Tipos de retorno

Numérico

Argumentos

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FCOUNT( ) retorna o número
de campos.

A função FCOUNT( ) retornará 0 caso não esteja aberta nenhuma tabela na Área de trabalho
especificada.

cAliasTabela Especifica o alias da tabela para a qual FCOUNT( ) retorna o número de campos.

O Visual FoxPro gerará uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

Se você omitir os argumentos opcionais, FCOUNT( ) retornará o número de campos da tabela


aberta na Área de trabalho atualmente selecionada.

FCOUNT( ), exemplo da função

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, número de campos na tabela Customer
? FCOUNT('EMPLOYEE') && Exibe 22, número de campos na tabela Employee

FCREATE( ), função

Cria e abre um arquivo de nível inferior.

Sintaxe

FCREATE(cNomeArquivo [, nAtributoArquivo])

Tipos de retorno

Numérico

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser criado. Pode-se incluir um designador de


unidade e um caminho com o nome do arquivo. Caso não seja incluído um designador de unidade
ou um caminho, o arquivo será criado no diretório padrão.

Observação O Visual FoxPro não reconhecerá um nome de caminho de maneira apropriada se um


nome de diretório ou disco contiver um ponto de exclamação (!).

nAtributoArquivo Especifica os atributos do arquivo criado. A tabela a seguir lista os atributos de


arquivo que podem ser especificados.

nAtributoArquivo Atributos de arquivo


0 (Padrão) Leitura e gravação
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 não poderá ser gravado
com FPUTS( ) ou FWRITE( ) até que o arquivo seja fechado e aberto novamente.
Utilize DISPLAY STATUS ou LIST STATUS para exibir ou imprimir informações sobre arquivos
criados e abertos com FCREATE( ). DISPLAY STATUS e LIST STATUS fornecem as
informações a seguir sobre cada arquivo aberto ou criado com uma função de arquivo de nível
inferior:

· A unidade, o diretório e o nome do arquivo


· O número do identificador de arquivo
· A posição do ponteiro do arquivo
· Os atributos de leitura e gravação

Comentários

Caso já exista um arquivo com o nome especificado, ele será sobrescrito sem aviso.

A função FCREATE( ) atribui ao arquivo um número de identificador de arquivo que pode ser
utilizado para identificá-lo em outras funções de arquivo de nível inferior do Visual FoxPro.
FCREATE( ) retorna o número do identificador de arquivo quando o arquivo é criado ou retorna –1
caso não seja possível criar o arquivo.

Dica Atribua o número do identificador de arquivo a uma variável de memória para que você
possa acessar o arquivo pela variável de memória em outras funções de arquivo de nível inferior.

Você não pode abrir uma porta de comunicação com FCREATE( ). Para tal, utilize FOPEN( ).

FCREATE( ), exemplo da função

IF FILE('errors.txt') && O arquivo existe?


gnErrFile = FOPEN('errors.txt',12) && Caso exista, abra leitura e gravação
ELSE
gnErrFile = FCREATE('errors.txt') && Caso contrário, crie um
ENDIF
IF gnErrFile < 0 && Verifica erros no arquivo de abertura
WAIT 'não é possível abrir ou criar um arquivo de saída' WINDOW NOWAIT
ELSE && Se não houver erros, grave no arquivo
=FWRITE(gnErrFile , 'Informação de erro a ser gravada aqui')
ENDIF
=FCLOSE(gnErrFile ) && Fecha o arquivo

IF gnErrFile > 0
MODIFY FILE errors.txt NOWAIT && Abre o arquivo na janela de edição
ENDIF

FDATE( ), função

Retorna a data da última modificação de um arquivo.


Sintaxe

FDATE(cNomeArquivo)

Tipos de retorno

Data

Argumentos

cNomeArquivo Especifica o nome do arquivo cuja data da última modificação é retornada por
FDATE( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se não houver
nenhum caminho incluído com o nome do arquivo, o Visual FoxPro irá procurar o arquivo no
diretório e pasta padrão e nos diretórios e pastas especificados por SET PATH.

Comentários

A data retornada por FDATE( ) é atribuída ao arquivo pelo sistema operacional. O formato do valor
retornado por FDATE( ) é determinado pelas definições atuais de SET DATE, SET MARK e SET
CENTURY.

Utilize LUPDATE( ) para determinar a data da última modificação para uma tabela aberta.

FDATE( ), exemplo da função

O exemplo a seguir utiliza FDATE( ) para exibir a data da última modificação em FOXUSER.DBF,
arquivo de recursos do Visual FoxPro.

? FDATE('FOXUSER.DBF') && Exibe a data da última modificação


FEOF( ), função

Determina se o ponteiro do arquivo está ou não posicionado no fim de um arquivo.

Sintaxe

FEOF(nIdentificadorArquivo)

Tipos de retorno

Lógico

Argumentos

nIdentificadorArquivo Especifica o número do identificador do arquivo no qual deve ser verificada


a condição de fim de arquivo. FEOF( ) sempre retornará verdadeiro (.T.) se você especificar um
número de identificador de arquivo de uma porta de comunicação aberta com FOPEN( ).

Comentários

Esta função de arquivo de nível inferior retornará verdadeiro (.T.) se o ponteiro do arquivo estiver
posicionado no fim de um arquivo aberto com uma função de arquivo de nível inferior. FEOF( )
retornará falso (.F.) se o ponteiro não estiver no fim do arquivo.

FEOF( ), exemplo da função

*** Abre o arquivo test.txt ***

gnFileHandle = FOPEN('test.txt')

*** Move o ponteiro do arquivo para BOF ***

gnPosition = FSEEK(gnFileHandle, 0)

*** Se o ponteiro do arquivo estiver em BOF e EOF, o arquivo estará vazio ***
*** Caso contrário o arquivo deve conter alguma coisa ***
IF FEOF(gnFileHandle)
WAIT WINDOW 'Este arquivo está vazio!' NOWAIT
ELSE
WAIT WINDOW 'Este arquivo contém alguma coisa!' NOWAIT
ENDIF
= FCLOSE(gnFileHandle)

FERROR( ), função

Retorna um número correspondente ao erro na função de arquivo de nível inferior mais recente.

Sintaxe

FERROR( )

Tipos de retorno

Numérico

Comentários

A função FERROR( ) retornará 0 caso a função de arquivo de nível inferior seja executada com
sucesso. Um valor positivo será retornado caso a execução da função seja mal-sucedida. A tabela a
seguir lista o número de cada erro retornado por FERROR( ) e a causa do erro.

Número do erro Causa do erro

2 Arquivo não localizado


4 Número excessivo de arquivos abertos (identificadores de arquivo esgotados)
5 Acesso negado
6 Identificador de arquivo inválido fornecido
8 Memória esgotada
25 Erro na pesquisa (impossível pesquisar antes do início de um arquivo)
29 Disco cheio
31 Erro na abertura do arquivo

FFLUSH( ), função

Descarrega no disco um arquivo aberto com uma função de nível inferior.

Sintaxe

FFLUSH(nIdentificadorArquivo)

Tipos de retorno

Lógico

Argumentos
nIdentificadorArquivo Especifica o identificador do arquivo a ser descarregado no disco.

Comentários

A função FFLUSH( ) também libera a memória utilizada pelo buffer do arquivo.

A função FLUSH é diferente de FFLUSH( ). FLUSH não opera em arquivos de nível inferior, mas
em tabelas e índices.

FFLUSH( ), exemplo da função

O exemplo a seguir abre e grava um arquivo denominado INPUT.DAT. Depois de gravar as


primeiras duas seqüências, o programa descarrega os buffers para garantir que as seqüências sejam
gravadas no disco. Em seguida, ele grava as duas próximas seqüências, descarrega os buffers
novamente e fecha o arquivo.

IF FILE('input.dat')
gnTestFile = FOPEN('input.dat',2)
ELSE
gnTestFile = FCREATE('input.dat')
ENDIF
gnIOBytes = FWRITE(gnTestFile,'Testar saída')
gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nível inferior')
glFlushOk = FFLUSH(gnTestFile)
gnIOBytes = FWRITE(gnTestFile,'Testar saída2')
gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nível inferior')
glFlushOk = FFLUSH(gnTestFile)
glCloseOk = FCLOSE(gnTestFile)
MODIFY FILE input.dat NOWAIT NOEDIT

FGETS( ), função
Retorna uma série de bytes de um arquivo ou de uma porta de comunicação aberta com uma função
de arquivo de nível inferior até localizar um retorno de carro.

Sintaxe

FGETS(nIdentificadorArquivo [, nBytes])

Tipos de retorno

Caractere

Argumentos

nIdentificadorArquivo Especifica o identificador de arquivo numérico da porta de comunicação ou


do arquivo a partir do qual FGETS( ) retorna dados.

nBytes Especifica o número de bytes que FGETS( ) retorna. FGETS( ) retornará nBytes bytes, a
menos que antes seja localizado um retorno de carro. FGETS( ) retornará os dados entre a posição
inicial do ponteiro do arquivo e o retorno de carro, caso seja localizado um retorno de carro dentro
dos nBytes bytes.

Se você omitir nBytes, FGETS( ) retornará um máximo de 254 bytes como padrão.

Comentários

Você pode ler linha por linha de um arquivo emitindo-se uma série de FGETS( ).

A função FGETS( ) retorna uma série de bytes como uma seqüência de caracteres. O retorno dos
dados é feito a partir da posição atual do ponteiro do arquivo e continua até localizar um retorno de
carro. Em seguida, o ponteiro do arquivo é posicionado no byte seguinte ao retorno de carro. O
retorno de carro não é retornado como parte da seqüência e as alimentações de linha são ignoradas.

FGETS( ), exemplo da função

*** TEST.TXT deve existir ***


STORE FOPEN('test.txt') TO gnFileHandle && Abre o 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 não esteja
gcString = FGETS(gnFileHandle, gnEnd) && Armazene o conteúdo
? gcString
ENDIF
= FCLOSE(gnFileHandle) && Fecha o arquivo
FIELD( ), função

Retorna o nome de um campo de uma tabela ao qual é feita referência pelo número.

Sintaxe

FIELD(nNúmeroCampo [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

nNúmeroCampo Especifica o número do campo. Caso nNúmeroCampo seja 1, será retornado o


nome do primeiro campo da tabela; caso nNúmeroCampo seja 2, será retornado o nome do segundo
campo, e assim sucessivamente. A seqüência vazia será retornada se nNúmeroCampo for maior do
que o número de campos. Os nomes dos campos são retornados em letras maiúsculas.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FIELD( ) retorna os nomes dos
campos.

A função FIELD( ) retornará a seqüência vazia caso não esteja aberta nenhuma tabela na Área de
trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FIELD( ) retorna os nomes dos campos.

O Visual FoxPro gerará uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

Se você omitir os argumentos opcionais, FIELD( ) retornará os nomes dos campos da tabela aberta
na Área de trabalho atualmente selecionada.

FIELD( ), exemplo da função

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
FOR gnCount = 1 TO FCOUNT( ) && Realiza um loop para números de campos
? FIELD(gnCount) && Exibe cada campo
NEXT
?
? 'Número de campos: ' + ALLTRIM(STR(gnCount -1))

FILE( ), função

Retorna verdadeiro (.T.), se o arquivo especificado for encontrado em disco.

Sintaxe

FILE(cNomeArquivo)

Tipos de retorno

Lógico

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser localizado. cNomeArquivo deve incluir a


extensão do arquivo. O Visual FoxPro procura no diretório ou pasta padrão pelo arquivo. Se o
arquivo não for encontrado nestes locais, o Visual FoxPro procura pelo próprio caminho
estabelecido com SET PATH.

Você pode incluir um caminho ao nome do arquivo para procurar por um arquivo em um diretório
ou em uma unidade diferentes dos atuais.

Comentários

Utilize FILE( ) para localizar um arquivo em disco. FILE( ) retorna (.T.) se o arquivo puder ser
localizado; caso contrário FILE( ) retorna (.F.) falso.
FILE( ), exemplo da função

O exemplo a seguir exibe uma mensagem indicando se o arquivo de recursos do Visual FoxPro está
presente na pasta ou diretório de inicialização do Visual FoxPro.

SET PATH TO HOME( )


CLEAR
IF FILE('foxuser.dbf')
WAIT WINDOW 'Arquivo de recursos do Visual FoxPro presente'
ELSE
WAIT WINDOW 'Arquivo de recursos do Visual FoxPro não presente'
ENDIF

FILTER( ), função

Retorna a expressão de filtragem de tabela especificada em SET FILTER.

Sintaxe

FILTER([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FILTER( ) retorna a expressão
de filtragem.

FILTER( ) retornará a seqüência vazia caso nenhuma tabela esteja aberta na Área de trabalho
especificada.
cAliasTabela Especifica o alias da tabela para a qual FILTER( ) retorna a expressão de filtragem.

O Visual FoxPro irá gerar uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

Se você omitir os argumentos opcionais, FILTER( ) retornará a expressão de filtragem da tabela


aberta na Área de trabalho atualmente selecionada. Para obter maiores informações sobre como
criar um filtro, consulte ” SET FILTER”.

FILTER( ), exemplo da função

CLOSE 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 expressão de filtro
STORE FILTER('customer') TO gcOldFilter && Grava a expressão de filtro
SET FILTER TO country = 'USA'
? FILTER( ) && Exibe a expressão de filtro
SET FILTER TO &gcOldFilter && Restaura a expressão de filtro
? FILTER( ) && Exibe a expressão de filtro

LIST FIELDS cust_id, contact && Demonstra a condição de filtro

FKLABEL( ), função

Retorna o nome da tecla de função (F1, F2, F3 ...) a partir do número da tecla de função
correspondente.

Sintaxe

FKLABEL(nNúmeroTeclaFunção)
Tipos de retorno

Caractere

Argumentos

nNúmeroTeclaFunção Especifica o número da tecla de função. O valor de nNúmeroTeclaFunção


deve estar entre 0 e o número de teclas de função menos 1. FKLABEL( ) retornará a seqüência
vazia se nNúmeroTeclaFunção for maior do que o número de teclas de função menos 1. O número
de teclas de função pode ser determinado com FKMAX( ).

Comentários

Pode-se programar teclas de função com SET FUNCTION.

O valor retornado por FKLABEL( ) é afetado por SET COMPATIBLE. Quando COMPATIBLE
for definido para FOXPLUS (padrão), FKLABEL( ) retorna as teclas de função. Quando
COMPATIBLE for definido para DB4, FKLABEL( ) retorna a tecla de função e as combinações de
teclas de função (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).

FKLABEL( ), exemplo da função

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função
? FKLABEL(nCount) && Exibe as teclas programáveis de função
ENDFOR
SET COMPATIBLE ON

?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função
? FKLABEL(nCount) && Exibe as teclas programáveis de função
ENDFOR
FKMAX( ), função

Retorna o número de teclas de função ou combinações de teclas de função programáveis em seu


teclado.

Sintaxe

FKMAX( )

Tipos de retorno

Numérico

Comentários

O valor retornado por FKMAX( ) é afetado por SET COMPATIBLE. Quando SET COMPATIBLE
é definido para FOXPLUS (padrão), FKMAX( ) retorna o número de teclas de função. Quando SET
COMPATIBLE é definido para DB4, FKMAX( ) retorna o número de teclas de função e
combinações de teclas de função (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).

FKMAX( ), exemplo da função

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função
? FKLABEL(nCount) && Exibe as teclas programáveis de função
ENDFOR
SET COMPATIBLE ON

?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função
? FKLABEL(nCount) && Exibe as teclas programáveis de função
ENDFOR
FLOCK ( ), função

Tenta bloquear a tabela atual ou a tabela especificada.

Sintaxe

FLOCK([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho Especifica a área de trabalho da tabela que FLOCK( ) tenta bloquear.

A função FLOCK( ) retornará falso (.F.) caso nenhuma tabela esteja aberta na área de trabalho
especificada.

cAliasTabela Especifica o alias da tabela que FLOCK( ) tenta bloquear.

O Visual FoxPro irá gerar uma mensagem de erro se você especificar um alias de tabela
inexistente.

Comentários

A função FLOCK( ) retornará verdadeiro (.T.) se o bloqueio da tabela for bem-sucedido e retornará
falso (.F.) se a tabela ou um registro da tabela já estiver bloqueado por outro usuário.

Se você omitir os argumentos opcionais, FLOCK( ) tentará bloquear a tabela aberta na área de
trabalho atualmente selecionada.
Observação Caso a função FLOCK( ) não consiga bloquear uma tabela, ela retornará falso (.F.) e
não irá gerar um erro. Como resultado, não será possível utilizar FLOCK( ) para disparar uma rotina
ON ERROR.

Quando uma tabela está bloqueada, o usuário que a bloqueou tem acesso a ela para leitura e
gravação. Os outros usuários da rede têm acesso à tabela somente para leitura. Para obter
informações sobre como bloquear uma tabela e impedir que outros usuários tenham acesso a ela,
consulte SET EXCLUSIVE e USE.

A tabela permanece bloqueada até que o usuário altere isto. É possível desbloquear a tabela
emitindo UNLOCK, fechando-a ou saindo do Visual FoxPro. As tabelas podem ser fechadas com
USE, CLEAR ALL ou CLOSE DATABASES.

Como padrão, a função, FLOCK( ) tenta bloquear a tabela uma vez. Utilize SET REPROCESS para
repetir automaticamente o bloqueio de uma tabela caso a primeira tentativa falhe. SET
REPROCESS determina o número de tentativas de bloqueio ou o período de tempo durante o qual
são feitas essas tentativas, caso a inicial seja malsucedida. Para obter maiores informações, consulte
SET REPROCESS.

É possível estabelecer relações entre duas ou mais tabelas com SET RELATION. A colocação de
um bloqueio de arquivo em uma tabela relacionada a uma ou mais tabelas não coloca um bloqueio
de arquivo nas tabelas relacionadas. Você deve colocar os bloqueios nelas e removê-los
explicitamente.

Para obter maiores informações sobre bloqueio de registro e arquivo e sobre como compartilhar
tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado,” no Guia do
desenvolvedor.

FLOCK( ), exemplo de função

CLOSE 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( )
*** Inicilização de produto novo ***
REPLACE ALL in_stock WITH 0.00
REPLACE ALL on_order WITH 0.00
WAIT 'Inicialização completa' WINDOW NOWAIT
ELSE
*** Arquivos estão bloqueados, avisar usuário ***
WAIT WINDOW 'Impossível abrir arquivos de produtos; tente novamente mais tarde!'
NOWAIT

ENDIF
BROWSE FIELDS in_stock, on_order && Exibe tabela newprods
USE
ERASE novoprods.dbf

FLOOR( ), função

Retorna o número inteiro mais próximo que seja menor ou igual à expressão numérica especificada.

Sintaxe

FLOOR(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual FLOOR( ) retorna o número inteiro mais
próximo que seja menor ou igual à expressão numérica.

FLOOR( ), exemplo de função

STORE 10.9 TO 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 modificações feitas em um índice ou em uma tabela.

Sintaxe

FLUSH
Comentários

O comando FLUSH assegura que as modificações feitas em todas as tabelas e índices abertos serão
salvas no disco.

O Visual FoxPro salva automaticamente as alterações no disco quando:

· Você fecha uma tabela com USE, CLOSE ALL ou CLOSE DATABASES. Apenas as
informações do arquivo ou arquivos fechados serão descarregadas no disco.
· Você desbloqueia um registro ou um arquivo. Apenas as informações do registro ou do
arquivo desbloqueado serão descarregadas no disco.

FONTMETRIC( ), função

Retorna os atributos das fontes do sistema operacional atualmente instaladas.

Sintaxe

FONTMETRIC(nAtributo [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])

Tipos de retorno

Numérico

Argumentos

nAtributo Determina atributo de fonte que FONTMETRIC( ) retorna. Se você omitir cNomeFonte,
nTamanhoFonte e cEstiloFonte, FONTMETRIC( ) retornará o atributo da fonte atual da janela de
saída ativa.

A tabela a seguir lista valores para nAtributo e os atributos de fonte correspondentes retornados.

NAtributo Atributo

1 Altura do caractere em 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 Espaços (entre linhas) em pixels
5 Espaços extras em pixels
6 Largura média do caractere em pixels
7 Largura máxima do caractere em pixels
8 Peso da fonte.
9 Itálico (0 =não, diferente de zero =sim)
10 Sublinhado (0 = não, diferente de zero = sim)
11 Riscado (0 = não, diferente de zero = sim)
12 Primeiro caractere definido na fonte
13 Último caractere definido na fonte
14 Caractere padrão (substituído por caracteres não contidos na fonte)
15 Caractere de quebra de texto.
16 Pitch e família
17 Conjunto de caracteres
18 Projeção(largura extra adicionada)
19 Aspecto horizontal para dispositivo de fonte
20 Aspecto vertical para dispositivo de fonte

* Estes atributos não estão disponíveis no Visual FoxPro para Macintosh e retornam sempre 0.
Para obter maiores informações sobre os valores numéricos retornados por FONTMETRIC( ),
consulte a função TEXTMETRIC no Guia de Referência do Programador do Microsoft Windows.

cNomeFonte Especifica o nome de uma fonte instalada.


nTamanhoFonte Especifica o tamanho em pontos de uma fonte especificada com cNomeFonte.
cEstiloFonte Especifica um código de estilo de fonte para a fonte especificada com cNomeFonte.
Se você omitir cEstiloFonte, FONTMETRIC( ) retornará o atributo do estilo de fonte Normal.

cEstiloFonte pode ser um caractere ou uma combinação de caracteres listados na tabela de estilos de
fonte abaixo. Por exemplo, a combinação BI especifica o estilo de fonte Negrito Itálico.

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
O Delineado
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Comentários

A função FONTMETRIC( ) retorna atributos da fonte atual da janela de saída ativa. Pode-se
utilizar. WFONT( ) para determinar a fonte da janela atual.
Para obter maiores informações sobre como instalar ou remover fontes, consulte o capítulo “Painel
de Controle” no Guia do Usuário do Microsoft Windows.
FOPEN( ), função

Abre um arquivo ou porta de comunicação para uso com funções de arquivo de baixo nível.

Sintaxe

FOPEN(cNomeArquivo [, nAtributo])

Tipos de retorno

Numérico

Argumentos

cNomeArquivo Especifica o nome do arquivo ou porta de comunicação a ser aberta. Se


cNomeArquivo é um nome de arquivo, pode incluir um caminho para arquivos abertos nos
diretórios, pastas, unidades de disco ou volumes atualmente inexistentes no caminho de procura do
Visual FoxPro. Se o caminho não está incluído, o Visual FoxPro procura pelo arquivo nos locais
abaixo:

· Diretório ou pasta padrão


· Caminho estabelecido com SET PATH

Observação O Visual FoxPro poderá não reconhecer o caminho ou nome da propriedade se o disco
ou nome do diretório contiver um ponto de exclamação (!).

nAtributo Especifica privilégios de leitura e gravação ou um esquema de utilização de buffer para


o arquivo que você abriu. A tabela a seguir lista cada número incluído em nAtributo e os privilégios
de leitura e gravação do arquivo e esquema de utilização de buffer que ele estabelece.

nAtributo Privilégio de leitura e gravação Utilizando buffer/não utilizando buffer

0 (Padrão) Somente para leitura Utilizando buffer


1 Somente para gravação Utilizando buffer
2 Leitura e gravação Utilizando buffer
10 Somente para leitura Não utilizando buffer
11 Somente para gravação Não utilizando buffer
12 Leitura e gravação Não utilizando buffer

Se nAtributo não estiver incluído ou se nAtributo resultar em 0, o arquivo será aberto somente para
leitura e utilizará buffer. As portas de comunicação devem estar sempre abertas sem uso do buffer.
Observação O Visual FoxPro não reconhecerá apropriadamente um caminho se um nome de disco
ou diretório contiver um ponto de exclamação (!).

Comentários

Se FOPEN( ) conseguir abrir o arquivo ou a porta de comunicação, o número do identificador do


arquivo ou da porta será retornado. Caso contrário, FOPEN( ) retornará o valor –1.

Dica Atribua o número do identificador de arquivo a uma variável de memória para que você
possa acessar o arquivo ou a porta de comunicação pela variável de memória em outras funções de
arquivo de baixo nível.

As informações abaixo sobre arquivos abertos com FOPEN( ) podem ser exibidas ou enviadas para
uma impressora utilizando-se DISPLAY STATUS ou LIST STATUS.

· Unidade de disco e diretório, ou volume e pasta e nome de arquivo


· Número do identificador de arquivo
· Posição do ponteiro do arquivo
· Atributos de leitura e gravação

FOPEN( ), exemplo da função

IF FILE('errors.txt') && Existe o arquivo?


gnErrFile = FOPEN('errors.txt',12) && Caso sim, abrir leitura e gravação
ELSE
gnErrFile = FCREATE('errors.txt') && Caso não, criá-lo
ENDIF
IF gnErrFile < 0 && Verificar erros na abertura de arquivos
WAIT 'Impossível abrir ou criar arquivo de saída' WINDOW NOWAIT
ELSE && Caso não haja erro, gravar o arquivo
=FWRITE(gnErrFile, 'Informação de erro a ser gravada aqui')
ENDIF
=FCLOSE(gnErrFile) && Fechar arquivo

MODIFY FILE errors.txt NOWAIT && Abrir arquivo na janela editar


FOR ... ENDFOR, comando
Executa um conjunto de comandos, um determinado número de vezes.

Sintaxe

FOR Var = nValorInicial TO nValorFinal [STEP nIncremento]


Comandos
[EXIT]
[LOOP]
ENDFOR | NEXT

Argumentos

Var Especifica uma variável ou um elemento de matriz que atue como contador. Não é necessário
que a variável ou o elemento de matriz já exista antes da execução de FOR ... ENDFOR.

nValorInicial TO nValorFinal nValorInicial é o valor inicial do contador e nValorFinal é o valor


final do contador.

STEP nIncremento nIncremento é o valor incrementado ou decrementado do contador. Caso


nIncremento seja negativo, o contador será decrementado. Se você omitir STEP, o contador será
incrementado de 1.

Comandos Especifica os comando do Visual FoxPro a serem executados. Comandos pode incluir
qualquer número de comandos.

EXIT Transfere o controle do loop FOR ... ENDFOR para o comando logo depois de ENDFOR.
EXIT pode ser colocado em qualquer parte entre FOR e ENDFOR.

LOOP Retorna o controle diretamente para a cláusula FOR sem executar as instruções entre LOOP
e ENDFOR. O contador é incrementado ou decrementado como se ENDFOR tivesse sido atingido.
LOOP pode ser colocado em qualquer parte entre FOR e ENDFOR.

Comentários

Utiliza-se uma variável de memória ou um elemento de matriz como um contador para especificar
quantas vezes os comandos do Visual FoxPro dentro do loop FOR ... ENDFOR são executados.

Os comandos do Visual FoxPro depois de FOR são executados até ENDFOR ou NEXT ser
atingido. Em seguida, o contador NomeVarMem é incrementado do valor de nIncremento. Se você
omitir a cláusula STEP, o contador será incrementado em 1. Em seguida, o contador é comparado
ao nValorFinal. Se ele for menor ou igual ao nValorFinal, os comandos depois da cláusula FOR
serão executados novamente. Se for maior que o nValorFinal, o loop FOR ... ENDFOR será
abandonado e a execução do programa continuará com o primeiro comando depois de ENDFOR ou
NEXT.
Observação Os valores de nValorInicial, nValorFinal e nIncremento são, inicialmente, somente
para leitura. No entanto, uma alteração no valor do contador NomeVarMem dentro do loop afeta o
número de vezes que o loop é executado.

Se o valor de nIncremento for negativo e o valor inicial nValorInicial for maior que o valor final
nValorFinal, o contador será decrementado a cada execução do loop.

FOR ... ENDFOR, exemplos do comando

No exemplo 1, os números de 1 a 10 são exibidos.


P exemplo 2 utiliza variáveis de memória para valores os inicial, final e STEP para exibir tudo,
inclusive registros pares de 2 a 10 em customer.

* Exemplo 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 coleção do Visual
FoxPro.

Sintaxe

FOR EACH Var IN Group


Comandos
[EXIT]
[LOOP]
ENDFOR | NEXT [Var]

Definição

Var Uma variável ou elemento de matriz utilizado para interagir por meio dos elementos de
Grupo.

Grupo Uma matriz do Visual FoxPro, uma matriz OLE, uma coleção do Visual FoxPro ou uma
coleção OLE.

Comandos Especifica os comandos Visual FoxPro a serem executados para cada elemento em
Grupo. Comandos pode incluir qualquer quantidade de comandos.

EXIT Transfere o controle do loop FOR EACH ... ENDFOR para o comando imediatamente após
ENDFOR. Pode-se colocar EXIT em qualquer parte entre FOR EACH e ENDFOR.

LOOP Retorna o controle diretamente para a cláusula FOR EACH sem executar as instruções
entre LOOP e ENDFOR. LOOP pode ser colocado em qualquer parte entre FOR EACH e
ENDFOR.
Exemplos

O exemplos a seguir demonstram como FOR EACH é utilizado para enumerar elementos em uma
matriz do Visual FoxPro, matriz OLE e um conjunto de botões de comando atribuídos em uma
matriz de objeto.
No exemplo a seguir, uma matriz variável do Visual FoxPro é criada e FOR EACH é utilizado para
exibir conteúdos para cada elemento da matriz.

DIMENSION cMyArray(3)
cMyArray[1] = ‘A’
cMyArray[2] = ‘B’
cMyArray[3] = ‘C’

FOR EACH cMyVar IN cMyArray


? cMyVar
ENDFOR

No exemplo a seguir, uma instância do Microsoft Excel é criada e um novo livro é adicionado. FOR
EACH é utilizado para exibir o nome de cada planilha na pasta de trabalho. Este exemplo requer
que o Microsoft Excel seja instalado corretamente na máquina onde o exemplo está sendo
executado.

oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD

FOR EACH oMyVar IN oExcel.sheets


? oMyVar.name
NEXT oMyVar

No exemplo a seguir, cinco botões de comando são colocados em um formulário. FOR EACH é
utilizado para exibir os botões em formulários e especifica legendas, estilos de fontes e posições de
cada botão.

PUBLIC 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( ), função

Retorna a expressão de filtragem de índice de um arquivo de índice de entrada única (.IDX) aberto
ou uma marca de índice.

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

Se você não incluir nenhum dos argumentos opcionais, FOR( ) retornará a expressão de filtragem
de índice para a marca de índice ou o arquivo de índice mestre. Se uma marca de índice ou um
arquivo de índice mestre não estiver em andamento (por exemplo, você emitiu SET ORDER TO
para colocar a tabela na ordem de registro natural), FOR( ) retornará a seqüência vazia.

nNúmeroÍndice Especifica o arquivo ou a marca de índice para o qual a expressão de filtragem é


retornada. FOR( ) retorna expressões de filtragem na ordem a seguir, visto que nNúmeroÍndice
aumenta de 1 ao número total de marcas de índice composto independente e estrutural e de arquivos
de entrada única abertos:
1. Primeiramente, são retornadas as expressões de filtragem de arquivos de índice de entrada
única (caso algum esteja aberto). A ordem em que os arquivos de índice de entrada única são
incluídos em USE ou SET INDEX determinará a ordem de retorno das expressões de filtragem.
2. Em seguida, são retornadas as expressões de filtragem para cada marca no índice composto
estrutural (caso haja algum). As expressões de filtragem são retornadas das marcas na ordem em
que estas são criadas no índice estrutural.

3. Por último, são retornadas as expressões de filtragem para cada marca em qualquer índice
composto independente aberto. As expressões de filtragem são retornadas das marcas na ordem em
que estas são criadas nos índices compostos independentes.

A seqüência vazia será retornada se uma marca de índice ou um índice for criado sem a cláusula
FOR ou se nNúmeroÍndice for maior do que o número total de marcas de índice composto
independente e estrutural e de arquivos de entrada única abertos.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FOR( ) retorna as expressões de
filtragem de índice.

A função FOR( ) retornará a seqüência vazia caso nenhuma tabela esteja aberta na Área de trabalho
especificada.

cAliasTabela Especifica o alias da tabela para a qual FOR( ) retorna as expressões de filtragem de
índice.

O Visual FoxPro irá gerar uma mensagem de erro se você especificar um alias de tabela
inexistente.

Comentários

É possível criar índices filtrados no Visual FoxPro. Se você incluir a cláusula opcional FOR
lExpressão em INDEX, o arquivo de índice atuará como um filtro na tabela. Somente os registros
correspondentes à expressão de filtragem lExpressão estarão disponíveis para exibição e acesso.
São criadas chaves de índice no arquivo de índice apenas para os registros correspondentes à
expressão de filtragem.

USE e SET INDEX suportam uma lista de nomes de arquivo de índice, permitindo que se abra
vários arquivos de índice para uma tabela. Qualquer combinação de nomes de arquivo de índice de
entrada única e de nomes de arquivo de índice composto independente ou estrutural pode ser
incluída na lista de nomes de arquivo de índice. A função FOR( ) é idêntica a SYS(2021), sendo
fornecida para manter a compatibilidade com o dBASE IV.
FOUND( ), função

Retornará verdadeiro (.T.) se CONTINUE, FIND, LOCATE ou SEEK obtiver êxito.

Sintaxe

FOUND([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FOUND( ) retorna um valor
indicando o êxito do último CONTINUE, FIND, LOCATE ou SEEK.

FOUND( ) retornará falso (.F.) se uma tabela não for aberta na Área de trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FOUND( ) retorna um valor indicando o êxito
do último CONTINUE, FIND, LOCATE ou SEEK.

O Visual FoxPro gera uma mensagem de erro se for especificado um alias de tabela que não existe.

Comentários

FOUND( ) retorna um valor lógico que indica se o CONTINUE, FIND, LOCATE ou SEEK
executado mais recentemente obteve êxito ou se o ponteiro do registro foi movido em uma tabela
relacionada. FOUND( ) retornará verdadeiro (.T.) se a procura obtiver êxito; caso contrário,
FOUND( ) retornará falso (.F.).
Se você omitir os argumentos opcionais, FOUND( ) retornará um valor indicando o êxito do último
CONTINUE, FIND, LOCATE ou SEEK para a tabela aberta na Área de trabalho selecionada
atualmente.

Dica Esta função pode ser utilizada para determinar se uma tabela filho tem algum registro
correspondente ao registro pai.

FOUND( ), exemplo da função

No exemplo a seguir, todos os clientes da GERMANY foram contados.

SET TALK 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( ), função

Grava uma seqüência de caracteres, um retorno de carro e uma alimentação de linha em um arquivo
ou em uma porta de comunicação aberta com uma função de arquivo de baixo nível.

Sintaxe

FPUTS(nIdentificadorArquivo, cExpressão [, nCaracteresGravados])

Tipos de retorno

Numérico

Argumentos

nIdentificadorArquivo Especifica o número do identificador do arquivo ou da porta de


comunicação em que FPUTS( ) grava dados.

cExpressão Especifica a expressão de caracteres que FPUTS( ) grava no arquivo ou na porta.

nCaracteresGravados Especifica o número de caracteres em cExpressão para gravar no arquivo ou


na porta.

FPUTS( ) grava toda a expressão de caracteres cExpressão para o arquivo ou porta se


nCaracteresGravados for omitido. Se você incluir nCaracteresGravados, os caracteres de
nCaracteresGravados serão gravados em um arquivo ou porta. Se nCaracteresGravados for menor
que o número de caracteres em cExpressão, somente os caracteres de nCaracteresGravados serão
gravados no arquivo ou na porta. Toda a cExpressão é gravada em arquivos ou portas, se
nCaracteresGravados for igual ou maior que o número de caracteres em cExpressão.

Comentários

FPUTS( ) retornará o número de bytes gravados para o arquivo ou porta. 0 será retornado se, por
algum motivo, FPUTS( ) não puder gravar no arquivo ou porta.
FREAD( ), função

Retorna um número especificado de bytes a partir de um arquivo ou de uma porta de comunicação


aberta com uma função de nível inferior.

Sintaxe

FREAD(nIdentificadorArquivo, nBytes)

Tipos de retorno

Caractere

Argumentos

nIdentificadorArquivo Especifica o número do identificador de arquivo para o arquivo ou a porta


de comunicação a partir de onde FREAD( ) retorna os dados.

nBytes Especifica o número de bytes retornados por FREAD( ). FREAD( ). FREAD( ) retorna os
dados começando na posição atual do ponteiro do arquivo e prossegue até retornar nBytes bytes ou
encontrar o fim do arquivo.

FREAD( ), exemplo de função


O exemplo a seguir utiliza FREAD( ) para exibir o conteúdo de um arquivo. Se o arquivo estiver
vazio, uma mensagem será exibida.

* TEST.TXT deve existir -- você pode criar este arquivo


* utilizando Notepad.

Local gnFileHandle,nSize,cString
gnFileHandle = FOPEN("test.txt")
* Procure o fim do arquivo para determinar o número 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 não estiver vazio, o programa armazena seu conteúdo

* na memória, em seguida exibe o texto na janela principal do Visual FoxPro


= FSEEK(ggnFileHandle, 0, 0) && Move o ponteiro para BOF
cString = FREAD(gnFileHandle, nSize)
? cString
ENDIF
= FCLOSE(gnFileHandle) && Fecha o arquivo

FREE TABLE, comando

Remove de uma tabela uma referência a banco de dados.

Sintaxe

FREE TABLE NomeTabela

Argumentos

NomeTabela Especifica o nome da tabela a partir da qual a referência ao banco de dados é


removida.
Comentários

Caso um banco de dados seja excluído acidentalmente do disco, as referências a ele permanecem
nas tabelas que existiam no banco de dados. FREE TABLE exclui de uma tabela as referências a
banco de dados, permitindo que você abra a tabela ou adicione-a a um outro banco de dados.

FREE TABLE nunca deve ser emitido para excluir uma tabela de um banco de dados quando este
existe em disco. Neste caso, FREE TABLE pode inutilizar o banco de dados. Em seu lugar, utilize
REMOVE TABLE. Ao contrário de FREE TABLE, REMOVE TABLE remove do banco de dados
todas as referências a índices primários, valores padrão e regras de validação associados à tabela.

FSEEK( ), função
Move o ponteiro do arquivo em um arquivo aberto com uma função de nível inferior.

Sintaxe

FSEEK(nIdentificadorArquivo, nBytesMovidos[, nPosiçãoRelativa])

Tipos de retorno

Numérico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo no qual FSEEK( ) move o ponteiro do


arquivo. Um número de identificador de arquivo é retornado por FCREATE( ) ou FOPEN( ) quando
o arquivo é criado ou aberto.

nBytesMovidos Especifica o número de bytes para mover o ponteiro do arquivo. O ponteiro do


arquivo será movido em direção ao fim do arquivo se nBytesMovidos for positivo, e em direção ao
início do arquivo se nBytesMovidos for negativo.

nPosiçãoRelativa Move o ponteiro do arquivo até uma posição relativa no arquivo. Como padrão,
o ponteiro do arquivo é movido em relação ao início do arquivo. Você pode também mover o
ponteiro em relação ao ponteiro do arquivo atual ou ao fim do arquivo, incluindo nPosiçãoRelativa.

A tabela a seguir lista os valores para nPosiçãoRelativa e a partir de onde o ponteiro do arquivo é
movido.

nPosiçãoRelativa Move o ponteiro do arquivo para um posição relativa

0 Ao início do arquivo (padrão).


1 À posição do ponteiro do arquivo atual
2 Ao fim do arquivo

Comentários

Após mover o ponteiro do arquivo, FSEEK( ) retorna o número de bytes em que o ponteiro do
arquivo é posicionado a partir do início do arquivo. O ponteiro do arquivo pode também ser movido
com FREAD( ) e FWRITE( ).

FSEEK( ), exemplo de função

A função definida pelo usuário a seguir utiliza FSEEK( ) para retornar o tamanho de um arquivo. Se
você não passar parâmetros para a função definida pelo usuário, ela retornará –2. Se o arquivo não
puder ser localizado, a função definida pelo usuário retornará –1.

FUNCTION fsize2
PARAMETERS gcFileName && Arquivo a ser verificado
PRIVATE pnHandle,pnSize
IF PARAMETERS( ) = 0
RETURN -2 && Retorna -2 se nenhum parâmetro for passado
ELSE
IF !FILE(gcFileName)
RETURN -1 && Retorna -1 se o arquivo não 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( ), função

Retorna o tamanho em bytes de um campo ou arquivo especificado.

Sintaxe

FSIZE(cNomeCampo [, nÁreaTrabalho | cAliasTabela] | cNomeArquivo)


Tipos de retorno

Numérico

Argumentos

cNomeCampo Especifica o nome do campo.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FSIZE( ) retorna um tamanho
de campo.

FSIZE( ) retorna 0 se não houver uma tabela aberta na Área de trabalho que você especificar.

cAliasTabela Especifica o alias da tabela para a qual FSIZE( ) retorna um tamanho de campo.

O Visual FoxPro gera uma mensagem de erro caso você especifique um alias de tabela que não
existe.

cNomeArquivo Especifica um arquivo para o qual FSIZE( ) retorna o tamanho em bytes.

Comentários

A definição atual de SET COMPATIBLE determina se FSIZE( ) retorna o tamanho de um campo


ou de um arquivo. Caso SET COMPATIBLE seja determinado com OFF ou FOXPLUS (padrão),
FSIZE( ) retorna o tamanho de um campo. Se SET COMPATIBLE for determinado com ON ou
DB4, FSIZE( ) retorna o tamanho de um arquivo.

A tabela a seguir mostra o tamanho padrão (em bytes) para cada tipo de campo.

Tipo de campo Tamanho de campo padrão (em bytes)

Moeda 8
Data 8
DataHora 14
Duplo 8
Inteiro 4
Lógico 1
Memo 4
Geral 4

O tamanho do campo pode ser exibido com DISPLAY STRUCTURE e LIST STRUCTURE.
Se você omitir os argumentos opcionais nÁreaTrabalho e cAliasTabela, FSIZE( ) retornará o
tamanho de campo para um campo da Área de trabalho e da tabela atuais.
FSIZE( ), exemplo de função

O exemplo a seguir utiliza FSIZE( ) para retornar o tamanho de dois campos na tabela customer.

SET COMPATIBLE 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( ), função

Retorna a hora da última modificação de um arquivo.

Sintaxe

FTIME(cNomeArquivo)

Tipos de retorno

Caractere
Argumentos

cNomeArquivo Especifica o nome do arquivo cuja hora da última modificação é retornada por
FTIME( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se não houver
nenhum caminho incluído com o nome do arquivo, o Visual FoxPro procurará pelo arquivo no
diretório ou pasta padrão e nos diretórios ou pastas especificados por SET PATH.

Comentários

A hora retornada por FTIME( ) é atribuída ao arquivo pelo sistema operacional.

FTIME( ), exemplo de função

O exemplo a seguir utiliza FTIME( ) para exibir a hora da última modificação em FOXUSER.DBF,
o arquivo de recursos do Visual FoxPro.

? FTIME('FOXUSER.DBF') && Exibe a hora da última modificação


FULLPATH( ), função

Retorna o caminho para um arquivo especificado ou o caminho relativo a um outro arquivo.

Sintaxe

FULLPATH(cNomeArquivo1 [, nCaminhoMSDOS | cNomeArquivo2])

Tipos de retorno

Caractere

Argumentos

cNomeArquivo1 Especifica o arquivo a ser procurado pelo Visual FoxPro. Certifique-se de incluir
a extensão do nome do arquivo.

Se o arquivo estiver localizado no caminho do Visual FoxPro, o caminho é retornado com o nome
do arquivo. O caminho do Visual FoxPro pode ser especificado com SET PATH.

nCaminhoMSDOS Especifica que o caminho do MS-DOS é procurado, em vez do caminho do


Visual FoxPro. nCaminhoMSDOS pode ter qualquer valor numérico. Caso o arquivo não possa ser
localizado no caminho do MS-DOS, um caminho e um nome de arquivo são retornados, como se o
arquivo tivesse sido encontrado no diretório ou na pasta padrão atual.

cNomeArquivo2 Especifica um segundo nome de arquivo a ser procurado. Certifique-se de incluir


a extensão do nome do arquivo. FULLPATH( ) retorna o caminho para o primeiro arquivo em
relação ao segundo arquivo.
STRTRAN( ), função

Procura uma expressão de caracteres ou um campo Memo para ocorrências de uma segunda
expressão de caracteres ou campo Memo e, em seguida, substitui cada ocorrência com uma terceira
expressão de caracteres ou campo Memo.

Sintaxe

STRTRAN(cProcurado, cProcurarPor [, cSubstituição]


[, nIniciarOcorrência] [, nNúmerodeOcorrências])

Tipos de retorno

Caractere

Argumentos

cProcurado Especifica a expressão de caractere que é procurada. cProcurado pode ser um campo
Memo.

cProcurarPor Especifica a expressão de caractere que é procurada em cProcurado. A procura


considera maiúsculas/minúsculas. cProcurar pode ser um campo Memo.

cSubstituição Especifica a expressão de caracteres que substitui cada ocorrência de cProcurarPor


em cProcurado. Se você omitir cSubstituição, cada ocorrência de cProcurarPor é substituída com a
seqüência vazia.

nIniciarOcorrência Especifica qual ocorrência de cProcurarPor é a primeira a ser substituída. Por


exemplo, se nIniciarOcorrência for 4, a substituição começa com a quarta ocorrência de
cProcurarPor em cProcurado, e a primeira das três ocorrências de cProcurarPor permanece
inalterada. A ocorrência onde a substituição começa padronizará a primeira ocorrência de
cProcurarPor se você omitir nIniciarOcorrência.
nNúmerodeOcorrências Especifica o número de ocorrências de cProcurarPor a serem substituídas.
Se você omitir nNúmerodeOcorrências, todas as ocorrências de cProcurarPor
iniciando com a ocorrência especificada com nIniciarOcorrência serão substituídas.

Comentários

Você pode especificar onde a substituição começa e quantas substituições são feitas. STRTRAN( )
retorna a seqüência de caracteres existente.

STRTRAN( ), exemplo da função

STORE 'abracadabra' TO gcString


? STRTRAN(gcString, 'a', 'z') && Exibe zbrzczdzbrz
? STRTRAN(gcString, 'a', 'q', 2, 3) && Exibe abrqcqdqbra

SYSMETRIC( ), função

Retorna o tamanho dos elementos de tela do sistema operacional.

Sintaxe

SYSMETRIC(nElementoTela)

Tipos de retorno

Numérico

Argumentos

nElementoTela Especifica um elemento de tela. A tabela a seguir mostra valores de


nElementoTela e o elemento de tela correspondente:

nElementoTela Elemento de tela

1 Largura da tela
2 Altura da tela.
3 Largura da moldura dimensionável da janela
4 Altura da moldura dimensionável 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 título da janela
10 Largura da moldura não dimensionável da janela
11 Altura da moldura não dimensionável 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 edição de texto
15 Altura da caixa de rolagem na barra de rolagem vertical nas janelas de edição de texto
16 Largura do ícone da janela minimizada
17 Altura do ícone da janela minimizada
18 Largura máxima do ponto de inserção
19 Altura máxima do ponto de inserção
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 mínima dimensionável da janela
25 Altura mínima dimensionável da janela
26 Largura mínima da janela
27 Altura mínima da janela
28 Largura dos controles da janela
29 Altura dos controles da janela
30 1 se houver hardware do mouse; do contrário 0
31 1 para versão de depuração do Microsoft Windows; do contrário 0
32 1 se os botões do mouse estiverem trocados; do contrário 0

Comentários

SYSMETRIC( ) retorna o tamanho dos elementos de tela. Estes elementos são: menus, janelas,
controles da janela e o ponto de inserção. Os valores são retornados em pixels a menos que se diga
o contrário e podem variar para diferentes exibições, unidades de disco de exibição e hardware do
vídeo. Para obter informações adicionais sobre os elementos de tela, consulte a função
GetSystemMetrics no Guia de Referência do Programador do Microsoft Windows.
SYSMETRIC( ) permite determinar o tamanho dos menus, das janelas e dos controles da janela
criados no Visual FoxPro. As janelas e os menus criados com DEFINE WINDOW e DEFINE
MENU utilizam os mesmos tamanhos do elemento de tela das janelas e menus do sistema
operacional.
FUNCTION, comando

Identifica o início de uma definição para uma função definida pelo usuário.

Sintaxe

FUNCTION NomeFunção
Comandos
[RETURN [eExpressão]]
ENDFUNC

Argumentos

NomeFunção No Visual FoxPro, os nomes de função podem ter até 254 caracteres.

Para distinguir entre um nome de arquivo de programa com mais de 10 caracteres e uma função que
começa com os mesmos 10 caracteres nesses dois produtos, coloque o nome de arquivo de
programa entre aspas ou inclua uma extensão depois do nome de arquivo de programa.

Comentários

Em muitos programas, certas rotinas são repetidas com freqüência. Definir as rotinas comumente
utilizadas como funções separadas reduz o tamanho e a complexidade do programa e facilita a sua
manutenção.
FUNCTION NomeFunção é uma instrução dentro de um programa. Designa o início de uma função
em um programa e identifica a função pelo nome.

FUNCTION NomeFunção é seguido de uma série de comandos do Visual FoxPro que compõem a
função. Você pode incluir RETURN em qualquer lugar da função para retornar controle ao
programa de chamada ou a outro programa e para definir um valor retornado pela função definida
pelo usuário. Se você não incluir um comando RETURN, um RETURN implícito é
automaticamente executado quando a função é fechada. Se o comando RETURN não incluir um
valor de retorno (ou se um RETURN implícito for executado), o Visual FoxPro atribuirá .T.
(Verdadeiro) como valor de retorno.

A função é finalizada com o comando ENDFUNC. Esse comando é opcional, a função é fechada
quando encontra outro comando FUNCTION, um comando PROCEDURE ou o final do arquivo de
programa.

Os comentários podem ser colocados na mesma linha depois de FUNCTION e ENDFUNC. Esses
comentários são ignorados durante a compilação e a execução do programa.

Você não pode incluir um código de programa executável normal em um arquivo de programa
depois de utilizar as funções definidas pelo usuário; somente funções definidas pelo usuário,
procedimentos e definições de classe podem seguir o primeiro comando FUNCTION ou
PROCEDURE no arquivo.

Quando você emite DO com um nome de função, o Visual FoxPro procura a função em uma ordem
específica, da forma a seguir:

1. O Visual FoxPro procura no arquivo que contém o comando DO.

2. Caso a função não seja encontrada ali, o Visual FoxPro procura nos arquivos de procedimentos
abertos. Os arquivos de procedimentos são abertos com SET PROCEDURE.

3. Caso a função não seja encontrada em um arquivo de procedimentos aberto, o Visual FoxPro
procura nos programas da seqüência de execução. Os arquivos de programa são procurados desde o
último até o primeiro programa executado.

4. Caso a função ainda não tenha sido encontrada, o Visual FoxPro procura um programa
independente. Se um arquivo de programa correspondente for encontrado, o programa é executado.
Caso contrário, o Visual FoxPro gera uma mensagem de erro.

A cláusula IN deve ser incluída em DO para executar uma função em um arquivo específico.

Como padrão, os parâmetros são passados para as funções por valor. Para obter informações sobre a
passagem de parâmetros para funções por referência, consulte SET UDFPARMS. É possível passar
no máximo 27 parâmetros para uma função. Os parâmetros podem ser passados para uma função
incluindo uma instrução PARAMETERS ou LPARAMETERS na função ou colocando uma lista de
parâmetros imediatamente depois de FUNCTION NomeFunção. Coloque a lista de parâmetros
entre parênteses e separe os parâmetros com vírgulas.
FV( ), função

Retorna o valor futuro de um investimento financeiro.

Sintaxe

FV(nPagamento, nTaxaJuros, nPeríodos)

Tipos de retorno

Numérico

Argumentos

nPagamento Especifica o pagamento periódico e constante (que pode ser negativo ou positivo).

nTaxaJuros Especifica a taxa de juros periódica. Se a taxa de juros for anual mas os pagamentos
forem feitos mensalmente, divida a taxa de juros anual por 12.

nPeríodos Especifica o número de períodos durante os quais os pagamentos são feitos. FV( )
considera que os pagamentos periódicos são feitos no final de cada período.

Comentários

FV( ) calcula o valor futuro de uma série de pagamentos periódicos e constantes com juros
compostos fixos. O valor futuro é constituído pelo total de todos os pagamentos acrescidos de juros.

FV( ), exemplo de função

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( ), função

Grava uma seqüência de caracteres em um arquivo ou em uma porta de comunicação aberta com
uma função de arquivo de nível inferior.

Sintaxe

FWRITE(nIdentificadorArquivo, cExpressão [, nCaracteresGravados])

Tipos de retorno

Numérico

Argumentos

nIdentificadorArquivo Especifica o número do identificador de arquivo para o arquivo ou a porta


de comunicação em que FWRITE( ) executa a gravação.

cExpressão Especifica a expressão de caracteres que FWRITE( ) grava no arquivo ou porta


especificada com nIdentificadorArquivo.

nCaracteresGravados FWRITE( ) grava a expressão de caracteres inteira no arquivo ou porta, a


menos que você inclua nCaracteresGravados. Quando você inclui nCaracteresGravados, são
gravados nCaracteresGravados caracteres no arquivo ou porta. Se nCaracteresGravados for menor
do que o número de caracteres em cExpressão, serão gravados apenas nCaracteresGravados
caracteres no arquivo ou porta. Todos os caracteres em cExpressão serão gravados no arquivo ou
porta se nCaracteresGravados for igual ou maior que o número de caracteres em cExpressão.
Comentários

Diferente de FPUTS( ), FWRITE( ) não coloca um retorno de carro e uma alimentação de linha no
fim da seqüência de caracteres.

FWRITE( ) retorna o número de bytes gravados no arquivo ou porta de comunicação. Se


FWRITE( ) não puder executar a gravação no arquivo ou porta, será retornado 0.

GATHER, comando

Substitui os dados do registro atual para a tabela atualmente selecionada com dados de uma matriz,
um conjunto de variáveis ou um objeto.

Sintaxe

GATHER FROM NomeMatriz | MEMVAR | NAME NomeObjeto


[FIELDS ListaCampo | FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura]
[MEMO]

Argumentos

FROM NomeMatriz Especifica a matriz cujos dados substituem aqueles do registro atual. O
conteúdo dos elementos da matriz, começando do primeiro elemento, substitui o conteúdo dos
campos correspondentes do registro. O conteúdo do primeiro elemento da matriz substitui o
primeiro campo do registro, o conteúdo do segundo elemento da matriz substitui o segundo campo e
assim por diante.

Se a matriz tiver menos elementos do que a tabela tem campos, os campos adicionais serão
ignorados. Se a matriz tiver mais elementos do que a tabela tem campos, os elementos adicionais
serão ignorados.

MEMVAR Especifica as variáveis de memória ou a matriz de onde os dados são copiados para o
registro atual. Os dados são transferidos da variável de memória para o campo que possui o mesmo
nome da variável de memória. O conteúdo do campo não será substituído se não existir uma
variável de memória com o mesmo nome do campo.

Dica Você pode criar variáveis de memória com os mesmos nomes dos campos incluindo
MEMVAR ou BLANK em SCATTER.

NAME NomeObjeto Especifica um objeto cujas propriedades possuem os mesmos nomes dos
campos da tabela. O conteúdo de cada campo é substituído pelo valor da propriedade com os
mesmos nomes dos campos. O conteúdo de um campo não será substituído se não existir uma
propriedade com o mesmo nome do campo.

FIELDS ListaCampos Especifica os campos cujo conteúdo é substituído pelo conteúdo dos
elementos da matriz ou das variáveis. Somente o campo especificado com ListaCampos tem seu
conteúdo substituído.

FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Você pode substituir de forma seletiva os
campos com os conteúdos de elementos de matriz ou de variáveis de memória incluindo as
cláusulas LIKE ou EXCEPT, ou ambas. Se você incluir a Estrutura LIKE, o Visual FoxPro
substituirá os campos que correspondem à Estrutura. Se incluir Estrutura EXCEPT, o Visual
FoxPro substituirá todos os campos exceto os que correspondam à Estrutura.

Estrutura suporta caracteres curinga (* e ?). Por exemplo, para substituir todos os campos que
começam com as letras A e P, utilize:

GATHER FROM gamyarray FIELDS LIKE A*,P*

MEMO Especifica que o conteúdo dos campos Memo é substituído pelo conteúdo de elementos de
matriz ou de variáveis de memória. Se você omitir MEMO, os campos Memo serão ignorados
quando GATHER substituir o conteúdo dos campos pelo conteúdo de uma matriz ou de uma
variável de memória. Os campos do tipo geral ou de figura são sempre ignorados em GATHER,
mesmo que você inclua a palavra-chave MEMO.

GATHER, exemplo de comando

Exemplo 1
Este exemplo utiliza GATHER para copiar dados para um registro novo na tabela. Após a criação
da tabela Test, SCATTER será utilizado para criar conjunto de variáveis baseados em campos de
tabela. Para cada campo será, então, atribuído um valor e um novo registro em branco é adicionado
à tabela.

CREATE TABLE Test FREE ;


(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Caixa"
m.Color="Vermelho"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

Exemplo 2

Este exemplo utiliza GATHER junto à cláusula NAME para copiar dados para um registro novo na
tabela. Após a criação da tabela Test, SCATTER é utilizado para criar um objeto com propriedades
baseadas em campos na tabela. Atribui-se, então, valores à propriedade do objeto e adiciona-se um
novo registro em branco à tabela.

CREATE TABLE Test FREE ;


(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( ), função

Exibe a caixa de diálogo Cor do Windows e retorna o número da cor escolhida.

Sintaxe

GETCOLOR([nNúmeroCorPadrão])

Tipos de retorno

Numérico

Argumentos

nNúmeroCorPadrão Especifica a cor inicialmente selecionada quando a caixa de diálogo Cor é


exibida. Se nNúmeroCorPadrão não corresponder a uma cor da caixa de diálogo Cor, a primeira cor
dessa caixa de diálogo será selecionada. Se você omitir nNúmeroCorPadrão, a cor preta será
selecionada.

Comentários

GETCOLOR( ) retornará – 1 se você sair da caixa de diálogo Cor pressionando ESC, selecionando
o botão Cancelar ou selecionando Fechar no menu Controle.

GETCOLOR( ), exemplo de função

O exemplo a seguir exibe a caixa de diálogo Cor do ambiente Windows com a cor vermelha
selecionada. O número correspondente à cor escolhida é exibido quando você sai da caixa de
diálogo.

CLEAR
? GETCOLOR(255)
GETDIR( ), função

Exibe a caixa de diálogo Selecionar diretório, a partir da qual é possível selecionar um diretório ou
uma pasta.

Sintaxe

GETDIR([cDiretório [, cTexto]])

Tipos de retorno

Caractere

Argumentos

cDiretório Especifica o diretório ou pasta inicialmente exibido na caixa de diálogo. Quando


cDiretório não é especificado, a caixa de diálogo abre com o padrão de diretório ou pasta do Visual
FoxPro exibida.

cTexto Especifica o texto para a lista de diretório ou pasta na caixa de diálogo. No Windows 3.1, o
texto aparece como legenda na barra de títulos da caixa de diálogos. No Windows 95, o texto
aparece abaixo da barra de títulos, dentro da caixa de diálogo.

Comentários

GETDIR( ) retorna como seqüência de caracteres o nome do diretório ou pasta selecionado.


Se você não escolher um diretório ou pasta (clicar Cancelar, pressionar ESC ou escolher Fechar no
menu Controle), GETDIR( ) retorna a seqüência vazia.

GETENV( ), função

Retorna o conteúdo da variável de ambiente do MS-DOS especificada.

Sintaxe

GETENV(cNomeVariável)

Tipos de retorno

Caractere

Argumentos
cNomeVariável Especifica o nome da variável de ambiente do MS-DOS. A seqüência vazia será
retornada se a variável de ambiente do MS-DOS especificada não existir.

Você pode localizar o diretório Windows com a variável de ambiente WINDIR, definida pelo
Windows quando ele é inicializado.

Comentários

Duas variáveis de ambiente estão sempre disponíveis: COMSPEC e PATH. É possível criar
variáveis de ambiente personalizadas com o comando SET do MS-DOS.

Para obter maiores informações sobre a criação de variáveis de ambiente, consulte o manual do MS-
DOS.

GETENV( ), exemplo de função

CLEAR
? GETENV('PATH') && Exibe o diretório do MS-DOS

GETFILE( ), função
Exibe a caixa de diálogo Abrir e retorna o nome do arquivo selecionado.

Sintaxe

GETFILE([cExtensõesArquivos] [, cTexto] [,cLegendaBotãoAbrir]


[,nTipoBotão])

Tipos de retorno

Caractere

Argumentos

cExtensõesArquivos Especifica as extensões dos arquivos exibidos na lista rolável quando o item
de menu Todos os arquivos não é escolhido. Se passar um valor como literal, inclua-o entre aspas.
Não inclua um ponto (.) na frente de extensões de arquivos.

cExtensõesArquivos pode apresentar diversos formatos:

· Se cExtensõesArquivos contiver uma única extensão (por exemplo, .PRG), serão exibidos
apenas os arquivos com essa extensão.
· Se cExtensõesArquivos for uma seqüência vazia, todos os arquivos do diretório ou pasta
atual serão exibidos, se cTipoCriador não estiver incluído.
· cExtensõesArquivos também pode conter caracteres curinga (* e ?). Todos os arquivos com
extensões que correspondam aos critérios dos caracteres curinga são exibidos. Por exemplo, se
cExtensõesArquivos for ?X?, todos os arquivos com extensão .FXP, .EXE e TXT serão exibidos.

· No Visual FoxPro para Windows, cExtensõesArquivos pode conter uma descrição de


arquivo seguida de uma extensão de arquivo ou uma lista de extensões de arquivos separados por
vírgulas. A descrição do arquivo aparece na caixa de listagem Tipos de arquivo. Separe a descrição
de arquivos da extensão de arquivo ou lista de extensões com dois pontos (:). Separe descrições
múltiplas de arquivo com ponto e vírgula (;).

Por exemplo, se cExtensõesArquivos é “Text:TXT” a descrição do arquivo “Text” aparece na caixa


de listagem Tipos de arquivo e todos os arquivos com a extensão .TXT são exibidos.

Se cExtensõesArquivos é “Tabelas:DBF; Arquivos: TXT,BAK” a descrição dos arquivos “Tabelas”


e “Arquivos” aparece na caixa de listagem Tipos de arquivo. Quando “Tabelas” é escolhida na
caixa de listagem Arquivos do tipo, todos os arquivos com uma extensão .DBF são exibidos.
Quando “Arquivos” é escolhido da caixa de listagem Tipos de arquivo, todos os arquivos com
extensão .TXT e .BAK são exibidos.

cTexto Especifica o texto de uma lista de diretórios ou pastas na caixa de diálogo Abrir. No
ambiente Windows 95, o texto aparece abaixo da lista de arquivos e longas seqüências de texto
podem ser truncadas. No Macintosh, o texto aparece dentro da caixa de diálogo.
cLegendaBotãoAbrir Especifica uma legenda para o botão OK.

nTipoBotão Especifica o número e o tipo dos botões que aparecem na caixa de diálogo Abrir. Os
botões a seguir serão exibidos na caixa de diálogo quando nTipoBotão for 0, 1 ou 2.

nTipoBotão Botões

0
(ou omitido) OK
Cancelar
1 OK
Novo
Cancelar
2 OK
Nenhum
Cancelar

“Sem Título” é retornado com o caminho especificado na caixa de diálogo Abrir se nTipoBotão é 1
e o usuário escolhe o botão Novo. A seqüência vazia é retornada nTipoBotão é 2 e o usuário
escolhe o botão Nenhum.

Comentários

GETFILE( ) retornará a seqüência vazia se você exibir a caixa de diálogo Abrir, pressionando ESC,
escolhendo Cancelar ou escolhendo Fechar, no menu Controle.

GETFILE( ), exemplo de função

CLOSE DATABASES
SELECT 0

gcTable = GETFILE('DBF', 'Procurar ou criar um.DBF:', 'Procurar',1)


DO CASE
CASE 'Sem título' $ gcTable
CREATE (gcTable)
CASE EMPTY(gcTable)
RETURN
OTHERWISE
USE (gcTable)
BROWSE
ENDCASE
GETFLDSTATE( ), função

Retorna um valor numérico indicando se um campo em uma tabela ou em um cursor foi editado, se
um registro foi incluído ou se o status excluído do registro atual foi alterado.

Sintaxe

GETFLDSTATE(cNomeCampo | nNúmeroCampo[,cAliasTabela | nÁreaTrabalho])

Tipos de retorno

Numérico

Argumentos

cNomeCampo | nNúmeroCampo Especifica o nome ou o número do campo para o qual o status de


edição é retornado. O número de campo nNúmeroCampo corresponde à posição do campo na
estrutura da tabela ou cursor. DISPLAY STRUCTURE ou FIELD( ) podem ser utilizados para
determinar o número de um campo.

É possível especificar –1 para que nNúmeroCampo retorne uma seqüência de caracteres que
consista de valores de status de edição e exclusão para todos os campos na tabela ou cursor. Por
exemplo, se uma tabela apresentar cinco campos e apenas o primeiro tiver sido editado,
GETFLDSTATE( ) retornará:

121111
O número 1 na primeira posição indica que o status de exclusão não foi alterado.

Você pode, também, incluir 0 em nNúmeroCampo para determinar se o status de exclusão do


registro atual foi alterado desde a abertura da tabela ou cursor.

Observação Utilizando GETFLDSTATE( ) determina apenas se o status de exclusão do registro


atual foi alterado. Por exemplo, se você marcar um registro para ser excluído e tornar a chamá-lo,
GETFLDSTATE( ) indicará se o status de exclusão foi alterado, mesmo que o status de exclusão do
registro tenha retornado ao seu estado original. Utilize DELETED( ) para determinar o status de
exclusão de um registro.

cAliasTabela Especifica o alias da tabela ou do cursor para o qual o status de exclusão de registro
ou edição de campo é retornado.

nÁreaTrabalho Especifica a área de trabalho da tabela ou do cursor para o qual o status de


exclusão de registro ou edição de campo é retornado.

Se um alias ou uma área de trabalho não forem especificados, GETFLDSTATE( ) retornará um


valor para um campo na tabela ou no cursor selecionado no momento.

Comentários

A tabela a seguir lista os valores de retorno de caractere e o status de edição ou exclusão


correspondente.

Valor de retorno Status de edição ou exclusão

1 O campo não foi editado ou o status de exclusão não foi alterado.


2 O campo foi editado ou o status de exclusão foi alterado.
3 O campo em um registro incluído não foi editado ou o status de exclusão não foi alterado
para o registro incluído.
4 O campo em um registro incluído foi editado ou o status de exclusão foi alterado para o
registro incluído.

A utilização de buffer de linha ou de tabela deve ser ativada com CURSORSETPROP( ) para que
GETFLDSTATE( ) opere em tabelas locais.
O status de exclusão ou edição será retornado para a tabela ou cursor que estiver aberto na área de
trabalho selecionada no momento, se GETFLDSTATE( ) for emitido sem os argumentos opcionais
cAliasTabela ou nÁreaTrabalho.

GETFLDSTATE( ), exemplo de função


O exemplo a seguir demonstra como utilizar a função GETFLDSTATE( ) para determinar se o
conteúdo de um campo foi alterado. MULTILOCKS é ativado (ON), um requerimento para
utilização de buffer de tabela. A tabela customer no banco de dados testdata é aberto e
CURSORSETPROP( ) é, então, utilizado para ajustar o modo de utilização do buffer para utilização
de buffer de tabela otimista (5).
GETFLDSTATE( ) é emitido para exibir um valor correspondente (1) para o estado não modificado
do campo cust_id, antes que o mesmo seja modificado. O campo cust_id é modificado com
REPLACE e GETFLDSTATE( ) é emitido novamente para exibir um valor correspondente (2) e
modificar o estado do campo cust_id. TABLEREVERT( ) é utilizado para retornar a tabela ao seu
estado original e GETFLDSTATE( ) é emitido novamente para exibir um valor correspondente (1)
ao estado original do campo cust_id.

CLOSE DATABASES
CLEAR

SET MULTILOCKS ON && Permite utilização de buffer de tabela


OPEN DATABASE SYS(2004)+"samples\data\testdata"
USE Customer && Abre tabela customer
=CURSORSETPROP("Utilização do buffer",5,"cliente") && Ativa utilização de buffer de tabela

* Obtém estado do campo no campo original cust_id e exibe estado


nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

* Altera conteúdo do campo e exibe estado

REPLACE cust_id WITH "***"


nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

* Descarta alteração de tabela e exibe estado


= TABLEREVERT(.T.) && Descarta todas alterações de tabela
nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

PROCEDURE DisplayState
PARAMETER nState
DO CASE
CASE nState=1
=MESSAGEBOX("Campo não foi modificado ",0,"Resultados")
OTHERWISE
=MESSAGEBOX("Campo foi modificado ",0,"Resultados")

ENDCASE
GETFONT( ), função

Exibe a caixa de diálogo Fonte e retorna o nome da fonte selecionada.

Sintaxe

GETFONT( )

Tipos de retorno

Caractere

Comentários

GETFONT( ) retorna o nome, o tamanho e o estilo da fonte selecionada. Sua escolha é retornada
como uma seqüência de caracteres com o nome, o tamanho e o estilo da fonte separados por
vírgulas.

GETFONT( ) retorna a seqüência vazia quando você sai da caixa de diálogo Fonte selecionando
Cancelar ou Fechar, no menu Controle, ou pressionando ESC.

Observação Os comandos e funções do Visual FoxPro podem ser abreviados para quatro
caracteres. No caso de GETFONT( ) e GETFILE( ), em que ambos começam com as mesmas
quatro letras, a precedência é dada para GETFILE( ). Ao emitir GETF( ), a caixa de diálogo Abrir é
emitida.
GETNEXTMODIFIED( ), função

Retorna o número de registro do registro modificado que segue em um buffer de tabela ou cursor.

Sintaxe

GETNEXTMODIFIED(nNúmeroRegistro[,cAliasTabela | nÁreaTrabalho])

Tipos de retorno

Numérico
Argumentos

nNúmeroRegistro Especifica o número de registro após o qual GETNEXTMODIFIED( ) procura o


registro modificado seguinte. Especifique 0 em nNúmeroRegistro para determinar o primeiro
registro modificado na tabela ou no cursor.

cAliasTabela Especifica o alias da tabela ou cursor para o qual GETNEXTMODIFIED( ) retorna o


número do próximo registro modificado.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou cursor para o qual


GETNEXTMODIFIED( ) retorna o número do próximo registro modificado.

Se você não especificar um alias ou uma Área de trabalho, GETNEXTMODIFIED( ) retornará o


número de registro correspondente ao próximo registro modificado na tabela ou cursor selecionados
no momento.

Comentários

GETNEXTMODIFIED( ) retornará 0 se não houver nenhum registro modificado depois daquele


que você especificou. Um registro será considerado modificado se o conteúdo de qualquer um de
seus campos sofrer qualquer tipo de alteração (mesmo se o conteúdo original do campo for
restaurado) ou o status de exclusão do registro for alterado.

GETNEXTMODIFIED( ) pode operar somente em tabelas e cursores para os quais a utilização de


buffer de tabela estiver ativada. A utilização de buffer de tabela é ativada com
CURSORSETPROP( ).

GETNEXTMODIFIED( ), exemplo da função

O exemplo a seguir demonstra como se pode utilizar GETNEXTMODIFIED( ) para determinar


quais registros em uma tabela foram alterados. MULTILOCKS é ajustado para ON, um
requerimento para utilização de buffer de tabela. A tabela customer no banco de dados testdata é
aberta, e CURSORSETPROP( ) é, então utilizada para ajustar o modo de utilização do buffer para
utilização de buffer otimista (5).
SKIP é emitido para mover o ponteiro do registro para o segundo registro, e o campo cust_id é
modificado com REPLACE. GETNEXTMODIFIED(0) é utilizado para exibir um número de
registro do registro seguinte modificado (2, o segundo registro), iniciando a partir do início da
tabela. TABLEREVERT( ) é utilizado para retornar a tabela ao seu estado original, e
GETNEXTMODIFIED(0) é novamente utilizado para exibir o número do registro do registro
seguinte modificado (0, indicando que não há registros modificados).

CLOSE DATABASES
CLEAR
OPEN DATABASE SYS(2004)+"samples\data\testdata"
SET MULTILOCKS ON && Permite utilização de buffer de tabela
UTILIZE Customer && Abre a tabela customer
=CURSORSETPROP("Utilização de tabela", 5, "cliente") && ativa utilização de buffer de tabela

SKIP && Move o registro do ponteiro para o segundo registro

* Altera o conteúdo dos campos


REPLACE cust_id WITH "***"

* Chama a função MESSAGEBOX com resultados de GETNEXTMODIFIED


=MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;

" alterado.",0,"Resultados")

* Retorna a tabela e exibe resultados com MESSAGEBOX


=TABLEREVERT(.T.) && Descarta todas as alterações de 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( ), função

Retorna o título de menu para uma dada posição na barra de menus.

Sintaxe

GETPAD(cNomeBarraMenus, nPosiçãoBarraMenus)

Tipos de retorno

Caractere

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus.

nPosiçãoBarraMenus Especifica uma posição na barra de menus. nPosiçãoBarraMenus pode variar


de 1 (o nome situado mais à esquerda na barra de menus) até o número de títulos de menus na barra
de menus.

Comentários

Os nomes de menus em uma barra de menus podem ser adicionados, removidos ou reorganizados.
Utilize DEFINE PAD para adicionar um nome de menu a uma barra de títulos ou RELEASE PAD
para remover um título de menu.

GETPAD( ), exemplo da função

O programa a seguir utiliza GETPAD( ) para testar se o nome do menu Editar é uma barra de menu
do sistema no Visual FoxPro. Caso afirmativo, GETPAD( ) retornará o nome do menu. (Para
retornar a barra de menu Editar ao seu estado padrão, emita o comando SET SYSMENU TO
DEFAULT.)

FOR gnCount = 1 TO CNTPAD('_msysmenu') && Número 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 número de registro especificado.

Sintaxe

GO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN cAliasTabela]


– Ou –
GO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]
– Ou –
GOTO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN cAliasTabela]
– Ou –
GOTO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]

Argumentos

RECORD nNúmeroRegistro Especifica o número do registro físico para o qual o ponteiro do


registro deve ser movido. Você pode omitir GO ou GOTO totalmente e especificar apenas o número
do registro. Caso especifique apenas o número do registro, você poderá mover o ponteiro do
registro somente dentro da Área de trabalho atual.

IN nÁreaTrabalho Especifica a Área de trabalho da tabela na qual o ponteiro do registro é movido.

IN cAliasTabela Especifica o alias da tabela na qual o ponteiro do registro é movido.

TOP Posiciona o ponteiro do registro no primeiro registro na tabela. Caso a tabela esteja utilizando
um índice ascendente, o primeiro registro será o que apresenta o menor valor-chave. Se o índice
estiver em ordem descendente, o primeiro registro será o que apresenta o maior valor-chave.
BOTTOM Posiciona o ponteiro do registro no último registro da tabela. Caso a tabela esteja
utilizando um índice ascendente, o último registro será o que apresenta o maior valor-chave. Se o
índice estiver em ordem descendente, o último registro será o que apresenta o menor valor-chave.

Comentários

GO e GOTO podem ser utilizados alternativamente. Estes comandos operam na Área de trabalho
atual da tabela, a menos que você especifique outra Área de trabalho com a cláusula IN.

GO | GOTO, exemplo do comando

CLOSE 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( ), função

Retorna a data que indica um número de meses especificado antes ou depois de uma determinada
expressão de data ou de data e hora.

Sintaxe

GOMONTH(dExpressão | tExpressão, nNúmeroDeMeses)

Tipos de retorno

Data

Argumentos

dExpressão Especifica uma expressão de data para a qual GOMONTH( ) retorna a data.

tExpressão Especifica uma expressão de data e hora para a qual GOMONTH( ) retorna a data.

NNúmeroDeMeses Especifica o número de meses da data ou data e hora. Especifica o número de


meses da data ou da data e hora. Se nNúmeroDeMeses for positivo, GOMONTH( ) retornará uma
data correspondente a nNúmeroDeMeses meses depois da data ou data e hora. Se
nNúmeroDeMeses for negativo, GOMONTH( ) retornará uma data correspondente a
nNúmeroDeMeses meses antes da data ou data e hora.

GOMONTH( ), exemplo da função

SET CENTURY 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( ), função

Retorna o número de bytes no cabeçalho do arquivo de tabela atual ou especificado.

Sintaxe

HEADER([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Numérico

Argumentos

nÁreaTrabalho | cAliasTabela Retorna o tamanho do cabeçalho de uma tabela aberta em uma outra
área de trabalho. nÁreaTrabalho especifica o número da área de trabalho e cAliasTabela especifica
o alias da tabela. Se a área de trabalho e o alias forem omitidos, HEADER( ) retornará o tamanho
do cabeçalho da tabela aberta na área de trabalho atual.

HEADER( ) retornará 0 se não houver uma tabela aberta na área de trabalho especificada. Se uma
tabela não possuir o alias especificado, o Visual FoxPro exibirá uma mensagem de erro.
Comentários

Um cabeçalho de tabela contém informações sobre a própria tabela, como os tamanhos e nomes de
campo e a presença de um arquivo de memo ou índice estrutural.

HELP, comando

Abre a janela da Ajuda.

Sintaxe

HELP
[Tópico | ID nIDContexto]
[IN [WINDOW] NomeJanela | IN [WINDOW] SCREEN
| IN [WINDOW]]
[NOWAIT]

Argumentos

Tópico Especifica o tópico da Ajuda a ser exibido. Se você incluir somente um trecho de um título
de tópico, o Visual FoxPro abre a janela da Ajuda e exibe o tópico com o título que mais
corresponde ao trecho incluído.

ID nIDContexto Especifica o tópico da Ajuda a exibir, com base na ID de contexto do tópico.

Ao utilizar a Ajuda no estilo .DBF, nIDContexto será um valor no campo Contextid da tabela da
ajuda. O campo Contextid deverá ser o primeiro campo da tabela.

Ao utilizar a Ajuda no estilo gráfico, nIDContexto será um número de contexto na seção MAP do
arquivo de projeto da Ajuda.

IN [WINDOW] NomeJanela Abre a janela da Ajuda dentro de uma janela pai. A janela da Ajuda
não assume as características da janela pai onde é colocada. Se a janela da Ajuda
for ativada dentro de uma janela pai, não poderá ser movida para fora da janela pai. Se a janela pai
for movida, a janela da Ajuda será movida com ela. Para abrir a janela da Ajuda
de dentro de uma janela pai, é necessário que a janela pai seja primeiro definida com DEFINE
WINDOW.

IN [WINDOW] SCREEN Coloca a janela da Ajuda explicitamente na janela principal do Visual


FoxPro.

NOWAIT Na Ajuda do estilo .DBF, especifica que a execução do programa deve continuar depois
da janela da Ajuda ser aberta. Caso você omita NOWAIT ao utilizar a Ajuda do estilo .DBF, a
execução do programa será suspensa na linha que contém o comando HELP até que a janela da
Ajuda seja fechada.

Na Ajuda do estilo gráfico, o argumento NOWAIT não tem efeito e a execução do programa
sempre continua depois que o comando HELP é emitido.

Comentários

Para obter maiores informações sobre a criação do seu próprio sistema de Ajuda, consulte a parte 7,
“Criando arquivos de ajuda”, no Guia do Desenvolvedor.
HIDE MENU, comando

Oculta uma ou mais barras de menus ativas ou definidas pelo usuário.

Sintaxe

HIDE MENU NomeBarraMenu1 [, NomeBarraMenu2 ...] | ALL


[SAVE]

Argumentos

NomeBarraMenu1 [, NomeBarraMenu2 ...] Especifica o nome da barra de menus ou uma lista de


barras de menus (separadas por vírgulas) a serem ocultadas.

ALL Oculta todas as barras de menus definidas.

SAVE Coloca uma imagem de uma barra de menus na tela ou em uma janela. Colocar uma
imagem de uma barra de menus na tela é útil durante o desenvolvimento e teste de um programa.
Imagens de barras de menus podem ser retiradas da janela principal do Visual FoxPro ou de uma
janela definida pelo usuário com CLEAR.

Comentários

HIDE MENU remove a barra de menus especificada, um conjunto de barras de menus ou todas as
barras de menus da janela principal do Visual FoxPro ou de uma janela definida pelo usuário sem
remover a definição de menu da memória. Para que uma barra de menus possa ser ocultada, ela
deve primeiro ser criada com DEFINE MENU. Ocultar uma barra de menus não é a mesma coisa
que desativá-la. Quando uma barra de menus está oculta, ela fica residente na memória e pode ser
exibida na janela principal do Visual FoxPro ou em uma janela definida pelo usuários com
ACTIVATE MENU ou SHOW MENU.
HIDE POPUP, comando

Oculta um ou mais menus ativos criados com DEFINE POPUP.

Sintaxe

HIDE POPUP NomeMenu1 [, NomeMenu2 ...] | ALL


[SAVE]

Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica o nome do menu ou da lista de menus (separados por
vírgula) a serem ocultados.

ALL Oculta todos os menus definidos.

SAVE Coloca uma imagem de um menu na janela principal do Visual FoxPro ou em uma janela
definida pelo usuário. Colocar uma imagem de um menu na tela é útil durante o desenvolvimento e
teste do programa. As imagens de menu podem ser retiradas da janela principal do Visual FoxPro
ou de uma janela definida pelo usuário com CLEAR.

Comentários

HIDE POPUP remove o menu especificado, um conjunto de menus ou todos os menus da janela
principal do Visual FoxPro ou de uma janela definida pelo usuário sem remover as definições de
menu da memória. Para que um menu possa ser ocultado, ele deve primeiro ser criado com
DEFINE POPUP. Ocultar um menu não é a mesmo coisa que desativá-lo. Quando um menu é
ocultado, ele fica residente na memória e pode ser exibido na janela principal do Visual FoxPro ou
em uma janela definida pelo usuário com ACTIVATE POPUP ou SHOW POPUP.
HIDE WINDOW, comando

Oculta uma janela ativa definida pelo usuário ou uma janela do sistema do Visual FoxPro.

Sintaxe

HIDE WINDOW NomeJanela1 [, NomeJanela2 ... ] | ALL | SCREEN


[ IN [WINDOW] NomeJanelaN | IN [WINDOW] SCREEN
| IN [WINDOW]]
[BOTTOM | TOP | SAME]

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome da janela ou uma lista de janelas (separadas
por vírgulas) a serem ocultadas. Caso você emita HIDE WINDOW sem argumentos, a janela ativa
será ocultada. No Visual FoxPro, é possível especificar o nome de uma barra de ferramentas a ser
ocultada. Consulte SHOW WINDOW para obter uma lista dos nomes das barras de ferramentas do
Visual FoxPro.

ALL Oculta todas as janelas.


SCREEN Oculta a janela principal do Visual FoxPro. Para exibi-la novamente, emita ACTIVATE
WINDOW SCREEN ou SHOW WINDOW SCREEN.

IN [WINDOW] NomeJanelaN Oculta a janela em uma janela-pai.

IN [WINDOW] SCREEN Oculta explicitamente uma janela na janela principal do Visual FoxPro.

BOTTOM | TOP | SAME Especifica a posição em que as janelas estão ocultas em relação a outras
janelas. BOTTOM coloca uma janela atrás de todas as outras. TOP (padrão) coloca uma janela em
frente a todas as outras. SAME oculta uma janela sem afetar sua colocação frontal ou posterior.
Para preservar as posições relativas de várias janelas ocultas quando elas são reexibidas com
SHOW WINDOW ALL, inclua a palavra-chave SAME ao ocultar as janelas.

Comentários

HIDE WINDOW HIDE WINDOW remove uma janela ou um conjunto de janelas da janela
principal do Visual FoxPro ou de uma janela definida pelo usuário. É possível utilizar HIDE
WINDOW para ocultar janelas do sistema como a janela Comando, a janela Sessão de dados e
assim por diante.

Ocultar uma janela não é o mesmo que fechá-la. Ao ser ocultada, a janela permanece na memória e
continua ativa. A saída pode ser enviada para uma janela oculta, mas não é possível visualizá-la.

Liberar uma janela remove-a da memória. As janelas removidas da memória devem ser redefinidas
para serem exibidas novamente. Uma janela pode ser exibida com ACTIVATE WINDOW ou
SHOW WINDOW.

Para ocultar uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque a
janela do sistema inteira ou o nome da barra de ferramentas entre aspas. Por exemplo, para ocultar a
barra de ferramentas Controles de relatório no Visual FoxPro, emita o comando:

HIDE WINDOW “Controles de Relatório”

HIDE WINDOW, exemplo de comando

No exemplo a seguir, uma janela denominada wOutput1 é definida e ativada. O programa espera
que você pressione uma tecla para, em seguida, ocultar a janela. O programa espera que você
pressione uma tecla novamente para, depois, exibir a janela. O pressionamento de uma tecla pela
terceira vez remove a janela da tela e da memória.

DEFINE WINDOW wOutput1 FROM 6,1 TO 19,75 TITLE 'Output' ;


CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW wOutput1

WAIT WINDOW 'Press a key to hide this window'


HIDE WINDOW wOutput1

WAIT WINDOW 'Press a key to see the window again'


SHOW WINDOW wOutput1

WAIT WINDOW 'Press a key to remove the window from memory'


DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

HOME( ), função

Retorna o nome do diretório de onde o Visual FoxPro foi inicializado.

Sintaxe

HOME( )

Tipos de Retorno

Caractere

Comentários

HOME( ) retorna o nome do diretório de onde o Visual FoxPro foi inicializado.

HOME( ) é idêntico a SYS(2004) e é fornecido para manter a compatibilidade com o dBASE IV.

HOME( ), exemplo de função

? 'Diretório de inicialização do Visual FoxPro : ', HOME( )

HOUR( ), função

Retorna a parte da hora de uma expressão DataHora.


Sintaxe

HOUR(tExpressão)

Argumentos

tExpressão Especifica uma expressão DataHora da qual HOUR( ) retorna a hora.

Tipos de Retorno

Numérico

Comentários

HOUR( ) retorna um valor numérico baseado em um formato de 24 horas e não é afetado pela
definição atual de SET HOURS. Por exemplo, se SET HOURS é 12 ou 24, o comando a seguir
retorna 13:

? HOUR({02/16/95 1:00pm})

HOUR( ), exemplo de função

O exemplo a seguir exibe a parte de hora do horário atual e a parte de hora de um horário
específico.

CLEAR
? HOUR(DATETIME( ))
? HOUR({10:42am}) && Exibe 10
IF... ENDIF, comando

Executa condicionalmente um conjunto de comandos baseados no valor de uma expressão lógica.

Sintaxe

IF lExpressão [THEN]
Comandos
[ELSE
Comandos]
ENDIF

Argumentos

lExpressão Especifica a expressão lógica avaliada. Caso lExpressão resulte em verdadeiro (.T.),
todos os comandos depois de IF ou THEN e antes de ELSE ou ENDIF (aquele que ocorrer
primeiro) serão executados.

· Se lExpressão for falso (.F.) e ELSE for incluído, todos os comandos depois de ELSE e
antes de ENDIF serão executados.
· Se lExpressão for falso (.F.) e ELSE não for incluído, todos os comandos entre IF e ENDIF
serão ignorados. Neste caso, a execução do programa continuará com o primeiro comando depois
de ENDIF.

Comentários

É possível aninhar um bloco IF... ENDIF dentro de outro bloco IF... ENDIF.

Os comentários precedidos por && podem ser colocados na mesma linha depois de IF, THEN,
ELSE e ENDIF. Esses comentários são ignorados durante a compilação e a execução do programa.

IF... ENDIF, exemplo do comando


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

GETEXPR 'Digite a condição para localizar ' TO gcTemp;


TYPE 'L' DEFAULT 'EMPRESA = ""'
LOCATE FOR &gcTemp && Digita a expressão LOCATE
IF FOUND( ) && Foi encontrado?
DISPLAY && Em caso positivo, exibe o registro
ELSE && Em caso negativo
? 'Condição ' + gcTemp + ' não encontrada ' && Exibe a mensagem
ENDIF
USE

IIF( ), função

Retorna um de dois valores, dependendo do valor de uma expressão lógica.

Sintaxe

IIF(lExpressão, eExpressão1, eExpressão2)

Tipos de retorno

Caractere, Numérico, Moeda, Data ou DataHora

Argumentos

lExpressão Especifica a expressão lógica que IIF( ) avalia.

eExpressão1, eExpressão2 Se lExpressão resultar em verdadeiro (.T.), será retornado eExpressão1.


Se lExpressão resultar em falso (.F.), será retornado eExpressão2.

Comentários
Esta função, também conhecida como IF Imediato, avalia uma expressão lógica e, em seguida,
retorna uma de duas expressões. Se a expressão lógica resultar em verdadeiro (.T.), IIF( ) retornará
a primeira expressão. Se a expressão lógica resultar em falso (.F.), IIF( ) retornará a segunda
expressão.

Dica Pode-se utilizar esta função no lugar de IF ... ENDIF com expressões condicionais simples.
Ela é especialmente útil em expressões de relatório e etiqueta que especificam condicionalmente
conteúdos de campos. A execução da função IIF( ) também é consideravelmente mais rápida do que
a execução de uma função IF ... ENDIF equivalente.

IIF( ), exemplo da função

O exemplo a seguir utiliza IIF( ) para verificar se o campo Notes na tabela employee está vazio. Se
estiver vazio, “Nenhuma descrição” será exibida; caso contrário, os conteúdos do campo Memo
serão exibidos.

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

SCAN
? IIF(EMPTY(notes), 'Nenhuma observação', notes) && Campo Memo vazio?
ENDSCAN

IMPORT, comando

Importa dados de um formato de arquivo externo para criar uma nova tabela do Visual FoxPro.

Sintaxe

IMPORT FROM NomeArquivo


[DATABASE NomeBancoDados [NAME NomeTabelaLongo]]
[TYPE] FW2 | MOD | PDOX | RPD | WK1
| WK3 | WKS | WR1 | WRK | XLS
| XL5 [SHEET cNomeFolha]
[AS nPáginaCódigo]
Argumentos

NomeArquivo Especifica o nome do arquivo do qual os dados devem ser importados. Se você não
incluir uma extensão no nome de arquivo, será considerada a extensão padrão para o tipo de arquivo
especificado.

DATABASE NomeBancoDados Especifica um banco de dados para o qual a nova tabela é


adicionada.

NAME NomeTabelaLongo Especifica um nome longo para a nova tabela. Nomes longos podem
conter até 128 caracteres e podem ser utilizados no lugar de nomes curtos de arquivos no banco de
dados.

TYPE A palavra-chave TYPE é opcional, mas você deve incluir um dos tipos de arquivo descritos
abaixo:

Tipo de arquivo Descrição

FW2 Incluir FW2 para importar arquivos FW2, criados pelo Framework II.
MOD Incluir MOD para importar arquivos MOD, criados pelo Microsoft Multiplan versão 4.1.
PDOX Incluir PDOX para importar arquivos do Paradox. Os arquivos de bancos de dados do
Paradox versões 3.5 e 4.0 da Borland podem ser importados ao incluir a opção PDOX.
RPD Incluir RPD para importar arquivos RPD criados pelo RapidFile.
WK1 | WK3 | WKS Incluir WK1 para importar dados de uma planilha do Lotus 1, 2 e 3. As
colunas da planilha se tornam campos na tabela e as linhas, registros na tabela. É atribuída uma
extensão .WK1 a planilhas criadas no Lotus 1, 2 e 3 revisões 2.x; uma extensão .WK3 a planilhas
criadas no Lotus1, 2 e 3 revisões 3.x; e uma extensão .WKS a planilhas criadas no Lotus1, 2 e 3,
revisão 1-A.
WR1 | WRK Incluir WR1 para importar dados de uma planilha do Lotus Symphony. As colunas
e as linhas da planilha tornam-se respectivamente campos e registros na tabela. É atribuída uma
extensão .WR1 a planilhas criadas no Symphony versão 1.10 e é atribuída uma extensão .WRK a
planilhas criadas no Symphony versão 1.1.
XLS Incluir XLS para importar dados de planilhas do Microsoft Excel versões 2.0, 3.0 e 4.0. As
colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. Os arquivos
de planilhas criados no Microsoft Excel têm a extensão .XLS.

XL5 [SHEET cNomeFolha] Incluir XL5 para importar dados do Microsoft Excel versão 5.0. As
colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. Os arquivos
de planilhas criados no Microsoft Excel têm a extensão .XLS. Se você omitir a cláusula SHEET, os
dados em Plan1 serão importados. Para importar dados de uma folha específica, incluir a palavra-
chave SHEET e especificar o nome da folha com cNomeFolha.

AS nPáginaCódigo Especifica a página de código do arquivo importado. O Visual FoxPro copia o


conteúdo do arquivo importado e, à medida que copia os dados, converte automaticamente os dados
para a página de código atual do Visual FoxPro.
Caso você especifique um valor para nPágina Código que não seja suportado, o VisualFoxPro
exibirá uma mensagem de erro. Para que nPáginaCódigo possa exibir uma caixa de diálogo Página
de código, com a qual você define uma página para o arquivo importado, utilize o GETCP().
Se AS nPáginaCódigo for omitida e o Visual FoxPro não conseguir determinar a página de código
do arquivo importado, ele copiará o conteúdo do arquivo importado e, à medida que copia os dados,
converterá automaticamente os dados para a página de código atual do Visual FoxPro. Se AS
nPáginaCódigo for omitida e o Visual FoxPro conseguir determinar a página de código do arquivo
importado, ele converterá automaticamente os dados do arquivo importado da página de código dos
dados para a página de código atual do Visual FoxPro. Utilize CPCURRENT( ) para determinar a
página de código atual do Visual FoxPro.

Se nPáginaCódigo for igual a 0, o Visual FoxPro irá considerar que a página de código do arquivo
importado é a mesma e atual do Visual FoxPro e não será feita nenhuma conversão de página de
código.

Comentários

A maioria dos pacotes de software armazena seus dados em um formato de arquivo que não pode
ser aberto diretamente no Visual FoxPro. IMPORT cria uma nova tabela do Visual FoxPro a partir
dos dados armazenados em formatos de arquivo que o Visual FoxPro não consegue ler diretamente.
Uma nova tabela é criada com o mesmo nome do arquivo do qual os dados são importados. A
extensão .DBF é atribuída à tabela recém-criada.
INDEX, comando

Cria um arquivo de índice para exibir e acessar registros de tabelas em uma ordem lógica.

Sintaxe

INDEX ON eExpressão TO NomeArquivoIDX | TAG NomeMarca [OF NomeArquivoCDX]


[FOR lExpressão]
[COMPACT]
[ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE]
[ADDITIVE]

Argumentos

eExpressão Especifica uma expressão de índice que pode incluir o nome de um ou mais campos a
partir da tabela atual. Uma chave de índice com base na expressão de índice é criada no arquivo de
índice para cada registro da tabela. O Visual FoxPro utiliza estas chaves para exibir e acessar
registros da tabela.

Observação Não utilize uma variável, um elemento de matriz , um campo ou expressão de campo
de uma tabela em uma outra Área de trabalho para eExpressão. Se você acessar um índice que
contenha uma variável ou um campo inexistente ou que não possa ser localizado, o Visual FoxPro
irá gerar uma mensagem de erro. Campos Memo não podem ser utilizados sozinhos em expressões
de arquivo de índice; devem ser combinados com outras expressões de caracteres.

Se você incluir um campo precedido por um alias de tabela ou letra de Área de trabalho na
expressão de índice, o Visual FoxPro gera uma mensagem de erro. Embora você possa otimizar
cláusulas FOR com a tecnologia Rushmore caso sejam incluídos campos de alias, ainda assim,
insistimos que se evite o uso de campos de alias na criação de índices. Em diversos casos
(USE ... AGAIN, buscas SQL, e assim por diante), um alias diferente é atribuído automaticamente a
uma tabela e o índice pode não estar atualizado ou ser utilizado de forma adequada.

Para obter maiores informações sobre a tecnologia Rushmore, consulte “Compreendendo a


tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Se você tentar construir um índice com uma chave com tamanho variável, ela será preenchida com
espaços. O Visual FoxPro não suporta chaves de índice de tamanho variável.

É possível criar uma chave de índice de comprimento zero. Por exemplo, este tipo de chave é criado
quando a expressão de índice é uma subseqüência de um campo Memo vazio. Essa chave gera uma
mensagem de erro. Quando o Visual FoxPro cria um índice, ele avalia campos no primeiro registro
da tabela. Se um campo estiver vazio, talvez seja necessário inserirem-se dados temporários no
primeiro registro, a fim de impedir a ocorrência de uma chave de índice de comprimento zero.

O comprimento de uma chave de índice para um índice .IDX deve estar entre 1 e 100 caracteres.
Para um índice .CDX , esta deve estar entre 1 e 240 caracteres.
TO NomeArquivoIDX Cria um arquivo de índice .IDX. O arquivo de índice recebe a extensão
padrão .IDX, que pode ser substituída incluindo-se uma extensão diferente ou alterando-se a
extensão de índice padrão no arquivo de configuração do Visual FoxPro. As regras padrão do MS-
DOS para nomes de arquivos devem ser observadas na denominação de arquivos de índice.

TAG NomeMarca [OF NomeArquivoCDX] Cria um arquivo de índice composto. Trata-se de um


arquivo de índice único que consiste em qualquer número de marcas separadas (entradas de índice).
Cada marca é identificada pelo seu nome exclusivo. Os nomes devem começar com uma letra ou
um sublinhado e podem consistir em qualquer combinação de até 10 letras, dígitos ou sublinhados.
O número de marcas em um arquivo de índice composto é limitado apenas pelo espaço em disco e
pela memória disponíveis.

Os arquivos de índice composto de várias entradas são sempre compactados. Não é necessário
incluir COMPACT ao criar um desses arquivos. Seus nomes recebem a extensão .CDX.

É possível criar dois tipos de arquivos de índice composto: estrutural e não-estrutural.

Se você excluir a cláusula opcional OF NomeArquivoCDX de TAG NomeMarca, você cria um


arquivo de índice composto estrutural. Este tem sempre o mesmo nome base da tabela e é aberto
automaticamente quando ela é aberta.

Caso não seja possível localizar o arquivo de índice composto estrutural de uma tabela ou ele tiver
sido excluído ou renomeado, uma caixa de diálogo aparecerá quando você tentar abrir a tabela. Se
você selecionar o botão padrão Cancelar, a tabela não será aberta. Se selecionar Ignorar, ela será
aberta e será removido o sinalizador existente no cabeçalho da tabela e que indica a presença de um
arquivo de índice composto estrutural associado.

Dica Para associar novamente um índice composto estrutural, emita o comando a seguir:

USE NomeTabela INDEX NomeArquivoCDX

Se você incluir a cláusula opcional OF NomeArquivoCDX após TAG NomeMarca, você cria um
arquivo de índice composto não estrutural. Ao contrário de um arquivo de índice composto
estrutural, o não-estrutural deve ser aberto explicitamente com SET INDEX ou com a cláusula
INDEX em USE.

Caso o arquivo de índice composto já tenha sido criado e aberto, a emissão de INDEX com TAG
NomeMarca adicionará uma marca ao arquivo de índice composto.

NomeArquivoCDX é o nome do índice composto estrutural associado. Certifique-se de reindexar a


tabela caso ela tenha sido modificada depois que o índice composto estrutural foi desassociado.

FOR lExpressão Especifica uma condição pela qual somente os registros que satisfazem a
expressão de filtragem lExpressão estarão disponíveis para exibição e acesso; chaves de índice são
criadas no arquivo de índice apenas para os registros correspondentes à expressão de filtragem.

Rushmore otimiza um comando INDEX ... FOR lExpressão caso isto seja possível. Para obter um
melhor desempenho, utilize uma expressão otimizável na cláusula FOR.
Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia
Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

COMPACT Cria um arquivo .IDX compactado.

ASCENDING Especifica uma ordem crescente para o arquivo .CDX. Como padrão, as marcas
.CDX são criadas em ordem crescente (você pode incluir ASCENDING como um lembrete da
ordem do arquivo de índice). É possível indexar uma tabela em ordem inversa incluindo
DESCENDING.

DESCENDING Especifica uma ordem decrescente para o arquivo .CDX. Não é possível incluir
DESCENDING na criação de arquivos de índice .IDX. No entanto, é possível especificar uma
ordem decrescente para um arquivo de índice .IDX com SET INDEX e SET ORDER.

UNIQUE Especifica que apenas o primeiro registro localizado com um valor de chave de índice
específico será incluído em um arquivo .IDX ou em uma marca .CDX. Pode-se utilizar UNIQUE
para impedir a exibição de registros duplicados ou o acesso a eles. Todos os registros adicionados
com chaves de índice duplicadas são excluídos do arquivo de índice. Utilizar a opção UNIQUE de
INDEX é a mesma coisa que executar SET UNIQUE ON antes de emitir INDEX ou REINDEX.

Quando uma marca de índice ou um índice UNIQUE estão ativos e um registro duplicado é
alterado de uma forma que altere a sua chave de índice, a marca de índice ou o índice são
atualizados. No entanto, o próximo registro duplicado com a chave de índice original somente
poderá ser acessado ou exibido depois que o arquivo for reindexado com REINDEX.

CANDIDATE Cria uma marca de índice estrutural candidato. Pode-se incluir a palavra-chave
CANDIDATE apenas na criação de uma marca de índice estrutural; caso contrário, o Visual FoxPro
gera uma mensagem de erro.

A marca de índice candidato impede valores duplicados no campo ou em uma combinação de


campos especificada na expressão de índice eExpressão. O termo “candidato” refere-se ao tipo de
índice; visto que índices candidatos impedem valores duplicados, eles se qualificam como
“candidato” a índice primário.

O Visual FoxPro gera um erro se você criar uma marca de índice candidato para um campo ou uma
combinação de campos que já contenha valores duplicados.

Para obter maiores informações sobre marcas de índice primário e candidato, consulte “Definindo
um índice primário ou candidato” no capítulo 7, “Trabalhando com tabelas”, no Guia do
Desenvolvedor.

ADDITIVE Mantém aberto qualquer arquivo de índice anteriormente aberto. Se você omitir a
cláusula ADDITIVE ao criar um ou mais arquivos de índice para uma tabela com INDEX, todos os
arquivos de índice anteriormente abertos (exceto o índice composto estrutural) serão fechados.

Comentários
Os registros de uma tabela que tem um arquivo de índice são exibidos e acessados na ordem
especificada pela expressão de índice. A ordem física dos registros na tabela não é alterada por um
arquivo de índice.

Se SET TALK estiver ativado (ON), o Visual FoxPro relatará quantos registros são indexados
durante o processo de indexação. O intervalo de exibição destes registros durante a indexação pode
ser especificado com SET ODOMETER.

Utilize DISPLAY STATUS para exibir maiores informações sobre arquivos de índice abertos. Estas
informações incluem os nomes de todos os arquivos de índice abertos, seus tipos (estrutural, .CDX,
.IDX), suas expressões de índice, suas seqüências de ordenação e o nome da marca principal ou do
arquivo de índice principal.

O número de arquivos de índice (.IDX ou .CDX) que você pode abrir é limitado apenas pelos
recursos do sistema e memória. No Visual FoxPro, no FoxPro para Windows e no FoxPro para MS-
DOS, o número total de arquivos que podem ser abertos é determinado na definição FILES do
arquivo de configuração CONFIG.SYS do MS-DOS. Para obter maiores informações sobre a
definição FILES, consulte o manual do MS-DOS.

Tipos de índice O Visual FoxPro permite a criação de dois tipos de arquivos de índice:

· Arquivos de índice composto .CDX que contêm várias entradas de índice denominadas
marcas
· Arquivos de índice .IDX que contêm uma entrada de índice

Você pode também criar um arquivo de índice composto estrutural, que é automaticamente aberto
com a tabela.

Dica Devido aos arquivos de índice composto estrutural serem automaticamente abertos quando a
tabela é aberta, eles correspondem ao tipo de índice preferível.

Inclua COMPACT para criar arquivos de índice .IDX compactos. Arquivos de índice compostos
sempre são compactados.

Atualização e ordem de índice Apenas um arquivo de índice (o de índice principal) ou marca


(marca principal) controla a ordem em que a tabela será exibida ou acessada. Determinados
comandos (SEEK, por exemplo) utilizam o arquivo de índice principal ou marca para procurar
registros. Entretanto, todos os arquivos de índice .IDX e .CDX abertos são atualizados, conforme as
alterações são feitas nas tabelas. É possível designar o arquivo de índice principal ou marca com a
cláusula INDEX de USE ou com SET INDEX e SET ORDER.

Funções definidas pelo usuário Embora uma expressão de índice possa conter uma função definida
pelo usuário, você não deverá utilizar funções definidas pelo usuário em uma expressão de índice.
Isto aumenta o tempo que as funções levam para criar ou atualizar o índice. Além disso, as
atualizações de índice não podem ocorrer quando uma função definida pelo usuário é utilizada para
uma expressão de índice.
Caso uma função definida pelo usuário seja utilizada em uma expressão de índice, o Visual FoxPro
deverá ser capaz de localizar a função definida pelo usuário. Quando o Visual FoxPro cria um
índice, a expressão de índice é gravada no arquivo de índice, mas apenas uma referência à função
definida pelo usuário é incluída naquela expressão.

Index, exemplos

O Exemplo 1 abre a tabela customer e cria um arquivo de índice denominado complist


, o qual exibe e processa registros em ordem alfabética do campo Company.
No Exemplo 2, a tabela customer é novamente aberta e um arquivo de índice denominado citycomp
é criado a partir de uma subseqüência dos primeiros cinco caracteres do campo City, e os primeiros
seis caracteres do campo Company. Quando esse arquivo de índice é utilizado, os registros na
tabela são ordenados, em primeiro lugar, de acordo com o campo City, e ,em segundo lugar, de
acordo com o campo Company.

No Exemplo 3, as marcas de índice são criadas. A primeira marca é uma marca de índice composto
estrutural para address. A segunda é criada em um arquivo de índice não estrutural denominado
custcdx.

* Exemplo 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( ), função

Retorna um número correspondente ao primeiro clique com o mouse ou ao primeiro


pressionamento de tecla no buffer de teclado.

Sintaxe

INKEY([nSegundos] [, cOcultarCursor])

Tipos de retorno

Numérico

Argumentos

nSegundos Especifica quantos segundos INKEY( ) aguarda um pressionamento de tecla. Caso


nSegundos não seja incluído, INKEY( ) retornará imediatamente um valor para um pressionamento
de tecla. INKEY( ) aguardará indefinidamente um pressionamento de tecla se nSegundos for 0.
cOcultarCursor Exibe ou oculta o cursor, ou procura um clique com o mouse. Para Exibir o cursor,
inclua S em cOcultarCursor. Para ocultá-lo, inclua H em cOcultarCursor. Caso S e H sejam
incluídos em cOcultarCursor, o último caractere em cOcultarCursor terá preferência.

Como padrão, INKEY( ) não detecta um clique com o mouse. Para procurar um clique com o
mouse, inclua M em cOcultarCursor. Se M for incluído em cOcultarCursor, INKEY( ) retornará o
valor 151 para um único clique com o mouse click. Consulte o segundo exemplo na tabela a seguir
para ver como você pode procurar um clique duplo.

Para procurar um clique com o mouse e exibir o cursor, inclua M e S. Para procurar um clique com
o mouse e ocultar o cursor, inclua H e M.

Quando uma macro de teclado está atribuída a uma tecla ou a uma combinação de teclas, você pode
incluir E em cOcultarCursor para expandir a macro de teclado. Quando E está incluído, INKEY( )
retorna um valor correspondente ao primeiro pressionamento de tecla atribuído à macro de teclado.
Você pode retornar valores sucessivos para cada pressionamento de tecla, executando repetidas
vezes INKEY( ) com E incluído. Se você omitir E, INKEY( ) retornará o valor da tecla ou da
combinação de teclas que dispara a macro de teclado.

Qualquer outro caractere diferente de H, M, S e E em cOcultarCursor é ignorado.

A tabela a seguir lista valores de retorno da função INKEY( ) para teclas sozinhas e em combinação
com as teclas SHIFT, CTRL, e ALT Um travessão (—) indica que uma combinação de teclas
retornará nenhum valor.

Tecla Sozinha SHIFT CTRL ALT/+OPÇÃO

F1 28 84 94 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 ESPAÇOS 32 32 32/— 57

* Pressionamento de teclas reservado pelo Windows.


Comentários

A função INKEY( ) retornará 0 se nenhuma tecla for pressionada. Caso existam várias teclas no
buffer de teclado, INKEY( ) retornará o valor da primeira tecla inserida no buffer.
INLIST( ), função

Determina se uma expressão corresponde a outra expressão em um conjunto de expressões.

Sintaxe

INLIST(eExpressão1, eExpressão2 [, eExpressão3 ...])

Tipos de retorno

Lógico ou valor nulo

Argumentos

eExpressão1 Especifica a expressão que INLIST( ) procura no conjunto de expressões.

eExpressão2 [, eExpressão3 ...] Especifica o conjunto de expressões na qual a procura deve ser
feita. Você deve incluir, no mínimo, uma expressão (eExpressão2) e, no máximo, 24 expressões
(eExpressão2, eExpressão3 e assim sucessivamente).

Todas as expressões no conjunto de expressões devem ter o mesmo tipo de dado.

Comentários

A função INLIST( ) retornará verdadeiro (.T.) se localizar a expressão no conjunto de expressões;


caso contrário INLIST( ) retornará falso (.F.). O valor nulo é retornado se eExpressão1 for o valor
zero. O valor nulo também é retornado se eExpressão1 não for o valor nulo, eExpressão1 não
corresponder a outra expressão, e pelo menos uma das outras expressões for o valor nulo.

INLIST( ), exemplo da função

Neste exemplo, INLIST( ) determina o quarto do ano para o mês atual. O mês atual é armazenado
na variável gcMonth. Cada instrução CASE utiliza INLIST( ) para determinar se o conteúdo de
gcMonth pode ser localizado na lista de nome de meses. O nome do quarto retornado é armazenado
na variável gcReporTitle.

SET TALK ON
STORE CMONTH(DATE( )) TO gcMonth
DO CASE
CASE INLIST(gcMonth,'Janeiro','Fevereiro','Março')
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( ), função

Retorna o modo de inserção atual ou ativa/desativa o modo de inserção.

Sintaxe

INSMODE([lExpressão])

Tipos de retorno

Lógico

Argumentos

lExpressão Ativa ou desativa o modo de inserção. INSMODE(.T.) ativa e INSMODE(.F.) desativa


o modo de inserção. É retornado um valor lógico correspondente à definição do modo de inserção
antes da emissão de INSMODE(.T.) ou INSMODE(.F.).

Comentários

Se você omitir o argumento opcional e o modo de inserção estiver ativado (os caracteres são
inseridos antes do cursor), INSMODE( ) retornará verdadeiro (.T.). Se o modo de inserção estiver
desativado (os caracteres são sobrescritos na posição do cursor), INSMODE( ) retornará falso (.F.).

INSMODE( ), exemplo da função

O exemplo a seguir utiliza INSMODE( ) para ativar o modo de inserção e, em seguida, alterna o
modo de inserção para o estado oposto.

SET TALK ON
=INSMODE(.T.) && Alterna o modo de inserção para on
? INSMODE( )
= INSMODE(!INSMODE( )) && Alterna o modo de inserção para o estado oposto
? INSMODE( )

INT( ), função

Avalia uma expressão numérica e retorna a parte inteira da expressão.

Sintaxe

INT(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica para qual a função INT( ) retorna a parte inteira.

INT( ), exemplo da função

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( ), função

Determina se o caractere mais à esquerda em uma expressão de caracteres é alfabético.

Sintaxe

ISALPHA(cExpressão)

Tipos de retorno

Lógico

Argumentos

cExpressão Especifica a expressão de caracteres que ISALPHA( ) avalia. Todos os caracteres


depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISALPHA( ) retorna verdadeiro (.T.) se o caractere mais à esquerda na expressão especificada é um


caractere alfabético; caso contrário, ISALPHA( ) retorna falso(.F.).

ISALPHA( ), exemplo da função

CLOSE 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( ), função

Determina se uma expressão está vazia.

Sintaxe

ISBLANK(eExpressão)

Tipos de retorno

Lógico

Argumentos

eExpressão Especifica a expressão que ISBLANK( ) avalia. eExpressão pode ser um campo de
uma tabela, uma variável ou elemento de matriz ou uma expressão.

Para um campo, ISBLANK( ) retorna verdadeiro (.T.) se o campo contiver os valores a seguir.

Tipo Conteúdo

Caractere Seqüência vazia, espaços ou sem valor (registro vazio recém-incluído ou limpo com
BLANK)
Numérico Sem valor (registro vazio recém-incluído ou limpo com BLANK)
Flutuante Sem valor (registro vazio recém-incluído ou limpo com BLANK)
Data Data em branco ({ / / }) ou sem valor (registro vazio recém-incluído ou limpo com
BLANK)
DataHora Data e hora em branco ({ / / : : }) ou sem valor (registro vazio recém-incluído
ou limpo com BLANK)
Lógico Sem valor (registro vazio recém-incluído ou limpo com BLANK)
Memo Vazio (sem conteúdo memo)
Geral Vazio (sem objeto OLE)
Figura Vazio (sem figura)

Comentários

ISBLANK( ) retorna verdadeiro(.T.) se a expressão eExpressão estiver vazia; caso contrário,


ISBLANK( ) retorna falso(.F.).
Utiliza-se APPEND BLANK e BLANK para criar um registro vazio. Pode-se também utilizar
BLANK para limpar dados de campos em um registro. ISBLANK( ) pode determinar se um campo
está vazio.
Observe que as expressões do tipo Currency, Integer e Double nunca estão vazias, e ISBLANK( )
sempre retorna falso(.F.) para esses tipos de dados.
ISBLANK( ) difere de EMPTY( ) e ISNULL( ). Por exemplo, EMPTY( ) retornará verdadeiro (.T.)
se uma expressão de caracteres contiver qualquer combinação de valores nulos, espaços, tabulações,
retornos de carro ou alimentações de linha; ISBLANK( ) retornará verdadeiro (.T.) se uma
expressão de caracteres contiver somente a seqüência vazia ou espaços.

ISBLANK( ), exemplo da função

No exemplo a seguir, uma tabela denominada mytable é criada e um registro vazio é incluído.
ISBLANK( ) retorna verdadeiro (.T.) porque myfield está vazio. Um valor é colocado em myfield, e
ISBLANK( ) retorna falso (.F.) myfield não está mais vazio.

CREATE TABLE mytable FREE (myfield C(20))


APPEND BLANK && Adicionar novo registro vazio
CLEAR

? ISBLANK(myfield) && Exibe .T.


REPLACE myfield WITH 'John Smith' && Insere um valor no campo
? ISBLANK(myfield) && Exibe .F.
ISCOLOR( ), função

Determina se o computador pode exibir cor.

Sintaxe

ISCOLOR( )

Tipos de retorno

Lógico

Comentários

ISCOLOR( ) retorna verdadeiro (.T.) se o seu computador tem recurso de cor (mesmo que o
monitor em utilização não seja colorido). Se o seu computador não permite o uso de cor,
ISCOLOR( ) retorna falso (.F.).
ISDIGIT( ), função

Determina se o caractere mais à esquerda da expressão de caracteres especificada é um dígito (de 0


a 9).

Sintaxe

ISDIGIT(cExpressão)

Tipos de retorno

Lógico

Argumentos

cExpressão Especifica a expressão de caracteres testada por ISDIGIT( ). Todos os caracteres


depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISDIGIT( ) retorna verdadeiro (.T.) se o caractere mais à esquerda da expressão de caracteres


especificada é um dígito (de 0 a 9); caso contrário, ISDIGIT( ) retorna falso (.F.).

ISDIGIT( ), exemplo da função

CLOSE 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( ), função

Retorna verdadeiro (.T.) se a tabela ou o banco de dados forem abertos para uso exclusivo; caso
contrário, retorna falso(.F.).

Sintaxe

ISEXCLUSIVE([cAliasTabela | nÁreaTrabalho | cNomeBancoDados [, nTipo]])

Tipos de retorno

Lógico

Argumentos

cAliasTabela Especifica o alias da tabela para a qual é retornado o status de utilização exclusiva. O
Visual FoxPro gera uma mensagem de erro se você especificar um alias de tabela inexistente.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual é retornado o status de


utilização exclusiva. ISEXCLUSIVE( ) retorna falso (.F.) se não houver uma tabela aberta na Área
de trabalho especificada.

cNomeBancoDados Especifica o nome do banco de dados para o qual o status de utilização


exclusiva é retornado.

nTipo Especifica se o status exclusivo é retornado para uma tabela ou banco de dados. A tabela a
seguir lista os valores para nTipo e o status retornado correspondente.

nTipo Status exclusivo retornado


1 Tabela
2 Banco de dados

Para determinar o status exclusivo de um banco de dados, é necessário atribuir o valor 2 a nTipo.

Comentários

ISEXCLUSIVE( ) retorna um valor para a tabela aberta na Área de trabalho atualmente selecionada
se forem omitidos os argumentos opcionais cAliasTabela, nÁreaTrabalho, ou cNomeBancoDados.
Uma tabela é aberta para utilização exclusiva incluindo a palavra-chave EXCLUSIVE em USE, ou
selecionando SET EXCLUSIVE para ON antes que a tabela seja aberta.
Um banco de dados é aberto para utilização exclusiva incluindo a palavra-chave EXCLUSIVE no
OPEN DATABASE.

ISEXCLUSIVE( ), exemplo da função

No exemplo a seguir, a função ISEXCLUSIVE( ) verifica que a tabela foi aberta para utilização
exclusiva. A tabela não será reindexada pois a Área de trabalho atual não foi aberta para utilização
exclusiva.

cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (SYS(2004) + 'SAMPLES\DATA\')
OPEN DATA testdata && Abre o banco de dados de teste
USE customer && Não 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 não pode ser aberta exclusivamente'
ENDIF
SET EXCLUSIVE &cExclusive
ISFLOCKED( ), função

Retorna o status de bloqueio da tabela.

Sintaxe

ISFLOCKED([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho Especifica o número da Área de trabalho da tabela para a qual o status de bloqueio
foi retornado. Se você omitir cAliasTabela e nÁreaTrabalho, o status de bloqueio será retornado
para uma tabela aberta na Área de trabalho atual.

cAliasTabela Especifica o alias da tabela para qual o status de bloqueio foi retornado.

Comentários

ISFLOCKED( ) retorna verdadeiro (.T.) se a tabela estiver bloqueada; caso contrário, um falso (.F.)
é retornado. ISFLOCKED( ) é similar ao SYS(2011), mas retorna um valor lógico que não requer
localização para aplicativos internacionais.
ISLOWER( ), função

Determina se o caractere mais a esquerda da expressão de caracteres especificada é um caractere


alfabético minúsculo.

Sintaxe

ISLOWER(cExpressão)

Tipos de retorno

Lógico

Argumentos

cExpressão Especifica a expressão de caracteres que ISLOWER( ) testa. ISLOWER( ) ignora


qualquer caractere após o primeiro caractere em cExpressão.
Comentários

ISLOWER( ) retorna verdadeiro (.T.) se o caractere mais a esquerda da expressão de caracteres


especificada é um caractere alfabético minúsculo, caso contrário, ISLOWER( ) retorna falso (.F.).

ISLOWER( ), exemplo da função

CLEAR
? ISLOWER('redmond') && Exibe .T.
? ISLOWER('Redmond') && Exibe .F.

ISNULL( ), função

Retorna verdadeiro (.T.) se uma expressão resulta em um valor nulo; caso contrário, ISNULL( )
retorna falso (.F.).
Sintaxe

ISNULL(eExpressão)

Tipos de retorno

Lógico

Argumentos

eExpressão Especifica a expressão a ser avaliada.

Comentários

Utilize ISNULL( ) para determinar se o conteúdo de um campo, variável de memória ou elemento


de matriz contém um valor nulo ou se uma expressão resulta em um valor nulo.

ISNULL( ), exemplo da função

No exemplo a seguir, ISNULL( ) é utilizado para verificar um valor nulo.

STORE .NULL. TO mNullvalue && Armazene um valor nulo em uma variável de memória

CLEAR
? mNullvalue && Exibe o valor de uma variável de memória
? ISNULL(mNullvalue) && Retorna .T., indicando um valor nulo
? TYPE('mNullvalue') && Retorna L, indicando um valor lógico
? (mNullvalue = .NULL.) && Retorna .NULL., teste ruim para valores nulos
ISREADONLY( ), função

Determina se uma tabela está aberta somente para leitura.

Sintaxe

ISREADONLY([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Retorna o status somente para leitura de uma tabela aberta em uma
outra Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela
especifica o alias da Área de trabalho ou da tabela. ISREADONLY( ) retorna falso (.F.) se não
houver tabela aberta na Área de trabalho especificada.

Se você não especificar um número de Área de trabalho ou um alias de tabela ou de Área de


trabalho, o status somente para leitura será retornado para a tabela aberta na Área de trabalho ativa.

Comentários

ISREADONLY( ) retorna verdadeiro (.T.) se a tabela está aberta somente para leitura; caso
contrário, ISREADONLY( ) retorna falso (.F.).

Você pode abrir uma tabela somente para leitura incluindo a opção NOUPDATE ao abri-la com
USE, marcando a caixa de verificação Somente para leitura ao abri-la na caixa de diálogo Abrir ou
atribuindo a ela atributos somente para leitura do MS-DOS.

Um cursor criado com o comando SELECT - SQL é sempre somente para leitura.

ISREADONLY( ), exemplo da função


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

CLEAR
? ISREADONLY('customer') && Retorna .T.

ISRLOCKED( ), função

Retorna o status de bloqueio do registro.

Sintaxe

ISRLOCKED([nNúmeroRegistro, [nÁreaTrabalho | cAliasTabela]])

Tipos de retorno

Lógico

Argumentos

nNúmeroRegistro Especifica o número do registro para o qual o status do bloqueio é retornado. Se


nNúmeroRegistro é omitido, o status de bloqueio do registro é retornado para o registro atual.

nÁreaTrabalho Especifica um número de Área de trabalho de uma tabela para a qual o status de
bloqueio de registro é retornado. Se for omitido cAliasTabela e nÁreaTrabalho, o status de bloqueio
do registro é retornado para a tabela aberta na Área de trabalho atual.

cAliasTabela Especifica o alias da tabela para a qual o status de bloqueio do registro é retornado.

Comentários

ISRLOCKED( ) retorna verdadeiro (.T.) se o registro estiver bloqueado, caso contrário será
retornado falso (.F.).
ISUPPER( ), função

Determina se o primeiro caractere em uma expressão de caracteres é um caractere alfabético


maiúsculo.

Sintaxe

ISUPPER(cExpressão)

Tipos de retorno

Lógico
Argumentos

cExpressão Especifica a expressão de caracteres que ISUPPER( ) avalia. Todos os caracteres


depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISUPPER( ) retorna verdadeiro (.T.) se o primeiro caractere em uma expressão de caracteres é um


caractere alfabético maiúsculo; caso contrário, ISUPPER( ) retorna falso(.F.).

ISUPPER( ), exemplo da função

? ISUPPER('Redmond') && Exibe .T.


? ISUPPER('redmond') && Exibe .F.
KEY( ), função

Retorna a expressão de chave de índice para uma marca de índice ou arquivo de índice.

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de índice composto. KEY( ) retorna as


expressões de chave de índice das marcas de índice dos arquivos .CDX. O arquivo de índice
composto especificado pode ser o arquivo de índice composto estrutural automaticamente aberto
com a tabela ou um arquivo de índice composto independente.

nNúmeroÍndice Especifica a chave de expressão de índice a ser retornada.

USE e SET INDEX suportam uma lista de arquivos de índice que permitem que você abra vários
índices para uma tabela. Qualquer combinação de arquivos de índice .IDX de entrada única,
arquivos de índice composto estruturais ou arquivos de índice composto independentes pode ser
incluída na lista de arquivos de índice.

A expressão numérica nNúmeroÍndice especifica a expressão de índice a ser retornada a partir dos
arquivos de índice abertos. KEY( ) retorna expressões de índice a partir de arquivos de índice
abertos na ordem a seguir à medida que nNúmeroÍndice aumenta a partir de 1 até o número total de
arquivos .IDX de entrada única abertos e marcas de índice composto independente e estrutural:

1. As expressões de índice de arquivos de índice .IDX de entrada única (se houver algum
aberto) são retornadas em primeiro lugar. A ordem de inclusão destes arquivos de índice de entrada
única em USE ou SET INDEX determina a forma como as expressões de índice são retornadas.
2. As expressões de índice para cada marca no índice composto estrutural (se houver algum)
são retornadas em seguida. As expressões de índice são retornadas a partir das marcas na ordem em
que as marcas são criadas no índice composto estrutural.

3. As expressões de índice para cada marca em qualquer índice composto independente aberto
são retornadas por último. As expressões de índice são retornadas a partir das marcas na ordem em
que as marcas são criadas nos índices compostos independentes.

A seqüência vazia é retornada caso nNúmeroÍndice seja maior que o número total de arquivos .IDX
de entrada única abertos e marcas de índice composto independentes e estruturais.
nÁreaTrabalho Especifica o número da Área de trabalho da tabela cujas expressões de chave de
índice devem ser retornadas por KEY( ).

Se não houver uma tabela aberta na Área de trabalho especificada, KEY( ) retornará a seqüência
vazia.

cAliasTabela Especifica o alias da tabela cujas expressões de chave de índice devem ser retornadas
por KEY( ).

Se nenhuma tabela possuir o alias especificado, o Visual FoxPro irá gerar uma mensagem de erro.

Se nÁreaTrabalho e cAliasTabela forem omitidos, as expressões de chave de índice serão


retornadas para a tabela aberta na Área de trabalho atual.

Comentários

Uma expressão de chave de índice é especificada quando uma marca de índice ou um arquivo de
índice é criado com INDEX. A expressão de chave de índice determina como uma tabela será
exibida e acessada quando a marca de índice ou o arquivo de índice for aberto como o arquivo ou a
marca de índice controlador principal.

Para obter maiores informações sobre como criar marcas de índice, arquivos de índice e expressões
de chave de índice, consulte INDEX.

KEY( ), exemplo da função

O exemplo a seguir abre a tabela customer no banco de dados testdata. FOR ... ENDFOR é utilizado
para criar um loop no qual KEY( ) é utilizado para exibir a expressão de índice de cada marca de
índice no índice estrutural customer. O nome de cada marca de índice estrutural é exibido com a sua
expressão de índice.

CLOSE 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 expressão de índice
ELSE
EXIT && Sai do loop quando não forem localizadas mais marcas
ENDIF
ENDFOR
KEYBOARD, comando

Coloca a expressão de caracteres especificada no buffer de teclado.

Sintaxe

KEYBOARD cValorTeclado
[PLAIN] [CLEAR]

Argumentos

cValorTeclado Especifica a expressão de caracteres que é colocada no buffer de teclado. A


expressão de caracteres pode ser uma seqüência de caracteres, um rótulo de tecla, um conjunto de
rótulos de tecla ou uma função definida pelo usuário que retorna uma expressão de caractere.

Se cValorTeclado for um rótulo de tecla, deverá ser incluído entre chaves e aspas simples. Por
exemplo:

KEYBOARD '{CTRL+LEFTARROW}'

Para obter uma lista de rótulos de tecla, consulte ON KEY LABEL.

O buffer de teclado pode ser preenchido com até 128 caracteres. Uma vez que o buffer de teclado
estiver cheio, os caracteres adicionais são ignorados.
PLAIN Se houver macros de teclado definidas ou comandos ON KEY LABEL ativos, você poderá
incluir PLAIN para ignorar estas atribuições de tecla. PLAIN preenche o teclado com o caractere de
tecla literal, não com a atribuição de tecla.

Por exemplo, se você tiver atribuído um comando à tecla A com ON KEY LABEL e A estiver
incluído em cValorTeclado, utilize PLAIN para colocar a letra A no buffer de teclado. O comando
ON KEY LABEL atribuído a A não é executado.

CLEAR Esvazia o buffer de teclado antes que ele seja preenchido com cValorTeclado.

Comentários

Use KEYBOARD para colocar caracteres no buffer de teclado. Os caracteres permanecem no


buffer até que o Visual FoxPro procure uma entrada de teclado. Nessa etapa, os caracteres são lidos
e trabalhados como se tivessem sido digitados diretamente a partir do teclado.

É possível utilizar KEYBOARD para criar sistemas de demonstração auto-executáveis para os


aplicativos.

LASTKEY( ), função

Retorna um número inteiro correspondente à última tecla pressionada.

Sintaxe

LASTKEY( )

Tipos de retorno

Numérico

Comentários
Os valores retornados por LASTKEY( ) são iguais aos valores retornados por INKEY( ). Para obter
uma lista de teclas e seus valores de retorno, consulte INKEY( ).

LASTKEY( ) é atualizado quando você se movimenta por controles.

Obs : Veja a funcao INKEY( ) – Lista de valores das teclas

LEFT( ), função

Retorna um número especificado de caracteres de uma expressão de caractere, a partir do caractere


mais à esquerda.

Sintaxe

LEFT(cExpressão, nExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caractere a partir da qual LEFT( ) retorna caracteres.

nExpressão Especifica o número de caracteres retornados da expressão de caractere. Caso


nExpressão seja maior que o comprimento de cExpressão, será retornada toda a expressão de
caractere. A seqüência vazia será retornada se nExpressão for negativa ou 0.

A função LEFT( ) é idêntica a SUBSTR( ) com uma posição inicial 1.

LEFT( ), exemplo da função

CLEAR
? LEFT('Redmond, WA', 4) && Exibe Redmond
LEFTC( ), função

Retorna um número especificado de caracteres de uma expressão de caractere, a partir do caractere


mais à esquerda.

Sintaxe

LEFTC(cExpressão, nExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a partir da qual LEFTC( ) retorna caracteres.


nExpressão Especifica o número de caracteres retornados da expressão de caracteres. Caso
nExpressão seja maior que o comprimento de cExpressão, será retornada toda a expressão de
caracteres. A seqüência vazia será retornada se nExpressão for negativa ou 0.

Comentários

LEFTC( ) foi elaborada para expressões contendo caracteres de byte duplo. Se a expressão contiver
apenas caracteres de byte único, LEFTC( ) será equivalente a LEFT( ).

LEFTC( ) retorna um número especificado de caracteres de uma expressão de caracteres, contendo


qualquer combinação de caracteres de bytes único ou duplo.

A função LEFTC( ) é idêntica a SUBSTRC( ) com uma posição inicial 1.

LEN( ), função

Retorna o número de caracteres em uma expressão de caracteres.

Sintaxe

LEN(cExpressão)
Tipos de retorno

Numérico

Argumentos

cExpressão Especifica a expressão de caracteres para a qual LEN( ) retornará o número de


caracteres.

Comentários

Utilize LEN( ) para determinar o comprimento de uma expressão de caracteres.

LEN( ), exemplo da função

O exemplo a seguir abre a tabela customer no banco de dados testdata. LEN( ) é utilizada para
exibir as larguras dos campos cust_id e contact.

CLOSE 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( ), função

Retorna o número de caracteres em uma expressão de caracteres ou campo Memo.

Sintaxe

LENC(cExpressão)

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica a expressão de caracteres para a qual LENC( ) retornará o número de


caracteres.

Comentários

LENC( ) foi elaborada para expressões contendo caracteres de byte duplo. Se a expressão contiver
apenas caracteres de byte único, LENC( ) será equivalente a LEN( ).

LENC( ) retorna o número de caracteres em uma expressão de caracteres ou campo Memo que
contenha qualquer combinação de caracteres de byte único e duplo.
LIKE( ), função

Determina se uma expressão de caracteres corresponde a outra expressão de caracteres.

Sintaxe

LIKE(cExpressão1, cExpressão2)

Tipos de retorno

Lógico

Argumentos

cExpressão1 Especifica a expressão de caracteres que LIKE( ) compara à cExpressão2.


cExpressão1 pode conter caracteres curingas como * e ?. O ponto de interrogação (?) corresponde a
qualquer caractere simples na cExpressão2 e o asterisco (*) corresponde a qualquer número de
caracteres. Você pode misturar qualquer quantidade de caracteres curinga em qualquer combinação
na cExpressão1.
cExpressão2 Especifica a expressão de caracteres que LIKE( ) compara à cExpressão1. A
cExpressão2 deve corresponder à cExpressão1, letra por letra, para que LIKE( ) retorne verdadeiro
(.T.).

Comentários

LIKE( ) retorna verdadeiro (.T.) se cExpressão1 corresponder a cExpressão2; caso contrário,


retorna falso (.F.).

SET COMPATIBLE determina o modo como LIKE( ) avalia a cExpressão1 e cExpressão2. Se SET
COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaços à direita de
cExpressão1 e cExpressão2 serão removidos antes que elas sejam comparadas. Se SET
COMPATIBLE estiver desativado (OFF) ou estiver definido como FOXPLUS, todos os espaços à
direita em cExpressão1 e cExpressão2 serão utilizados na comparação.

LIKE( ), exemplo da função

No exemplo a seguir, todos os nomes de produtos na tabela products que iniciarem com as letras
“Ch” serão exibidos.

CLOSE 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( ), função

Determina se uma expressão de caracteres corresponde a outra expressão de caracteres.

Sintaxe

LIKEC(cExpressão1, cExpressão2)
Tipos de retorno

Lógico

Argumentos

cExpressão1 Especifica a expressão de caractere que LIKEC( ) compara à cExpressão2.


cExpressão1 pode conter caracteres curinga como * e ?. O ponto de interrogação (?) corresponde a
qualquer caractere simples na cExpressão2 e um asterisco (*) corresponde a qualquer número de
caracteres. Você pode misturar qualquer número de caracteres curinga em qualquer combinação na
cExpressão1.

cExpressão2 Especifica a expressão de caractere que LIKEC( ) compara à cExpressão1. A


cExpressão2 deve corresponder à cExpressão1, caractere por caractere, para que LIKE( ) retorne
verdadeiro (.T.).

Comentários

LIKEC( ) foi elaborada para expressões que contenham caracteres de byte duplo. Se a expressão
contiver apenas caracteres de byte único, LIKEC( ) será equivalente a LIKE( ).

LIKEC( ) determina se uma expressão de caracteres corresponde a outra expressão de caracteres.


LIKEC( ) retorna verdadeiro (.T.) se a cExpressão1 corresponder à cExpressão2; caso contrário,
retorna falso (.F.).

SET COMPATIBLE determina como LIKEC( ) compara os espaços em branco contidos em


cExpressão1 e cExpressão2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4,
todos os espaços à direita de cExpressão1 e cExpressão2 serão removidos antes que elas sejam
comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido FOXPLUS,
todos os espaços à direita na cExpressão1 e cExpressão2 serão utilizados na comparação.
LINENO( ), função

Retorna o número de uma linha em execução em um programa em relação à primeira linha do


programa principal.

Sintaxe

LINENO([1])

Tipos de retorno

Numérico

Argumentos

1 Retorna o número da linha em relação à primeira linha do programa ou procedimento atual. Se


você omitir o argumento 1, o número da linha será retornado em relação à primeira linha do
programa principal.

Comentários

As linhas do programa são contadas a partir do início do programa. As linhas de comentários, as


linhas de continuação e as linhas em branco são incluídas na contagem do número de linhas. Se um
programa for suspenso durante a execução, LINENO( ) retornará o número da linha em que a
execução do programa foi suspensa. LINENO( ) retornará 0 se um programa for cancelado.

Como padrão, os números das linhas são retornados em relação ao início do programa principal.
Caso seja chamado um procedimento, a numeração das linhas será retomada do início do programa
de chamada.

LINENO( ) é útil para depurar programas. Você pode definir um ponto de interrupção para parar a
execução do programa em um número de linha específico, emitindo o comando abaixo na janela
Depurar:

LINENO( ) = nExpressão

A execução do programa será suspensa quando o valor de LINENO( ) for igual a nExpressão.

LINENO( ), exemplo da função

O exemplo a seguir faz parte de uma rotina simples de manipulação de erro.


ON ERROR DO bug_proc WITH LINENO( )
BRWS && Provoca um 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 informações sobre o banco de dados atual de modo contínuo.


Sintaxe

LIST DATABASE
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona a saída de LIST DATABASE para uma impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir uma caixa de
diálogo Imprimir antes de iniciar a impressão. Coloque PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de LIST DATABASE para o arquivo especificado com
NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado (ON), o Visual FoxPro
exibirá um aviso perguntando se você deseja sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

Utilize DBGETPROP( ) para retornar outras informações sobre o banco de dados atual.

LIST DATABASE, exemplo do comando

O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends é
criada e automaticamente adicionada ao banco de dados. DISPLAY TABLES é utilizado para exibir
as tabelas no banco de dados e LIST DATABASES é utilizado para listar informações sobre as
tabelas no banco de dados.

CREATE DATABASE people


CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas no banco de dados
LIST DATABASE && Lista informações das tabelas
LIST TABLES, comando

Exibe todas as tabelas e informações sobre as tabelas contidas no banco de dados atual sem
interrupção.

Sintaxe

LIST TABLES
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona as informações retornadas de LIST TABLES para uma


impressora.

Você pode incluir PROMPT para exibir uma caixa de diálogo Imprimir antes de iniciar a impressão.
Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída de LIST TABLES para o arquivo de disco especificado
com NomeArquivo. Se o arquivo já existir e SET SAFETY estiver ativado (ON), o Visual FoxPro
exibirá um aviso perguntando se você deseja sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

Comentários

As informações retornadas incluem os caminhos e nomes das tabelas e constituem um subconjunto


das informações apresentadas quando se utiliza LIST STATUS. Entretanto, as informações
fornecidas por meio de LIST TABLES são relativas somente a tabelas, sendo exibidas
independentemente de as tabelas estarem ou não abertas.

LIST TABLES, exemplo de comando


O exemplo a seguir abre a tabela customer no banco de dados testdata. LIST TABLES é utilizado
para listar informações sobre as tabelas no banco de dados.

CLOSE 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 informações sobre tabelas no banco de dados

LIST, comandos

Exibe informações do ambiente ou da tabela de modo contínuo.

Sintaxe

LIST
[FIELDS ListaCampos]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[OFF]
[NOCONSOLE]
[NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
– Ou –
LIST FILES
[ON Unidade]
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
– Ou –
LIST MEMORY
[LIKE EstruturaArquivo]
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
– Ou –
LIST STATUS
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
– Ou –
LIST STRUCTURE
[IN nÁreaTrabalho | cAliasTabela]
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Comentários

Esses comandos LIST são idênticos aos comandos DISPLAY, com exceção das diferenças a seguir:

· O escopo para LIST tem como padrão os registros ALL.


· LIST não emite um aviso depois de preencher a janela principal do Visual FoxPro ou uma
janela definida pelo usuário com informações.
· LIST não exibe os registros sinalizados para exclusão quando SET DELETED está ativado
(ON).

Para obter maiores informações sobre os comandos LIST, consulte os comandos correspondentes
em DISPLAY.

LOCAL, comando

Cria variáveis e matrizes de variáveis locais.

Sintaxe

LOCAL ListaVar
– Ou –
LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...

Argumentos

ListaVar Especifica uma ou mais variáveis locais a serem criadas.

[ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1])


[, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes locais a
serem criadas. Consulte DIMENSION para obter uma descrição de cada argumento.

Comentários

As variáveis e as matrizes de variáveis locais só podem ser utilizadas e modificadas dentro do


procedimento ou função em que são criadas, e não podem ser acessadas por programas de nível
mais alto ou baixo. As matrizes e variáveis locais são liberadas quando é concluída a execução do
procedimento ou função que as contém.

As variáveis e matrizes criadas com LOCAL são inicializadas com um valor falso (.F.). Qualquer
variável de memória ou matriz que você deseje declarar como local deve ser declarada local antes
de ter um valor atribuído. O Visual FoxPro gera uma mensagem de erro quando você atribui um
valor a uma variável ou matriz e posteriormente a declara local utilizando LOCAL.

As variáveis locais podem ser passadas por referência.

Não abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais.
LOCATE, comando

Procura seqüencialmente na tabela o primeiro registro correspondente à expressão lógica


especificada.

Sintaxe

LOCATE FOR lExpressao1


[Escopo]
[WHILE]
[NOOPTIMIZE]

Argumentos

FOR lExpressao1 procura seqüencialmente na tabela atual o primeiro registro correspondente à


expressão lógica lExpressao1.

Rushmore otimizará uma consulta criada com LOCATE FOR se lExpressao1 for uma expressão
otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a serem localizados. Apenas os registros que


estiverem dentro do intervalo serão localizados. As cláusulas de escopo são: ALL, NEXT
nRegistros, RECORD nNúmeroRegistro e REST. Os comandos que incluem Escopo operam apenas
na tabela da Área de trabalho ativa.

O escopo padrão de LOCATE é ALL, isto é, todos os registros.

WHILE lExpressão2 Especifica uma condição por meio da qual os registros são procurados, desde
que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimização Rushmore de LOCATE.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, "Otimizando aplicativos", no Guia do Desenvolvedor.

Comentários

A tabela não precisa ser indexada.


Se LOCATE localizar um registro correspondente, você poderá utilizar RECNO( ) para retornar o
número do registro correspondente. Se um registro correspondente for localizado, FOUND( )
retornará verdadeiro (.T.) e EOF( ) retornará falso (.F.). Se SET TALK estiver ativado (ON), será
exibido o número do registro correspondente.

Após LOCATE localizar um registro correspondente, você pode emitir CONTINUE para procurar
os registros correspondentes adicionais no resto da tabela. Quando CONTINUE é executado, o
processo de procura retorna, iniciando pelo registro logo após o registro correspondente. Você pode
emitir CONTINUE várias vezes até o final do escopo ou até chegar ao fim da tabela.

Se uma correspondência não for localizada, RECNO( ) retornará o número de registros na tabela
mais 1, FOUND( ) retornará falso (.F.) e EOF( ) retornará verdadeiro (.T.).

LOCATE e CONTINUE são específicos da Área de trabalho atual. Se uma outra Área de trabalho
for selecionada, o processo de procura original poderá continuar quando a Área de trabalho original
for novamente selecionada.

LOCATE, exemplo do comando

No exemplo a seguir são localizados registros de clientes da Alemanha. Em seguida, a contagem


total é exibida.

CLOSE DATABASES
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( ), função

Localiza um arquivo no disco e retorna o nome do arquivo com o seu caminho.


Sintaxe

LOCFILE(cNomeArquivo [, cExtensõesArquivo] [, cLegendaDiálogo])

Tipos de retorno

Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser localizado. Se cNomeArquivo incluir somente


um nome de arquivo, LOCFILE( ) irá pesquisar primeiro a pasta ou o diretório padrão do Visual
FoxPro. Caso o arquivo não seja localizado na pasta ou no diretório padrão, o caminho do Visual
FoxPro será pesquisado a seguir. Utilize SET PATH para especificar o caminho do Visual FoxPro.

Se cNomeArquivo incluir um caminho e um nome de arquivo, a localização especificada será


pesquisada. Se o arquivo não puder ser encontrado na localização especificada, LOCFILE( ) irá
pesquisar a pasta ou o diretório padrão do Visual FoxPro e, em seguida, o caminho do Visual
FoxPro.

Se o arquivo for localizado, LOCFILE( ) retornará o nome do arquivo e o caminho.

cExtensõesArquivo Especifica as extensões do arquivo a ser localizado. Se o nome de arquivo


especificado com cNomeArquivo não incluir uma extensão, o Visual FoxPro aplicará as extensões
de arquivo listadas em cExtensõesArquivo ao nome do arquivo e irá procurar novamente o arquivo.

cExtensõesArquivo também especifica as extensões dos nomes dos arquivos exibidos na caixa de
diálogo Abrir, quando não for possível localizar o arquivo especificado.

cExtensõesArquivo pode assumir diversas formas:

· Se cExtensõesArquivo contiver uma única extensão (por exemplo, .PRG), somente os


arquivos com essa extensão serão exibidos.
· cExtensõesArquivo pode também conter curingas (* e ?). Todos os arquivos com extensões
correspondentes aos critérios de caracteres curinga serão exibidos. Por exemplo, se
cExtensõesArquivo for ?X?, todos os arquivos com a extensão .FXP, .EXE ou .TXT serão exibidos.
· No Visual FoxPro para Windows, cExtensõesArquivo pode conter uma descrição de
arquivo seguida por uma extensão de arquivo ou uma lista de extensões separadas por vírgulas. A
descrição do arquivo aparece na caixa de listagem Arquivos do tipo. Separa a descrição de arquivo
da extensão de arquivo ou lista das extensões de arquivo com dois pontos (:). Separa múltiplas
descrições de arquivo e suas extensões com um ponto e vírgula (;).

Por exemplo, se cExtensõesArquivo for “Texto:TXT” a descrição do arquivo “Texto” aparecerá na


caixa de listagem Arquivos do tipo e todos os arquivos com uma extensão .TXT serão exibidos.

Se cExtensõesArquivo for “Tabelas:DBF; Arquivos:TXT,BAK” as descrições do arquivo de


“Tabelas” e “Arquivos” aparecerão na caixa de listagem Arquivos do tipo. Quando “Tabelas” for
escolhido a partir da caixa de listagem Arquivos do tipo, todos os arquivos com uma extensão .DBF
serão exibidos. Quando “Arquivos” for escolhido a partir da caixa de listagem Arquivos do tipo,
todos os arquivos com extensões .TXT e .BAK serão exibidos.

cLegendaDiálogo Especifica o texto que você deseja utilizar para avisar o usuário. O texto é
exibido na caixa de diálogo Abrir.

Comentários

A caixa de diálogo Abrir será exibida se não for possível localizar o arquivo na pasta ou no diretório
padrão, no caminho do Visual FoxPro ou em uma localização especificada. A caixa de diálogo
Abrir pode ser utilizada para localizar o arquivo. Quando um arquivo é selecionado na caixa de
diálogo Abrir, o nome do arquivo é retornado com o seu caminho.

Se você sair da caixa de diálogo Abrir selecionando Cancelar, pressionando ESC ou selecionando
Fechar no menu Controle, o Visual FoxPro irá gerar uma mensagem de erro e LOCFILE( ) não irá
retornar um valor.

LOCK( ), função

Tenta bloquear um ou mais registros em uma tabela.

Sintaxe

LOCK([nÁreaTrabalho | cAliasTabela]
| [cListaNúmeroRegistro, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Tenta bloquear o registro atual em uma tabela aberta de uma Área
de trabalho específica. nÁreaTrabalho especifica o número da Área de trabalho, enquanto que
cAliasTabela especifica o alias da tabela. Se uma Área de trabalho ou um alias de tabela não for
especificado, LOCK( ) tentará bloquear o registro atual na tabela da Área de trabalho atual.

cListaNúmeroRegistro Especifica a lista de um ou mais números de registros que se deve incluir


para tentar bloquear registros múltiplos. SET MULTILOCKS deve estar ativado (ON) e você deve
incluir a Área de trabalho ou o alias da tabela para o qual está tentando colocar bloqueios de
registros múltiplos.

LOCK( ) tenta bloquear todos os registros especificados. Os números dos registros especificados
com cListaNúmeroRegistro são separados por vírgulas. Por exemplo, para tentar bloquear os quatro
primeiros registros de uma tabela, cListaNúmeroRegistro deverá conter 1,2,3,4.

Você pode, também, bloquear registros múltiplos, movendo o ponteiro do registro para o registro
que gostaria de bloquear, emitindo LOCK( ) ou RLOCK( ) e, em seguida, repetindo essas etapas
para cada registro adicional.

No Visual FoxPro, 0 pode ser especificado como um número de registro. Isso permite que se tente
bloquear o cabeçalho da tabela.

Importante Mantenha o cabeçalho da tabela bloqueado durante o menor tempo possível pois
outros usuários não poderão adicionar registros à tabela enquanto o cabeçalho estiver bloqueado.

Libere o bloqueio do cabeçalho da tabela com UNLOCK RECORD 0, UNLOCK ou UNLOCK


ALL.

Se todos os registros especificados em cNúmerosRegistros forem bloqueados com êxito, LOCK( )


retornará verdadeiro (.T.). Mesmo que um registro especificado com cNúmerosRegistros não possa
ser bloqueado, LOCK( ) retornará falso (.F.) e nenhum registro será bloqueado. Entretanto, todos os
bloqueios de registros existentes permanecerão no seu lugar. O bloqueio de registros múltiplos é um
processo aditivo. Os bloqueios de registros adicionais não liberam os bloqueios em outros registros.

O número máximo de registros que podem ser bloqueados em cada Área de trabalho é de
aproximadamente 8.000. É sempre mais fácil bloquear toda a tabela do que um número pequeno de
registros.

Comentários

LOCK( ) é idêntico a RLOCK( ).

Se o bloqueio ou os bloqueios forem feitos com êxito, LOCK( ) retornará verdadeiro (.T.). Os
registros bloqueados estão disponíveis para o usuário que fez os bloqueios para acesso de leitura e
gravação; estão disponíveis a todos os outros usuários da rede para acesso somente para leitura.

A execução de LOCK( ) não garante que o bloqueio ou os bloqueios de registros sejam feitos com
êxito. Não se pode fazer um bloqueio em um registro já bloqueado por outro usuário ou em uma
tabela bloqueada por outro usuário. Se, por algum motivo, não for possível fazer bloqueio ou
bloqueios dos registros, LOCK( ) retornará falso (.F.).
Como padrão, LOCK( ) faz uma tentativa para bloquear um registro. Utilize SET REPROCESS
para repetir, automaticamente, o bloqueio do registro quando a primeira tentativa falhar. SET
REPROCESS determina o número de tentativas de bloqueio ou a duração das tentativas de bloqueio
quando a tentativa inicial não for bem sucedida. Para obter maiores informações, consulte SET
REPROCESS.

SET MULTILOCKS determina se é possível bloquear os registros múltiplos de uma tabela. Se SET
MULTILOCKS estiver desativado (OFF) - o padrão -, você poderá bloquear apenas um único
registro em uma tabela. Quando SET MULTILOCKS está ativado (ON), você pode bloquear
registros múltiplos em uma tabela. Para obter maiores informações, consulte SET MULTILOCKS.

Desbloqueando registros Um registro da tabela pode ser desbloqueado apenas pelo usuário que fez
o bloqueio. Para liberar os bloqueios de registros, utilize UNLOCK, fechando a tabela ou saindo do
Visual FoxPro.

UNLOCK pode ser utilizado para liberar os bloqueios de registros na Área de trabalho atual, em
uma Área de trabalho específica ou em todas as áreas de trabalho. Para obter maiores informações,
consulte UNLOCK.

A alternância de ativado (ON) para desativado (OFF) ou vice-versa em SET MULTILOCKS


executa implicitamente UNLOCK ALL — todos os bloqueios de registros em todas as áreas de
trabalho são liberados.

As tabelas podem ser fechadas com USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informações sobre como bloquear arquivos e registros e compartilhar tabelas
em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do
Desenvolvedor.

LOCK( ), exemplo da função

O exemplo a seguir bloqueia e desbloqueia os primeiros quatro registros nas tabelas customer e
employee.

CLOSE 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( ), função

Retorna o logaritmo natural (base e) da expressão numérica especificada.

Sintaxe

LOG(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual LOG( ) retorna o valor de x na equação
e^x = nExpressão. nExpressão deve ser maior que 0.

Comentários
A base do logaritmo natural é a constante e. O número de casas decimais retornado no resultado é
especificado como SET DECIMALS.

LOG( ), exemplo da função

CLEAR
? LOG(1) && Exibe 0.00
STORE EXP(2) TO gneSquare
? LOG(gneSquare) && Exibe 2.00

LOG10( ), função

Retorna o logaritmo comum (base 10) da expressão numérica especificada.

Sintaxe
LOG10(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual LOG10( ) retorna o valor de x na equação
10^x = nExpressão. nExpressão deve ser maior que 0.

Comentários

A base do logaritmo comum é 10. O número de casas decimais retornado no resultado é


especificado como SET DECIMALS.

LOG10( ), exemplo da função

CLEAR
? LOG10(10) && Exibe 1.00
STORE 100 TO gnBaseTen
? LOG10(gnBaseTen) && Exibe 2.00
? LOG10(gnBaseTen^2) && Exibe 4.00
LOOKUP( ), função

Procura em uma tabela o primeiro registro com um campo correspondente à expressão especificada.

Sintaxe

LOOKUP(CampoRetorno, eExpressãoPesquisa, CampoPesquisado [, cNomeMarca])

Tipos de retorno

Caractere, Numérico, Moeda, Flutuante, Número inteiro, Duplo, Data, DataHora ou Lógico

Argumentos

CampoRetorno Especifica o campo cujo conteúdo é retornado por LOOKUP( ) quando a procura é
bem sucedida. Se a procura não obtiver êxito, LOOKUP( ) retornará uma seqüência de caracteres
vazia, do mesmo tamanho e com mesmo tipo de dados que CampoRetorno.

eExpressãoPesquisa Especifica a expressão de pesquisa. A expressão de pesquisa é, geralmente,


composta pelo conteúdo de um campo da tabela ou pode corresponder à expressão do índice ativo
ou à marca de índice composto.

CampoPesquisado Especifica o campo a ser pesquisado. Se a tabela não tiver um índice ativo,
LOOKUP( ) executará uma pesquisa seqüencial através do campo especificado com
CampoPesquisado.

Se um arquivo ou marca de índice, cuja expressão de chave de índice eqüivale ao campo de


pesquisa especificado, estiver aberta, LOOKUP( ) utilizará o arquivo ou marca de índice para
executar uma pesquisa mais rápida.

cNomeMarca Especifica o nome de uma marca de índice composto para ser utilizado por
LOOKUP( ) na pesquisa. A pesquisa de um índice composto é a pesquisa mais rápida que
LOOKUP( ) pode executar.

Comentários
Se a pesquisa obtiver êxito, LOOKUP( ) moverá o ponteiro do registro para o registro
correspondente e retornará o conteúdo de um campo especificado no registro.

Se a expressão de pesquisa não for localizada, LOOKUP( ) retornará uma seqüência de caracteres
vazia, de mesmo tamanho e com mesmo tipo de dados que CampoRetorno. O ponteiro do registro
está posicionado no fim do arquivo.

Se LOOKUP( ) for utilizado para pesquisar uma tabela pai, os ponteiros dos registros de todas as
tabelas filho relacionadas serão movidas para os registros relacionados.

Esta função não pode ser otimizada com Rushmore.

LOOKUP( ), exemplo da função

No exemplo a seguir, LOOKUP( ) utiliza a marca de índice company para pesquisar a primeira
ocorrência da seqüência “Ernst Handel”. Se a pesquisa obtiver êxito, LOOKUP( ) retornará o
conteúdo do campo contact e @ ... SAY exibirá o valor de retorno.

CLOSE 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( ), função

Retorna uma expressão de caracteres especificada em letras minúsculas.

Sintaxe

LOWER(cExpressão)

Tipos de retorno

Caracteres

Argumentos

cExpressão Especifica a expressão de caracteres convertida por LOWER( ).

Comentários

LOWER( ) converte todas as letras maiúsculas (A—Z) na expressão de caracteres para letras
minúsculas (a—z). Todos os outros caracteres na expressão de caracteres permanecem inalterados.

LOWER( ), exemplo da função

STORE 'FOX' TO gcName


CLEAR
? LOWER(gcName) && Exibe fox
LPARAMETERS, comando

Atribui dados passados de um programa de chamada para matrizes ou variáveis locais.

Sintaxe

LPARAMETERS ListaParâmetros

Argumentos

ListaParâmetros Especifica os nomes de matrizes ou variáveis de memória locais aos quais os


dados são atribuídos.

Os parâmetros em ListaParâmetros são separados por vírgulas. A instrução LPARAMETERS deve


ter pelo menos o mesmo número de parâmetros que a instrução DO ... WITH. Se mais variáveis ou
matrizes forem listadas na instrução PARAMETERS do que passadas por DO ... WITH, as
variáveis ou matrizes restantes serão inicializadas com um valor falso (.F.). Podem ser passados no
máximo 27 parâmetros.

Você pode utilizar PARAMETERS( ) para determinar o número de parâmetros passados para o
programa, função definida pelo usuário ou procedimento executado mais recentemente.

Comentários

LPARAMETERS cria variáveis ou matrizes locais em um programa, função definida pelo usuário
ou procedimento chamado. Utilize PARAMETERS para criar matrizes ou variáveis particulares.
LPARAMETERS deverá ser a primeira instrução executável no programa, função definida pelo
usuário ou procedimento chamado se você passar valores, variáveis ou matrizes para um deles.

Como padrão, DO ... WITH passa variáveis e matrizes para procedimentos por referência. Quando
um valor for alterado no programa chamado, o novo valor será repassado para a variável ou matriz
associada no programa de chamada. Se você desejar passar uma variável ou matriz por valor,
coloque-a entre parênteses na lista de parâmetros de DO ... WITH. As alterações feitas no
parâmetro do programa chamado não são repassadas para o programa de chamada.

Como padrão, as variáveis são passadas por referência para um procedimento e por valor para uma
função definida pelo usuário. Utilize SET UDFPARMS TO REFERENCE para passar variáveis
para um procedimento ou função definida pelo usuário por referência.

LTRIM( ), função

Retorna a expressão de caracteres especificada sem os espaços à esquerda.

Sintaxe

LTRIM(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos espaços à esquerda são removidos por
LTRIM( ).

Comentários
Esta função é especialmente útil para remover os espaços à esquerda inseridos quando STR( ) é
utilizado para converter um valor numérico em uma seqüência de caracteres.

LTRIM( ), exemplo da função

STORE 'Redmond' TO gcCity


STORE ' Washington' TO gcState
CLEAR
? gcCity, gcState && Exibe Redmond Washington
? gcCity, LTRIM(gcState) && Exibe Redmond Washington

LUPDATE( ), função

Retorna a data da última vez em que uma tabela foi atualizada.

Sintaxe
LUPDATE([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Data

Argumentos

nÁreaTrabalho | cAliasTabela Retorna a última atualização feita em uma tabela aberta em uma
outra Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela
especifica o alias de tabela. LUPDATE( ) retornará a data da última atualização feita na tabela na
Área de trabalho atualmente selecionada, caso você omita nÁreaTrabalho e cAliasTabela.

Se nenhuma tabela estiver aberta na Área de trabalho especificada, LUPDATE( ) retornará uma
data em branco. Se nenhuma tabela possuir o alias especificado, o Visual FoxPro irá gerar uma
mensagem de erro.

Comentários

Esta função é útil em procedimentos de atualização.

LUPDATE( ), exemplo da função

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

CLEAR
? LUPDATE( ) && Exibe a data da última atualização
MAX( ), função

Avalia um conjunto de expressões e retorna a expressão com o valor máximo.

Sintaxe

MAX(eExpressão1, eExpressão2 [, eExpressão3...])

Tipos de retorno

Caractere, Numérico, Moeda, Duplo, Flutuante, Data ou Data e Hora

Argumentos

eExpressão1, eExpressão2 [, eExpressão3...] Especifica as expressões a partir das quais você


deseja que MAX( ) retorne a expressão com o maior valor. Todas as expressões devem ser do
mesmo tipo de dados.

MAX( ), exemplo da função

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo
valores aleatórios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores máximos e
mínimos na tabela.

CLOSE 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 aleatórios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mínimo
gnMinimum = 100 && Inicializa o valor máximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo

MD | MKDIR, comando

Sintaxe

MD cCaminho | MKDIR cCaminho

Argumentos

cCaminho Especifica um caminho (com um designador de unidade de disco e diretórios) ou um


diretório.

Se cCaminho for um diretório sem um designador de unidade de disco, o diretório será criado
como um subdiretório do diretório padrão atual do Visual FoxPro.

Comentários

O Visual FoxPro irá gerar uma mensagem de erro se você tentar criar um diretório já existente.

MD | MKDIR, exemplo do comando


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

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro


MKDIR mytstdir && Cria um novo diretório
CHDIR mytstdir && Altera ao novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório
SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro
RMDIR mytstdir && Remove o novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

MDX( ), função

Retorna o nome do arquivo de índice composto .CDX aberto que contém o número da posição de
índice especificada.

Sintaxe

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

Tipos de retorno

Caractere
Argumentos

nNúmeroÍndice Especifica o nome de arquivo de índice composto a ser retornado. Se a tabela


possui um arquivo de índice composto estrutural e nNúmeroÍndice é 1, o nome do arquivo de índice
composto estrutural (que é sempre igual ao nome da tabela) é retornado. Se nNúmeroÍndice é 2, o
nome do primeiro arquivo de índice composto especificado com USE ou SET INDEX é retornado.
Se nNúmeroÍndice é 3, o segundo nome do arquivo de índice composto é retornado e assim por
diante. Se nNúmeroÍndice é maior do que o número de arquivos de índice composto abertos, uma
seqüência vazia é retornada.

Se a tabela não possui um arquivo de índice composto estrutural e nNúmeroÍndice é 1, o nome do


primeiro arquivo de índice composto especificado com USE ou SET INDEX é retornado. Se
nNúmeroÍndice é 2, o segundo nome de arquivo de índice composto é retornado e assim por diante.
Se nNúmeroÍndice é maior do que o número de arquivos de índice composto abertos, uma
seqüência vazia é retornada.

nÁreaTrabalho Especifica o número da Área de trabalho para arquivos de índice composto abertos
em áreas de trabalho diferentes da que está sendo utilizada no momento. Se você omitir este
argumento opcional, os nomes de arquivos de índice composto serão retornados para a Área de
trabalho atual.

cAliasTabela Especifica o alias de tabela para arquivos de índice composto abertos em áreas de
trabalho diferentes da que está sendo utilizada no momento. Se você omitir este argumento
opcional, os nomes de arquivos de índice composto serão retornados para a Área de trabalho atual.

Comentários

MDX( ) é idêntico a CDX( ).

Os arquivos de índice podem ser abertos para uma tabela com a cláusula INDEX do comando USE
ou com SET INDEX. Um arquivo de índice composto estrutural é automaticamente aberto com a
sua tabela. MDX ( ) ignora todos os arquivos de índice .IDX especificados com USE ou SET
INDEX.

Utilize TAG( ) para retornar nomes de marca a partir de um arquivo de índice composto; utilize
NDX( ) para retornar o nome de um arquivo de índice .IDX aberto.

No Visual FoxPro for Windows, quando SET FULLPATH está ativado (ON), MDX( ) retorna o
caminho para o arquivo .CDX com o nome de arquivo .CDX. Quando SET FULLPATH está
desativado (OFF), MDX( ) retorna a unidade onde se encontra o arquivo .CDX com o nome de
arquivo .CDX.

No Visual FoxPro for Macintosh, MDX( ) ignora a definição de FULLPATH e sempre retorna o
caminho para o arquivo .CDX com o nome de arquivo .CDX.
MDY( ), função

Retorna a expressão de data e hora ou data especificada em formato mês-dia-ano, com o nome do
mês escrito por extenso.

Sintaxe

MDY(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica a expressão de data para retornar em formato mês-dia-ano.

tExpressão Especifica a expressão de data e hora para retornar em formato mês-dia-ano.

Comentários
Se SET CENTURY estiver desativado (OFF), a expressão de caractere será retornada em um
formato mês, dd, aa. Se SET CENTURY estiver ativado (ON), o formato será mês, dd, aaaa.

MDY( ), exemplo da função

O exemplo a seguir cria uma função definida pelo usuário que retorna uma data com o dia da
semana correspondente.

SET CENTURY OFF

CLEAR
? 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( ), função

Retorna a quantidade de memória disponível para executar um programa externo.

Sintaxe

MEMORY( )
Tipos de retorno

Numérico

Comentários

No Visual FoxPro, MEMORY( ) sempre retorna 640.

MEMORY( ) é semelhante a SYS(12), com duas exceções:

· MEMORY( ) retorna a quantidade de memória disponível em kilobytes; SYS(12) retorna a


quantidade de memória em bytes.
· MEMORY( ) retorna uma expressão numérica. SYS(12) retorna seu valor como uma
seqüência de caracteres.

MENU( ), função

Retorna o nome da barra de menus ativa como uma seqüência de caracteres maiúsculos.

Sintaxe

MENU( )

Tipos de retorno

Caractere

Comentários

MENU( ) retorna uma seqüência vazia se não houver menu ativo. Utilize o Criador de menus para
criar um menu e ativá-lo.

MENU( ), exemplo da função

O exemplo a seguir utiliza MENU( ) para passar o nome de uma barra de menus para um
procedimento. A barra de menus do sistema atual é gravada na memória com SET SYSMENU
SAVE e todos os títulos de menus do sistema são removidos com SET SYSMENU TO.
Vários títulos de menus são criados com DEFINE PAD. Quando você escolhe um título de menu,
MENU( ) passa o nome da barra de menus do sistema do Visual FoxPro, _MSYSMENU, para o
procedimento choice. O procedimento choice exibe o nome do título de menu escolhido e o nome
da barra de menus do sistema. Se você escolher o menu Sair, o menu do sistema do Visual FoxPro
original será restaurado.

*** Save this program as MENUEXAM.PRG in the default VFP directory.***


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( ), função

Retorna a mensagem de erro atual como uma seqüência de caracteres ou o conteúdo da linha do
programa que causou o erro.

Sintaxe

MESSAGE([1])

Tipos de retorno

Caractere

Argumentos

1 Se MESSAGE( ) for utilizado em uma rotina ON ERROR, inclua este argumento para retornar o
código de origem do programa que causou o erro. Se o código de origem do programa não estiver
disponível, MESSAGE(1) retornará um dos seguintes itens:

· do programa se a linha for substituída por macro.


· Um comando se a linha contiver um comando sem cláusulas adicionais.
· Um comando seguido de três pontos (...) se a linha contiver um comando e cláusulas
adicionais.

Comentários

Ao contrário de ERROR( ), MESSAGE( ) não é redefinido por RETURN ou RETRY.


MESSAGE( ), exemplo da função

O exemplo a seguir exibe saídas de MESSAGE( ) e MESSAGE(1).

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( ), função

Avalia um conjunto de expressões e retorna a expressão de menor valor.

Sintaxe

MIN(eExpressão1, eExpressão2 [, eExpressão3 ...])

Tipos de retorno

Caractere, Numérico, Moeda, Duplo, Flutuante, Data ou DataHora

Argumentos
eExpressão1, eExpressão2 [, eExpressão3 ...] Especifica o conjunto de expressões de onde você
quer que MIN( ) retorne a expressão de menor valor. Todas as expressões devem ser do mesmo
tipo.

MIN( ), exemplo da função

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros que
contenham valores aleatórios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores máximo
e mínimo na tabela.

CLOSE 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 aleatórios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa valor mínimo
gnMinimum = 100 && Inicializa valor máximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum && Exibe valor mínimo

? 'The maximum value is: ', gnMaximum && Exibe valor máximo
MINUTE( ), função

Retorna a parte dos minutos de uma expressão DataHora.

Sintaxe

MINUTE(tExpressão)

Tipos de Retorno

Numérico

Argumentos

tExpressão Especifica a expressão DataHora da qual a parte dos minutos será retornada.

MINUTE( ), exemplo da função

O exemplo a seguir exibe a parte dos minutos da hora atual e a parte dos minutos de uma
determinada hora.

CLEAR
? MINUTE(DATETIME( ))
? MINUTE({10:42am}) && Exibe 42

MLINE( ), função

Retorna uma determinada linha de um campo memo como uma seqüência de caracteres.

Sintaxe

MLINE(NomeCampoMemo, nNúmeroLinha [, nNúmeroDeCaracteres])

Tipos de retorno

Caractere

Argumentos
NomeCampoMemo Especifica o nome do campo memo a partir do qual MLINE( ) retorna uma
linha. Se o campo memo está em uma tabela aberta em uma área de trabalho que não é a atual,
coloque um ponto e o alias da tabela antes do nome do campo memo.

nNúmeroLinha Especifica o número da linha a ser retornada do campo memo. Uma seqüência
vazia será retornada se nNúmeroLinha for negativo, igual a 0 ou maior do que o número de linhas
existentes no campo memo..

nNúmeroDeCaracteres Especifica o número de caracteres desde o início do campo memo depois


dos quais MLINE( ) retorna a linha especificada.

A variável de memória do sistema _MLINE é normalmente utilizada para nNúmeroDeCaracteres.


_MLINE é automaticamente ajustado toda vez que MLINE( ) é chamado.

Em procedimentos recorrentes que retornam linhas de campos memo grandes, é possível obter um
melhor desempenho incluindo-se _MLINE como nNúmeroDeCaracteres.

Comentários

MLINE( ) remove qualquer espaço subseqüente da linha especificada com nNúmeroLinha.

O tamanho e o número das linhas no campo memo são determinados pelo valor atual de SET
MEMOWIDTH (o tamanho de linha padrão é de 50 caracteres). Nenhum caractere adicional será
retornado se for encontrado um retorno de carro. A definição _WRAP atual determina como a linha
do campo memo será exibida.

Ao procurar uma seqüência de caracteres em um campo memo, você pode utilizar ATLINE( ) ou
ATCLINE( ) para retornar o número da linha em que a seqüência de caracteres se encontra. Utilize
esse número de linha em MLINE( ) para retornar o conteúdo da linha do campo memo.

MLINE( ), exemplo da função

No exemplo a seguir, são utilizados dois métodos para retornar linhas de um campo memo. Dois
loops utilizam MLINE( ) para retornarem linhas de campo memo. Observe a melhoria no
desempenho no segundo loop quando a variável do sistema _MLINE é utilizada em MLINE( ).

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 && Número de linhas em campo memo


STORE SECONDS( ) TO gnBegin && Hora inicial
FOR gnCount = 1 TO gnNumLines && Loop para número 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 número 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( ), função

Divide uma expressão numérica por outra expressão numérica e retorna o restante.

Sintaxe

MOD(nDividendo, nDivisor)

Tipos de retorno

Numérico

Argumentos

nDividendo Especifica o dividendo. O número de casas decimais em nDividendo determina o


número de casas decimais no valor de retorno.

nDivisor Especifica o divisor. Um número positivo será retornado se nDivisor for positivo e um
número negativo será retornado se nDivisor for negativo.

Comentários

A função de módulo MOD( ) e o operador % retornam resultados idênticos.

MOD( ), exemplo da função

CLEAR
? MOD(36,10) && Exibe 6
? MOD((4*9), (90/9)) && Exibe 6
? MOD(25.250,5.0) && Exibe 0.250
? IIF(MOD(YEAR(DATE( )), 4) = 0, ' Olimpíadas de Verão este ano';
, 'Não há Olimpíadas de Verão este ano')
MODIFY COMMAND, comando

Abre uma janela de edição para que você possa modificar ou criar um arquivo de programa.

Sintaxe

MODIFY COMMAND [NomeArquivo | ?]


[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[AS nPáginaCódigo]
[SAME]
[SAVE]

Argumentos

NomeArquivo Especifica o nome de arquivo do programa a ser aberto ou criado. Se você não
especificar uma extensão para um novo arquivo de programa, o Visual FoxPro atribuirá
automaticamente uma extensão .PRG. MODIFY COMMAND suporta um estrutura de arquivo que
contém os curingas asterisco (*) e ponto de interrogação (?). Uma janela de edição é aberta para
cada programa cujo nome de arquivo corresponde ao estrutura de arquivo.

Se você omitir o nome de arquivo, será aberta uma janela de edição para um arquivo inicialmente
denominado PROG1.PRG. Quando fechar a janela de edição, você poderá salvar o arquivo com um
nome diferente.

? Exibe a caixa de diálogo Abrir. Selecione um dos programas existentes ou digite o nome de um
novo programa a ser criado.
NOEDIT Especifica que o arquivo de programa não pode ser alterado, mas pode ser visualizado e
copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após ser aberta a janela de edição. O programa não
aguarda o fechamento da janela de edição, mas continua a execução na linha do programa
imediatamente seguinte à linha que contém MODIFY COMMAND NOWAIT. Se você omitir
NOWAIT quando MODIFY COMMAND for utilizado em um programa, uma janela de edição será
aberta e a execução do programa será colocada em pausa até o fechamento desta janela.

NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY
COMMAND quando emitido na janela Comando.

Um NOWAIT implícito ocorrerá se você abrir mais de uma janela de edição com um único
comando MODIFY COMMAND. Por exemplo:

MODIFY COMMAND *.PRG.

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados


quando a janela de edição é aberta. Os caracteres são selecionados a partir da posição especificada
com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se nCaractereInicial
for igual a nCaractereFinal, nenhum caractere será selecionado e o cursor será colocado na posição
especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de
edição. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de
edição poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A
janela de edição não assume as características da janela pai e não pode ser movida para fora da
janela pai. Se você mover a janela pai, moverá a janela de edição junto com ela.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visível para
o acesso à janela de edição.

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser
colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN
WINDOW.

AS nPáginaCódigo Converte automaticamente caracteres acentuados em um arquivo de programa


criado em uma outra plataforma do Visual FoxPro. A expressão numérica nPáginaCódigo
especifica a página de código da plataforma do Visual FoxPro em que o arquivo de programa foi
criado. O arquivo será salvo nesta página de código a menos que você selecione Salvar como no
menu Arquivo para salvar o arquivo em uma página de código diferente.

SAME Impede que a janela de edição seja trazida para a frente como a janela ativa. Caso esteja
oculta, ela será exibida, mas não se tornará a janela ativa.
SAVE Deixa a janela de edição aberta depois que uma outra janela é ativada. Se você omitir
SAVE, a janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE
não tem qualquer efeito quando emitido da janela Comando.

Comentários

Quando você faz modificações em um arquivo de programa, o arquivo atualizado é gravado no


disco. No Visual FoxPro, um arquivo backup com a extensão .BAK será criado se você selecionar a
caixa de verificação Criar cópia de backup na guia Editar da caixa de diálogo Opções, que aparece
quando você seleciona Opções no menu Ferramentas.

O editor interno do Visual FoxPro será utilizado, a menos que você especifique um editor externo
com TEDIT no arquivo de configuração.

MODIFY DATABASE, comando

Abre o Criador de bancos de dados, possibilitando a modificação interativa do banco de dados


atual.

Sintaxe

MODIFY DATABASE [NomeBancoDados | ?]


[NOWAIT] [NOEDIT]

Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser modificado.

? Exibe a caixa de diálogo Abrir, onde você pode especificar o nome do banco de dados a ser
modificado.

NOWAIT Continua a execução do programa após a abertura do Criador de bancos de dados. O


programa não aguarda o fechamento do Criador de bancos de dados, mas continua a execução na
linha do programa imediatamente seguinte à linha que contém MODIFY DATABASE NOWAIT.
Se você omitir NOWAIT quando MODIFY DATABASE for emitido em um programa, o Criador
de bancos de dados será aberto e a execução do programa será colocada em pausa até o seu
fechamento.

NOWAIT só tem efeito quando emitido dentro de um programa. Ele não tem qualquer efeito em
MODIFY CLASS quando emitido na janela Comando.

NOEDIT Evita alterações no banco de dados.


Comentários

Para obter maiores informações sobre como modificar de forma interativa um banco de dados com
o Criador de bancos de dados, consulte os tópicos Criador de bancos de dados e Barra de
ferramentas criador de bancos de dados e o capítulo 3, “Reunindo tabelas em um banco de dados”,
no Guia do Usuário.

MODIFY DATABASE, exemplo do comando

O seguinte exemplo exibe o Criador de bancos de dados com as tabelas no banco de dados testdata.

CLOSE 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 edição para que você possa modificar ou criar um arquivo de texto.

Sintaxe

MODIFY FILE [NomeArquivo | ?]


[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[AS nPáginaCódigo]
[SAME]
[SAVE]

Argumentos

NomeArquivo Especifica o nome do arquivo de texto. Se você não especificar uma extensão junto
com o nome do novo arquivo texto, o Visual FoxPro automaticamente atribuirá uma extensão
.TXT. MODIFY FILE suporta uma estrutura de arquivo que pode conter os curingas asterisco (*) e
ponto de interrogação (?). Uma janela de edição é aberta para cada arquivo de texto cujo nome
corresponda à estrutura de arquivo.

Se você omitir o nome de arquivo, será aberta uma janela de edição para um arquivo inicialmente
denominado FILE1. Quando fechar a janela de edição, você poderá salvar o arquivo com um nome
diferente.

? Exibe a caixa de diálogo Abrir na qual você pode selecionar um arquivo de texto.

NOEDIT Especifica que o arquivo de texto não pode ser alterado, mas pode ser visualizado e
copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após a abertura da janela de edição. O programa não
aguarda o fechamento da janela de edição, mas continua a execução na linha do programa
imediatamente seguinte à linha que contém MODIFY FILE NOWAIT. Se você omitir NOWAIT ,
quando emitir MODIFY FILE em um programa, a janela de edição será aberta e a execução do
programa será colocada em pausa até o seu fechamento.

NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY FILE
quando emitido na janela Comando.

Um NOWAIT implícito ocorrerá se você abrir mais de uma janela de edição com um único
comando MODIFY FILE. Por exemplo:

MODIFY FILE *.TXT

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionado,


quando você abre uma janela de edição. Os caracteres são selecionados a partir da posição
especificada com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se
nCaractereInicial for igual a nCaractereFinal, não será selecionado nenhum caractere e o cursor será
colocado na posição especificada com nCaractereInicial
.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de
edição. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de
edição poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A
janela de edição não assume as características da janela pai e não é possível movê-la para fora dela.
Se você mover a janela pai, moverá a janela de edição junto com ela.

A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visível
para o acesso à janela de edição.

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser
colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN
WINDOW.

AS nPáginaCódigo Converte automaticamente caracteres acentuados em um arquivo de texto


criado em uma outra plataforma do Visual FoxPro. A expressão numérica nPáginaCódigo
especifica a página de código da plataforma do Visual FoxPro em que o arquivo de texto foi criado.
O arquivo será salvo nesta página de código a menos que você selecione Salvar como no menu
Arquivo para salvar o arquivo em uma página de código diferente.

SAME Impede que a janela de edição seja adiantada como a janela ativa. Caso esteja oculta, ela
será exibida, mas não se tornará a janela ativa.

SAVE Deixa a janela de edição aberta depois que uma outra janela é ativada. Se você omitir
SAVE, a janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE
não tem qualquer efeito quando emitido na janela Comando.

Comentários

Quando são feitas modificações em um arquivo de texto, o arquivo atualizado é gravado no disco.
No Visual FoxPro, um arquivo backup com a extensão .BAK será criado se você selecionar a caixa
de verificação Criar cópia de backup na guia Editar da caixa de diálogo Opções, que aparecem
quando você seleciona Opções no menu Ferramentas. Nas versões anteriores do FoxPro, um
arquivo backup com a extensão .BAK será criado se você selecionar a caixa de verificação Backup
na caixa de diálogo Preferências, que aparece ao selecionar Preferências no menu Editar.

O editor do Visual FoxPro será utilizado, a menos que você especifique um editor externo com
TEDIT no arquivo de configuração.
MODIFY GENERAL, comando

Abre janelas de edição de campos gerais do registro atual.

Sintaxe

MODIFY GENERAL CampoGeral1 [, CampoGeral2 ...]


[NOMODIFY]
[NOWAIT]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]

Argumentos

CampoGeral1 [, CampoGeral2 ...] Especificam os nomes dos campos gerais que devem ser
abertos. Para abrir uma janela de edição para um campo Geral de uma tabela aberta em uma Área
de trabalho, que não seja a atual, inclua o alias de tabela com o nome do campo. Para abrir vários
campos gerais no registro atual, inclua uma lista de campos gerais separados por vírgulas.

NOMODIFY Especifica que o objeto de OLE contido no campo Geral não pode ser alterado, mas
pode ser visualizado e copiado para a Área de transferência.

NOWAIT Continua a execução do programa após a abertura da janela de edição de campo Geral.
O programa não aguarda o fechamento desta janela, mas continua a execução na linha do programa
imediatamente seguinte à linha que contém MODIFY GENERAL NOWAIT. Se você omitir
NOWAIT, quando emitir MODIFY GENERAL em um programa, será aberta uma janela de edição
e a execução do programa será colocada em pausa até o fechamento desta janela.

NOWAIT só tem efeito quando emitido dentro de um programa. Ele não tem qualquer efeito em
MODIFY GENERAL quando emitido na janela Comando.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de
edição de campo Geral. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE
WINDOW, a janela de edição de campo Geral poderá ser movida. A janela não precisa estar ativa
ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai na qual a janela de edição de campo
Geral é aberta. A janela de campo Geral não assume as características da janela pai e não é possível
movê-la para fora desta janela. Se você mover a janela pai, moverá a janela de campo Geral
também.
A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visível para
o acesso à janela de campo Geral.

IN SCREEN Abre explicitamente a janela de campo Geral na janela principal do Visual FoxPro,
após ser colocada na janela pai. Uma janela de campo Geral é colocada em uma janela pai ao incluir
a cláusula IN WINDOW.

Comentários

Quando uma janela de edição está aberta, você pode inserir, modificar ou excluir um objeto de
OLE.

Para obter maiores informações sobre objetos de OLE no Visual FoxPro, consulte “Adicionando
objetos de OLE a tabelas” no capítulo 16, “Adicionando a OLE,” no Guia do Desenvolvedor.

MODIFY MEMO, comando


Abre uma janela de edição de um campo Memo no registro atual.

Sintaxe

MODIFY MEMO CampoMemo1 [, CampoMemo2 ...]


[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[SAME]
[SAVE]

Argumentos

CampoMemo1 [, CampoMemo2 ...] Especifica os nomes dos campos Memo que serão editados.
Para abrir uma janela de edição de um campo Memo, contido em uma tabela aberta em uma outra
Área de trabalho, inclua o alias de tabela junto com o nome do campo.

NOEDIT Especifica que o campo Memo aberto não pode ser alterado, mas pode ser visualizado e
copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após a abertura da janela de edição. O programa não
aguarda o fechamento da janela de edição, mas continua a execução na linha do programa
imediatamente seguinte à linha que contém MODIFY MEMO NOWAIT. Se você omitir NOWAIT,
quando emitir MODIFY MEMO em um programa, uma janela de edição será aberta e a execução
do programa será colocada em pausa até o seu fechamento.

NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY MEMO
quando emitido na janela Comando.

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados


quando a janela de edição é aberta. Os caracteres são selecionados a partir da posição especificada
com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se nCaractereInicial
for igual a nCaractereFinal, não será selecionado nenhum caractere e o cursor será colocado na
posição especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas características a janela de edição assume.
Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de edição
poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A
janela de edição não assume as características da janela pai e não é possível movê-la para fora desta
janela. Se você mover a janela pai, moverá a janela de edição também.
A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW, e deve estar visível para
o acesso da janela de edição.

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser
colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN
WINDOW.

SAME Impede que a janela de edição seja adiantada como a janela ativa. Caso esteja oculta, ela
será exibida, mas não se tornará a janela ativa.

SAVE Deixa a janela de edição aberta após uma outra janela ser ativada. Se você omitir SAVE, a
janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE não tem
qualquer efeito quando emitido na janela Comando.

Comentários

É possível visualizar ou alterar o conteúdo do campo Memo na janela de edição.

Em uma tabela aberta para acesso compartilhado em uma rede, o registro atual é bloqueado
automaticamente quando a edição começa em um de seus campos Memo.

MODIFY MEMO, exemplo do comando

O seguinte exemplo abre o campo Memo notes para o primeiro registro em employee em uma
janela de edição com um intervalo realçado.

CLOSE 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 extensão para o nome de
arquivo não seja especificada, o Visual FoxPro atribui automaticamente uma extensão .MNX.

? Exibe a caixa de diálogo Abrir na qual você pode selecionar um arquivo de menu existente ou
digitar o nome de um novo menu a ser criado.

WINDOW NomeJanela1 Especifica a janela cujas características o Criador de menus assume. Por
exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, o Criador de menus
poderá ser movido. A janela não precisa estar ativa ou visível, mas deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que o Criador de menus é aberto. O
Criador de menus não assume as características da janela pai e não é possível movê-lo para fora
dessa janela. Se você mover a janela pai, moverá o Criador de menus junto com ela.

A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visível para
o acesso ao Criador de menus.
IN SCREEN Abre explicitamente o Criador de menus na janela principal do Visual FoxPro, após
ser colocado em uma janela pai. O Criador de menus é colocado em uma janela pai ao incluir a
cláusula IN WINDOW.

NOWAIT Continua a execução do programa após a abertura do Criador de menus. O programa


não aguarda o fechamento do Criador de menus, mas continua a execução na linha do programa
imediatamente a seguir da linha que contém MODIFY MENU NOWAIT. Se você omitir NOWAIT
quando emitir MODIFY MENU em um programa, o Criador de menus será aberto e a execução do
programa será colocada em pausa até o seu fechamento.

NOWAIT somente tem efeito quando emitido dentro de um programa. Ele não tem nenhum efeito
em MODIFY MENU quando emitido na janela Comando.

Se você emitir MODIFY MENU a partir da janela Comando sem um nome de menu e incluir
NOWAIT, o diálogo Novo menu não será exibido. O diálogo Novo menu permite que você
especifique o tipo de menu (padrão ou tecla de atalho) criado.

SAVE Deixa o Criador de menus aberto depois que uma outra janela é ativada. Se você omitir
SAVE, o Criador de menus será fechado quando uma outra janela for ativada. A inclusão de SAVE
não tem nenhum efeito quando emitido na janela Comando.

Comentários

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de
menus”, no capítulo 11, “Criando menus e barras de ferramentas”, no Guia do Desenvolvedor.
MODIFY STRUCTURE, comando

Exibe o Criador de tabelas, permitindo modificar a estrutura de uma tabela.

Sintaxe

MODIFY STRUCTURE

Comentários

Em versões anteriores do FoxPro, MODIFY STRUCTURE abre a caixa de diálogo Estrutura da


tabela.

Caso uma tabela não esteja aberta atualmente na Área de trabalho selecionada, será exibida a caixa
de diálogo Abrir que permite selecionar uma tabela a ser modificada.

As alterações que podem ser feitas na estrutura de uma tabela incluem adicionar e excluir campos;
modificar nomes, tamanhos e tipos de dados de campos; adicionar, excluir ou modificar marcas de
índice e especificar suporte de valor nulo para campos.

Você pode também modificar a estrutura de uma tabela utilizando a interface. Para obter maiores
informações, consulte “Modificando tabelas” no capítulo 2, “Criando tabelas e índices”, no Guia do
Usuário.

Cuidado Se você alterar o tipo de dado de um campo para outro tipo de dado, o conteúdo do
campo poderá não ser transferido corretamente, ou poderá nem mesmo ser transferido. Por
exemplo, se você converter um campo de data para um tipo numérico, o conteúdo do campo não
será transferido.

O Visual FoxPro faz automaticamente uma cópia de backup da tabela atual antes de você alterar a
estrutura da tabela. Depois de concluídas as modificações, os dados contidos na cópia de backup da
tabela são incluídos na estrutura da tabela recém-modificada. Se a tabela tiver um campo Memo,
também será criado um arquivo de backup de memo. O arquivo de backup da tabela tem a extensão
.BAK e o arquivo de backup de memo tem a extensão .TBK.

Se você aceitar as alterações feitas na estrutura e, em seguida, interromper o processo de cópia dos
dados, o novo arquivo não conterá todos os registros da tabela original.
Lembre-se de que o Visual FoxPro cria um arquivo .BAK para o arquivo da tabela original e, se a
tabela tiver um campo memo, uma cópia .TBK do arquivo de memo original. Em caso de
problemas com MODIFY STRUCTURE, exclua o(s) novo(s) arquivo(s) e renomeie o arquivo
.BAK e o arquivo .TBK, se houver algum, com as extensões de arquivo originais (.DBF and .FPT).

Quando você modifica a estrutura de uma tabela que tem um campo memo, o tamanho de bloco do
arquivo de memo é definido como a definição de tamanho de bloco atual. Você pode especificar o
tamanho de bloco do arquivo de memo com SET BLOCKSIZE.

MODIFY WINDOW, comando

Modifica uma janela definida pelo usuário ou a janela principal do Visual FoxPro.

Sintaxe

MODIFY WINDOW NomeJanela | SCREEN


[FROM nLinha1, nColuna1 TO nLinha2, nColuna2
| AT nLinha3, nColuna3 SIZE nLinha4, nColuna4]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[TITLE cTextoTítulo]
[HALFHEIGHT]
[DOUBLE | PANEL | NONE | SYSTEM]
[CLOSE | NOCLOSE]
[FLOAT | NOFLOAT]
[GROW | NOGROW]
[MINIMIZE | NOMINIMIZE]
[SHADOW | NOSHADOW]
[ZOOM | NOZOOM]
[ICON FILE NomeArquivo1]
[FILL FILE NomeArquivo2]
[COLOR SCHEME nNúmeroEsquema
| COLOR ListaParesCores]

Argumentos

NomeJanela Especifica a janela definida pelo usuário a ser modificada. Primeiro é necessário criar
a janela especificada com DEFINE WINDOW.

SCREEN Especifica a janela principal do Visual FoxPro como a janela a ser modificada. Não
abrevie SCREEN, caso contrário, o Visual FoxPro gerará uma mensagem de erro. Para retornar a
janela principal do Visual FoxPro à sua configuração de inicialização, emita o comando abaixo sem
nenhuma cláusula adicional:
MODIFY WINDOW SCREEN

Dica Utilize MODIFY WINDOW SCREEN NOCLOSE para evitar que você mesmo finalize
acidentalmente o Visual FoxPro antes da hora.

Para obter maiores informações sobre as cláusulas MODIFY WINDOW, consulte DEFINE
WINDOW.

Comentários

MODIFY WINDOW altera os atributos de uma janela existente definida pelo usuário (uma janela
criada com DEFINE WINDOW) ou a janela principal do Visual FoxPro. MODIFY WINDOW não
pode ser utilizado para alterar os atributos de janelas do sistema do Visual FoxPro (como as janelas
Comando e Pesquisar).

Utilize MODIFY WINDOW para alterar a localização, a fonte padrão, o título, a borda, os
controles, o ícone, o papel de parede e a cor de uma janela definida pelo usuário ou da janela
principal do Visual FoxPro. Você pode alterar qualquer um desses atributos ao incluir as cláusulas
opcionais para o comando MODIFY WINDOW. (Observe que se alterar as cores, você deve utilizar
CLEAR para aplicar as alterações.)

Por exemplo, inclua as cláusulas FROM e TO ou AT e SIZE para especificar uma nova localização
ou um novo tamanho para uma janela definida pelo usuário ou para a janela principal do Visual
FoxPro. Para evitar que uma janela definida pelo usuário ou a janela principal do Visual FoxPro
sejam movidas, inclua a palavra-chave NOFLOAT.

MODIFY WINDOW, exemplo do comando

O exemplo a seguir altera o conteúdo da barra de título da janela principal do Visual FoxPro.

MODIFY WINDOW SCREEN TITLE 'Meu aplicativo'


MONTH( ), função

Retorna o número do mês de uma expressão de Data ou de DataHora especificada.

Sintaxe

MONTH(dExpressão | tExpressão)

Tipos de retorno

Numérico

Argumentos

dExpressão Especifica a expressão de Data para a qual você deseja que MONTH( ) retorne o
número do mês.

tExpressão Especifica a expressão de DataHora para a qual você deseja que MONTH( ) retorne o
número do mês.

Comentários

MONTH( ) retorna um número de 1 a 12. Janeiro é o mês 1 e dezembro é o mês 12.

MONTH( ), exemplo da função

CLEAR
? DATE( ) && Exibe a data atual
? MONTH(DATE( )) && Exibe o número do mês
STORE {05/03/95} TO gdBuy
STORE MONTH(gdBuy + 31) TO gdMonth
? gdMonth
MOVE POPUP, comando

Move um menu definido pelo usuário criado com DEFINE POPUP para uma nova localização.

Sintaxe

MOVE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2

Argumentos

NomeMenu Especifica o menu a ser movido.

No Visual FoxPro, não é possível mover o menu do sistema.

TO nLinha1, nColuna1 Move o menu para uma localização especificada por nLinha1, nColuna1
, em uma janela definida pelo usuário ou na janela principal do Visual FoxPro.

BY nLInha2, nColuna2 Move o menu para uma localização relativa à sua posição atual. nLinha2
especifica o número de linhas que o menu deve ser movido (para baixo se nLinha2 for positiva, para
cima se for negativa). A expressão numérica nColuna2 especifica o número de colunas que o menu
deve ser movido (para a direita se nColuna2 for positiva, para a esquerda se for negativa).
Comentários

É possível mover um menu para uma posição específica ou para uma posição relativa à sua posição
atual. Se estiver definido, o menu poderá ser movido; não é necessário que ele esteja ativo ou
visível.

MOVE POPUP, exemplo do comando

· próximo exemplo define e ativa um menu e, em seguida, move e altera seu tamanho.

CLOSE 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 usuário criada com DEFINE WINDOW ou uma janela do sistema
do Visual FoxPro (como a janela Comando ou a janela Pesquisar) para uma nova localização.

Sintaxe

MOVE WINDOW NomeJanela TO nLinha1, nColuna1


| BY nLinha2, nColuna2 | CENTER

Argumentos
NomeJanela Especifica o nome da janela a ser movida.

TO nLinha1, nColuna1 Move a janela para uma localização, especificada por nLinha1, nColuna1,
na janela principal do Visual FoxPro ou em uma janela definida pelo usuário.

BY nLinha2, nColuna2 Move a janela para uma localização relativa à sua posição atual. A
expressão numérica nLinha2 especifica o número de linhas que a janela deve ser movida (para
baixo se nLinha2 for positiva, para cima se for negativa). A expressão numérica coluna nColuna2
especifica o número de colunas que a janela deve ser movida (para a direita se nColuna2 for
positiva, para a esquerda se for negativa).

CENTER Centraliza uma janela na janela principal do Visual FoxPro ou na sua janela pai.

Comentários

É possível mover uma janela para uma posição específica ou para uma posição relativa à sua
posição atual. Se estiver definida, a janela poderá ser movida; não é necessário que ela esteja ativa
ou visível.

Para mover uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque o
nome da janela ou da barra de ferramentas entre aspas. Por exemplo, para mover a barra de
ferramentas Controles de relatório (quando não está ancorada) no Visual FoxPro, emita o comando
a seguir:

MOVE WINDOW "Controles de relatório" BY 1,1

MOVE WINDOW, exemplo do comando

No exemplo a seguir, após a definição e ativação da janela denominada wEnter, a janela será
movida.

DEFINE WINDOW wEnter FROM 10,4 TO 15,54 SYSTEM ;


TITLE "Nomadic Window"
ACTIVATE WINDOW wEnter
WAIT WINDOW 'Pressione qualquer tecla para mover a janela'
MOVE WINDOW wEnter TO 20,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( ), função

Retorna um valor Numérico de uma expressão de Moeda.

Sintaxe

MTON(mExpressão)

Tipos de retorno

Numérico

Argumentos

mExpressão Especifica uma expressão de Moeda cujo valor é retornado por MTON( ).
mExpressão deve resultar em um valor Moeda válido; caso contrário, o Visual FoxPro gera um
erro.

Os valores do tipo Moeda são criados colocando-se um cifrão ($) imediatamente antes de um valor
Numérico.

Comentários

MTON( ) retorna um valor Numérico com quatro casas decimais.


MTON( ), exemplo da função

O exemplo abaixo cria uma variável de tipo Moeda denominada gyMoney. TYPE( ) exibe Y,
indicando que a variável é de tipo Moeda. MTON( ) é utilizada para converter a variável a um tipo
Numérico e TYPE( ) agora exibe N, indicando que a variável é de tipo Numérico após a conversão.

STORE $24.95 TO gyMoney && Cria uma variável de memória tipo Moeda
CLEAR
? "gyMoney é do tipo: "
?? TYPE('gyMoney') && Exibe Y, valor de tipo Moeda

gyMoney = MTON(gyMoney) && Converte gyMoney para um valor Numérico


? "gyMoney é agora do tipo: "
?? TYPE('gyMoney') && Exibe N, valor de tipo Numérico
NDX, função ( )

Retorna o nome de um arquivo de índice aberto (.IDX) para a tabela atual ou especificada.

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

nNúmeroÍndice Especifica qual nome de arquivo .IDX será retornado. USE e SET INDEX
suportam uma lista de arquivos de índice que permite que você abra arquivos .IDX para uma tabela.
A ordem dos nomes de arquivos nessa lista determina o nome do arquivo .IDX retornado por
NDX( ). Por exemplo, se nNúmeroÍndice for igual a 1, NDX( ) retornará o nome do primeiro
arquivo .IDX na lista de arquivos de índice, se nNúmeroÍndice for igual a 2, NDX( ) retornará o
nome do segundo arquivo .IDX, e assim por diante. NDX( ) ignora os nomes dos arquivos de índice
composto (.CDX) na lista de arquivos de índice.

NDX( ) retornará uma seqüência vazia se nNúmeroÍndice for maior do que o número de arquivos
.IDX na lista de arquivos de índice.

nÁreaTrabalho Especifica o número da Área de trabalho para arquivos .IDX abertos em uma Área
de trabalho diferente da atual. NDX( ) retornará uma seqüência vazia se nenhuma tabela estiver
aberta na Área de trabalho especificada. Se você omitir nÁreaTrabalho, NDX( ) retornará os nomes
dos arquivos .IDX abertos com a tabela na Área de trabalho atual.

cAliasTabela Especifica o alias de tabela para os arquivos .IDX abertos em uma Área de trabalho
diferente da atual. Caso nenhuma tabela apresente o alias que você incluiu, o Visual FoxPro exibirá
uma mensagem de erro. Se você omitir cAliasTabela, NDX( ) retornará os nomes dos arquivos
.IDX abertos com a tabela na Área de trabalho atual.

Comentários

As funções CDX( ) e MDX( ) podem ser utilizadas para retornar os nomes dos arquivos de índice
composto abertos (.CDX).

No Visual FoxPro para Windows, quando SET FULLPATH está ativado (ON), NDX( ) retorna o
caminho do arquivo .IDX junto com o nome do arquivo .IDX. Quando SET FULLPATH está
desativado (OFF), NDX( ) retorna a unidade de disco onde o arquivo .IDX reside junto com o nome
de arquivo .IDX.

NORMALIZE( ), função

Converte uma expressão de caracteres, fornecida por um usuário, de uma forma que pode ser
comparada com os valores de retorno de função do Visual FoxPro.

Sintaxe

NORMALIZE(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a ser normalizada.

Comentários
NORMALIZE( ) retorna uma seqüência de caracteres a partir da expressão de caracteres
cExpressão com as seguintes alterações::

· A expressão de caracteres é convertida em maiúsculas. Contudo, as seqüências embutidas


não são alteradas. Um exemplo de uma seqüência embutida é "Alô" na expressão de caracteres
"LEFT('Alô',1)".
· As palavras-chave abreviadas do Visual FoxPro na expressão de caracteres são expandidas,
ficando escritas por extenso.
· Os operadores -> separando aliases de nomes de campos são convertidos em pontos.
· A sintaxe de qualquer comando ou função do Visual FoxPro dentro da expressão de
caracteres é verificada, embora a expressão não seja avaliada. Se a sintaxe não estiver correta, o
Visual FoxPro irá gerar um erro de sintaxe. NORMALIZE( ) não verifica a existência de campos,
tabelas, variáveis de memória, funções definidas pelo usuário ou outras referências na expressão de
caracteres.

Por exemplo, um usuário pode digitar no Construtor de expressões uma expressão de índice igual à
seguinte:

UPPE(cust->lname) + UPPE(cust->fname)

Embora seja uma expressão de chave de índice válida do Visual FoxPro, é difícil compará-la com
os valores de retorno de uma função do Visual FoxPro como KEY( ).NORMALIZE( ) retorna a
seguinte seqüência de caracteres para a expressão acima:

UPPER(CUST.LNAME) + UPPER(CUST.FNAME)

Ela pode ser facilmente comparada com o valor retornado por uma função como KEY( ),
permitindo que você, neste exemplo, determine se já existe um índice ou marca de índice com a
expressão de índice fornecida pelo usuário.

NOTE, comando

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

Sintaxe

NOTE [Comentários]

Argumentos
Comentário Especifica o comentário.

Comentários

Coloque um ponto-e-vírgula (;) no final de cada linha de comentário que continua na linha seguinte.

NOTE, exemplo do comando

NOTE Inicializa o número de página;


variable.
STORE 1 to gnPageNum
* Inicializa o Loop
DO WHILE gnPageNum <= 25 && loop 25 vezes
gnPageNum = gnPageNum + 1
ENDDO && DO WHILE gnPageNum <= 25

NTOM( ), função

Retorna um valor Moeda com quatro casas decimais a partir de uma expressão numérica.

Sintaxe

NTOM(nExpressão)

Tipos de retorno

Moeda

Argumentos

nExpressão Especifica uma expressão numérica cujo valor Moeda é retornado por NTOM( ). Se
nExpressão tiver mais de quatro casas decimais, ele será arredondado para quatro casas decimais.
Se nExpressão tiver menos de 4 casas decimais, será preenchido com zeros até que sejam criadas
quatro casas decimais.

NTOM( ), exemplo da função

O exemplo que se segue cria uma variável de tipo numérico denominada gnNumeric. TYPE( ) exibe
N, indicando que a variável é um tipo numérico. NTOM( ) é utilizado para converter a variável em
um tipo de moeda e TYPE( ) agora exibe Y, indicando que a variável é um tipo de moeda após a
conversão.
STORE 24.95 TO gnNumeric && Cria uma variável de memória tipo numérica
CLEAR
? "gnNumeric é digitado: "
?? TYPE('gnNumeric') && Exibe N, tipo valor numérico

gnNumeric= NTOM(gnNumeric) && Converte gnNumérico para um valor atual


? "gnNumeric agora é digitado: "
?? TYPE('gnNumeric') && Exibe Y, valor tipo atual

NUMLOCK( ), função

Retorna o modo atual da tecla NUM LOCK ou define o modo da tecla NUM LOCK como ativada
ou desativada.

Sintaxe

NUMLOCK([lExpressão])

Tipos de retorno

Lógico
Argumentos

lExpressão Define a tecla NUM LOCK como ativada ou desativada. Se lExpressão for verdadeiro
(.T.), a tecla NUM LOCK será ativada; se lExpressão for falso (.F.), a tecla NUM LOCK será
desativada. NUMLOCK( ) retornará um valor lógico correspondente à definição da tecla NUM
LOCK antes da emissão de NUMLOCK(.T.) ou NUMLOCK(.F.).

Comentários

NUMLOCK( ) retornará verdadeiro (.T.) se a tecla NUM LOCK estiver ativada (pressionar uma
tecla no teclado numérico retorna um número), ou falso (.F.) se NUM LOCK estiver desativada
(pressionar uma tecla no teclado numérico move o cursor).

No Visual FoxPro for Macintosh, a definição da tecla NUM LOCK pode ser alterada pressionando-
se SHIFT+CLEAR.

NUMLOCK( ), exemplo da função

No exemplo a seguir, o sinal de igual (=) é utilizado para executar NUMLOCK( ) sem retornar um
valor.

gcOldLock = NUMLOCK( ) && Salva configuração original


WAIT WINDOW 'Pressione uma tecla para ativar NumLock'
= NUMLOCK(.T.) && Ativa NumLock
WAIT WINDOW 'Pressione uma tecla para desativar NumLock'
= NUMLOCK(!NUMLOCK( )) && Alterna NumLock para valor oposto
WAIT WINDOW 'Pressione uma tecla para recuperar a definição original de NumLock'
= NUMLOCK(gcOldLock) && Retorna à definição original

NVL( ), função
Retorna um valor não-nulo a partir de duas expressões.

Sintaxe

NVL(eExpressão1, eExpressão2)

Tipos de retorno

Caractere, Data, DataHora, Numérico, Moeda, Lógico ou valor nulo

Argumentos

eExpressão1, eExpressão2 NVL( ) retornará eExpressão2 se eExpressão1 resultar em um valor


nulo. NVL( ) retornará eExpressão1se eExpressão1 não for um valor nulo. eExpressão1 e
eExpressão2 podem ser formados por qualquer tipo de dados. NVL( ) retornará .NULL. se tanto
eExpressão1 e eExpressão2 resultarem em valor nulo.

Comentários

Utilize NVL( ) para remover valores nulos de cálculos ou operações onde valores nulos não são
suportados ou não são relevantes.

NVL( ), exemplo da função

O exemplo a seguir cria uma variável de memória denominada glMyNull que contém o valor nulo.
NVL( ) é utilizada para retornar um valor não nulo a partir de glMyNull e outra expressão.

STORE .NULL. TO glMyNull && Uma variável de memória que contém um valor nulo
CLEAR
? NVL(.T., glMyNull) && Exibe .T.
? NVL(glMyNull, glMyNull) && Exibe .NULL.
OCCURS( ), função

Retorna o número de vezes que uma expressão de caracteres ocorre dentro de uma outra expressão
de caracteres.

Sintaxe

OCCURS(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica uma expressão de caracteres que OCCURS( ) procura dentro da


cExpressãoPesquisada.

CExpressãoPesquisada Especifica a expressão de caracteres em que OCCURS( ) procura a


cExpressãoProcurada.

Comentários

OCCURS( ) retornará 0 (zero) se a cExpressãoProcurada não for localizada na


cExpressãoPesquisada.

OCCURS( ), exemplo da função

STORE 'abracadabra' TO gcstring


CLEAR
? OCCURS('a', gcstring) && Exiba 5
? OCCURS('b', gcstring) && Exiba 2
? OCCURS('c', gcstring) && Exiba 1
? OCCURS('e', gcstring) && Exiba 0

OLDVAL( ), função

Retorna valores originais de campos que foram modificados, mas não atualizados.

Sintaxe

OLDVAL(cExpressão [, cAliasTabela | nÁreaTrabalho])

Tipos de retorno

Caractere, Moeda, Data, DataHora, Duplo, Flutuante, Inteiro, Lógico, Numérico ou Memo

Argumentos
cExpressão Especifica uma expressão cujo valor original é retornado por OLDVAL( ) a partir de
uma tabela ou uma fonte remota de dados. cExpressão é normalmente um campo ou expressão que
consiste em um conjunto de campos da tabela ou da fonte remota de dados.

cAliasTabela Especifica o alias da tabela ou cursor a partir do qual os valores originais do campo
são retornados.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor a partir do qual os valores


originais do campo são retornados.

Comentários

OLDVAL( ) retorna os valores originais de campo para os registros de uma tabela ou cursor do
Visual FoxPro que apresente a utilização do buffer de linha ou de tabela ativada com
CURSORSETPROP( ).

Se uma tabela de um banco de dados ou um cursor possuir regras de validação, a função


OLDVAL( ) não exigirá que a utilização do buffer de linha ou de tabela seja ativada para retornar
os valores originais do campo.

Se o ponteiro do registro for movido para um registro diferente quando a utilização do buffer de
linha for ativada, ou se TABLEUPDATE( ) for emitida para executar alterações no registro, ou se
houver uma outra ação que cause uma atualização, como o finalizar de uma transação, os campos
serão atualizados e os seus valores originais não estarão mais disponíveis.

O tipo de dado do valor que OLDVAL( ) retorna é determinado pela expressão especificada em
cExpressão.

Os valores originais do campo serão retornados para a tabela ou cursor aberto na Área de trabalho
selecionada atualmente se OLDVAL( ) for emitida sem os argumentos opcionais cAliasTabela ou
nÁreaTrabalho.

OLDVAL( ), exemplo da função

O exemplo que se segue demonstra como OLDVAL( ) é utilizado para retornar o valor original dos
campos em uma tabela com utilização de buffer. Uma tabela denominada employees é criada e
INSERT - SQL é utilizada para inserir o valor “Smith” no campo cSobrenome.
MULTILOCKS é definido como ON, uma exigência para utilização de buffer de tabela.
CURSORSETPROP( ) é utilizado para definir o modo de utilização do buffer de tabela otimista (5).
O valor original do campo cSobrenome (Smith) é exibido e, em seguida, o campo cSobrenome será
modificado com REPLACE. O novo valor do campo cSobrenome (Jones) será exibido. O valor
original do campo cSobrenome (Smith) será exibido como OLDVAL( ). TABLEUPDATE( ) é,
então, utilizado para executar alterações na tabela. O valor atualizado no campo cSobrenome
(Jones) será então exibido.

CLOSE 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 utilização do buffer de tabela


SET MULTILOCKS ON && Permita a utilização do buffer de tabela
=CURSORSETPROP("Utilização do buffer", 5, "employee" ) && Ative a utilização do buffer de
tabela

* Exibe o valor inicial


=MESSAGEBOX("Valor original de cSobrenome: "+ cSobrenome, 0, "Resultados")

* Altera o valor do registro e exiba resultados


REPLACE cLastName WITH "Jones"
=MESSAGEBOX("Valor modificado cSobrenome: "+ cLastName, 0, "Resultados")

* Armazena o valor anterior do campo na variável 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. Após a execução do comando,
a execução do programa é retomada na linha logo após à que provocou o erro. No entanto, se o
procedimento de gerenciamento de erros incluir RETRY, a linha do programa que provocou o erro
será executada novamente.

Caso o comando especifique um procedimento a ser executado quando ocorrer um erro, você
poderá utilizar ERROR( ), MESSAGE( ), LINENO( ) e PROGRAM( ) para passar o número do
erro, a mensagem de erro, o número da linha do programa e o nome do programa para o
procedimento. Estas informações podem ser utilizadas para corrigir a causa do erro.

Comentários

Quando ocorre um erro durante a execução do programa, o Visual FoxPro executa o comando
especificado com ON ERROR. Normalmente, ON ERROR utiliza DO para executar um
procedimento de gerenciamento de erros.

Utilize ON ERROR sem um comando para restaurar o Gerenciador de erros padrão do Visual
FoxPro.

Os procedimentos ON ERROR não podem ser aninhados. Caso ON ERROR seja emitido a partir de
um procedimento, o Gerenciador de erros padrão do Visual FoxPro será restaurado.

ON ERROR, exemplo do comando

ON ERROR DO errhand WITH ;


ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
*** A próxima linha deve causar um erro ***
USE nodatabase
ON ERROR && recupera o Gerenciador de erro do sistema
PROCEDURE errhand
PARAMETER merror, mess, mess1, mprog, mlineno
CLEAR
? 'Número de erros: ' + LTRIM(STR(merror))
? 'Mensagem de erro: ' + mess
? 'Linha de código com erro: ' + mess1
? 'Número de linhas com erro: ' + LTRIM(STR(mlineno))
? 'Programa com erro: ' + mprog

ON ESCAPE, comando

Especifica um comando que é executado quando a tecla ESC é pressionada, durante a execução de
um programa ou comando.

Sintaxe

ON ESCAPE
[Comando]

Argumentos

Comando Especifica o comando do Visual FoxPro a ser executado. Após a execução do comando,
a execução do programa é retomada na linha logo após à do programa que estava em execução
quando a tecla ESC foi pressionada. No entanto, se um procedimento especificado com ON
ESCAPE incluir RETRY, a linha do programa que estava em execução quando a tecla ESC foi
pressionada será executada novamente.

Comentários

Normalmente, ON ESCAPE utiliza DO para executar um procedimento.

Se ON ESCAPE e ON KEY estiverem ativados e você pressionar a tecla ESC, o Visual FoxPro
executará o comando especificado com ON ESCAPE.

Utilize ON ESCAPE sem um comando para que nenhum comando seja executado quando a tecla
ESC for pressionada (o padrão).

Observação O Visual FoxPro não executa uma rotina ON ESCAPE se SET ESCAPE estiver
desativado (OFF).
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 combinação
específica de teclas ou clica com o botão do mouse.

Sintaxe

ON KEY [LABEL NomeRótuloChave] [Comando]

Argumentos

LABEL NomeRótuloChave Especifica o nome do rótulo atribuído à tecla. O NomeRótuloChave é


a letra ou dígito que aparece na tecla ou um nome especial atribuído à tecla. A tabela a seguir lista
os nomes de rótulos de teclas especiais.

Atribuições de rótulos de teclas do Visual FoxPro

Para esta tecla Especifique este valor NomeRótuloChave

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 combinação especificada de
teclas for pressionada ou quando o botão do mouse for clicado.

Você pode incluir expressão de parâmetros ou parâmetro ao comando atribuído à tecla, como no
seguinte exemplo:

ON KEY LABEL ALT+V WAIT WINDOW "Versão: " + VERSION()

Você pode incluir variáveis na atribuição, mas estas devem ser públicas. Por exemplo:

PUBLIC message
message = "Unidade padrão: " + SYS(5)
ON KEY LABEL ALT+D WAIT WINDOW message

Comentários
Normalmente, ON KEY LABEL utiliza DO para executar um procedimento.

ON KEY LABEL executa o comando imediatamente durante a execução de READ, BROWSE,


EDIT, CHANGE e menus definidos pelo usuário. Se um programa estiver sendo executado quando
você pressionar a tecla ou clicar no botão do mouse, o Visual FoxPro executará a linha do programa
atual e, em seguida, o comando ON KEY LABEL. Qualquer atribuição de tecla com ON KEY
LABEL criada em um programa permanece em vigor após a execução do programa. Você pode
também criar atribuições de teclas na janela Comando.

Para retornar o comportamento de uma tecla específica ao normal, emita ON KEY LABEL
NomeRótuloChave. Para retornar todas as teclas para o comportamento padrão, emita ON KEY.

Dica Para evitar a ocorrência de chamadas repetidas durante a execução de um procedimento ON


KEY LABEL, inclua PUSH KEY CLEAR no início do procedimento para desativar todos os
comandos ON KEY LABEL ativos. Execute POP KEY no final do procedimento para ativar os
comandos ON KEY LABEL.

As atribuições de teclas feitas com ON KEY LABEL não entrarão em vigor na barra de menus do
sistema do Visual FoxPro, bem como nos menus do sistema, caixas de diálogo, alertas e assim por
diante. As atribuições de teclas entrarão em vigor nas janelas do sistema do Visual FoxPro — no
editor de texto do Visual FoxPro, na janela Comando, na janela Rastrear etc.

Ao contrário do que acontece com ON KEY, podem existir vários comandos ON KEY LABEL
ativos. Por exemplo, você pode atribuir um comando a cada uma das teclas de direção e a um botão
do mouse.

Observe que a execução de um comando ON KEY LABEL redefine PARAMETERS( ) como 0.


Para obter maiores informações, consulte PARAMETERS( ).

No Visual FoxPro, certos eventos não podem ser interceptados porque estão sob o controle do
Windows. Em especial, ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE e ON KEY
LABEL RIGHTMOUSE não serão executados quando você clicar em um controle do Windows
como uma barra de rolagem, um menu Controle ou um item semelhante. Observe ainda que
CTRL+0 é suportado em ON KEY LABEL no Visual FoxPro, permitindo que você redefina a
combinação de teclas utilizadas para digitar um valor nulo em um campo.

ON KEY LABEL, exemplo do comando

O exemplo a seguir exibe uma mensagem quando uma tecla de direção é pressionada.

CLEAR
PUBLIC msg
msg = CHR(13) + CHR(13) + "Pressione F9 para " + ;
"restaurar a definição chave padrão".
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 título específico do menu.

Sintaxe

ON PAD NomeTítuloMenu OF NomeBarraMenus1


[ACTIVATE POPUP NomeMenu
| ACTIVATE MENU NomeBarraMenus2

Argumentos

NomeTítuloMenu OF NomeBarraMenus1 Especifica o título do menu para o qual uma barra de


menu ou menu é atribuído.

ACTIVATE POPUP NomeMenu Especifica o menu a ser ativado quando o título do menu é
selecionado. Utilize ON PAD NomeTítuloMenu OF NomeBarraMenus1 sem ACTIVATE POPUP
para liberar um menu de um título do menu.

Se você especificar a barra de menu do sistema _MSYSMENU para NomeBarraMenus1,


NomeMenu não poderá especificar um menu criado com a cláusula DEFINE POPUP PROMPT.
ACTIVATE MENU NomeBarraMenus2 Especifica o nome da barra de menu a ser ativado quando
o título do menu é selecionado. Utilize ON PAD NomeTítuloMenu OF NomeBarraMenus1 sem
ACTIVATE MENU para liberar uma barra de menu de um nome de menu.

Comentários

Utilize ON SELECTION PAD para executar um comando quando um título de menu é selecionado.

ON PAGE, comando

Especifica um comando a ser executado quando a impressão alcança um número de linha


especificado em um relatório ou quando você emite EJECT PAGE.

Sintaxe

ON PAGE
[AT LINE nNúmeroLinha [Comando]]
Argumentos

AT LINE nNúmeroLinha [Comando] Especifica o comando a ser executado no número de linha


designado. O comando especificado é executado quando _PLINENO, a variável do sistema que
mantém a trilha do número de linha atual em um relatório, se torna maior que o número de linha
especificado com nNúmeroLinha. O comando especificado com ON PAGE também é executado
quando você emite EJECT PAGE. Para obter maiores informações, consulte EJECT PAGE.

Comentários

Normalmente, ON PAGE utiliza DO a fim de executar um procedimento para o tratamento de


quebras de página, cabeçalhos e rodapés.

A execução de ON PAGE sem a cláusula AT LINE limpa o comando ON PAGE.


ON SELECTION MENU, comando

Especifica um comando que é executado quando você seleciona um título de menu em uma barra de
menus.

Sintaxe

ON SELECTION MENU NomeBarraMenus | ALL


[Comando]

Argumentos

NomeBarraMenus Especifica o nome da barra de menus para a qual um comando é atribuído. O


comando é executado quando qualquer título de menu é selecionado na barra de menus. Você pode
especificar o nome de uma barra de menus definida pelo usuário criada com DEFINE MENU ou
com a barra de menus do sistema do Visual FoxPro, _MSYSMENU.

ALL Executa um comando quando qualquer título de menu é selecionado em qualquer barra de
menus.

Comando Especifica o comando a ser executado quando um título de menu for selecionado.
Utilize ON SELECTION MENU sem um comando para liberar um comando atribuído a uma barra
de menus.

Comentários

Ao criar e ativar uma barra de menus, coloque ON SELECTION MENU entre DEFINE MENU e
ACTIVATE MENU.

Utilize ON SELECTION PAD para executar um comando quando um item de menu específico for
selecionado. ON SELECTION PAD prevalece sobre ON SELECTION MENU. Utilize ON PAD
para ativar um menu ou uma barra de menus quando um título de menu específico for selecionado.

Utilize ON SELECTION MENU sem um comando para liberar um comando atribuído a uma barra
de menus.

ON SELECTION MENU, exemplo do comando

No exemplo a seguir, ON SELECTION MENU é utilizado para executar um procedimento quando


um título de menu é selecionado na barra de menus do sistema do Visual FoxPro.
A atual barra de menus do sistema é gravada na memória com SET SYSMENU SAVE e todos os
títulos de menu do sistema são removidos com SET SYSMENU TO.
DEFINE PAD cria vários títulos de menu do sistema. Quando você seleciona um título de menu, o
procedimento choice, atribuído à barra de menus com ON SELECTION MENU, é executado. O
procedimento choice exibe o nome do título de menu selecionado e o nome da barra de menus. Se
você selecionar o título do menu Sair, o menu original do sistema do Visual FoxPro será restaurado.

*** Nomeie este programa como ONMENU.PRG ***


CLEAR
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\<latórios' COLOR SCHEME 3 KEY
ALT+L, ''

DEFINE PAD padExit OF _MSYSMENU PROMPT 'S\<air' COLOR SCHEME 3 ;


KEY ALT+A, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN onmenu WITH PAD( ), MENU( )
PROCEDURE 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 título de menu específico em
uma barra de menus.

Sintaxe

ON SELECTION PAD NomeTítuloMenu OF NomeBarraMenus


[Comando]
Argumentos

NomeTítuloMenu OF NomeBarraMenus Especifica o nome do título de menu ao qual o comando


é atribuído.

Comando Especifica o comando do Visual FoxPro a ser executado quando o título de menu
especificado for selecionado.

Comentários

Quando você selecionar o título de menu especificado, o Visual FoxPro executará o comando
especificado com ON SELECTION PAD. Normalmente, ON SELECTION PAD utiliza DO para
executar um procedimento ou um programa quando um título de menu específico é selecionado na
barra de menus. Ao criar e ativar a barra de menus, coloque ON SELECTION PAD entre DEFINE
MENU e ACTIVATE MENU.

Utilize ON SELECTION MENU para executar um comando quando selecionar qualquer título de
menu em uma barra de menus. Utilize ON PAD para ativar um menu ou uma barra de menus
quando selecionar um título de menu específico em uma barra de menus.

Utilize ON SELECTION PAD sem um comando para liberar um comando atribuído ao título de
menu.
ON SELECTION POPUP, comando

Especifica um comando a ser executado quando você selecionar qualquer item em um menu
especificado ou em todos os menus.

Sintaxe

ON SELECTION POPUP NomeMenu | ALL


[Comando]

Argumentos

NomeMenu Especifica o menu ao qual o comando é atribuído.

ALL Se você incluir ALL em vez de um nome de menu, o Visual FoxPro executará o comando
quando um item de menu for selecionado em qualquer menu.

Comando Especifica o comando a ser executado quando um item de menu for selecionado.

Comentários

Quando você seleciona qualquer item em um menu, o Visual FoxPro executa o comando
especificado com ON SELECTION POPUP. Ao criar e ativar o menu, coloque ON SELECTION
POPUP entre DEFINE POPUP e ACTIVATE POPUP.

Utilize ON SELECTION BAR para executar um comando quando selecionar um item de menu
específico. ON SELECTION BAR prevalece sobre ON SELECTION POPUP. Utilize ON BAR
para ativar um menu ou uma barra de menus quando selecionar um item de menu específico.

Utilize ON SELECTION POPUP sem um comando para liberar um comando atribuído a um item
de menu com um ON SELECTION POPUP anterior.
ON SHUTDOWN, comando

Especifica um comando a ser executado quando você tentar sair do Visual FoxPro ou Microsoft
Windows.

Sintaxe

ON SHUTDOWN [Comando]

Argumentos

Emita ON SHUTDOWN sem Comando para liberar o comando ON SHUTDOWN atual.

Comentários

O comando especificado em ON SHUTDOWN será executado se você tentar sair do Visual


FoxPro. Se você tentar sair do Microsoft Windows a partir do Gerenciador de programas, enquanto
o Visual FoxPro estiver aberto, o controle será retornado ao Visual FoxPro e o comando
especificado em ON SHUTDOWN será executado.

Normalmente, o comando ON SHUTDOWN é um comando DO que executa uma rotina para exibir
uma caixa de diálogo. A caixa de diálogo pergunta se você tem certeza de que deseja sair do
aplicativo atual e do Visual FoxPro. Se você quiser sair do aplicativo, a rotina poderá fechar
arquivos abertos, limpar o ambiente do Visual FoxPro e, em seguida, executar QUIT. Caso você
não queira sair do aplicativo atual, a rotina poderá retornar o controle novamente para o aplicativo.
ON( ), função

Retorna o comando atribuído a cada um dos seguintes comandos de gerenciamento de eventos: ON


ERROR, ON ESCAPE, ON KEY LABEL, ou ON PAGE.

Sintaxe

ON(cComandoON [, NomeRótuloTecla])

Tipos de retorno

Caractere

Argumentos
cComandoON Especifica um dos comandos de gerenciamento de eventos. A seguir são
apresentados os comandos e as expressões de caracteres correspondentes a serem utilizados com
ON( ):

Comando cComandoON

ON ERROR ERROR
ON ESCAPE ESCAPE
ON KEY LABEL KEY
ON PAGE PAGE

Por exemplo, para retornar o comando atribuído atualmente a ON ERROR, utilize

? ON('ERROR')
NomeRótuloTecla Utilizado em ON KEY LABEL para especificar uma tecla ou uma combinação
de teclas à qual o comando é atribuído. Especifique KEY em cComandoON e o nome do rótulo da
tecla ou da combinação de teclas em NomeRótuloTecla. Para obter uma lista completa dos nomes
de rótulos de teclas, consulte ON KEY LABEL.

Por exemplo, para retornar o comando atribuído atualmente à tecla de função F7 com ON KEY
LABEL, utilize

? ON('KEY', 'F7')

Comentários

Quando ocorre um evento que é interceptado por um dos comandos de gerenciamento de eventos, o
comando atribuído pelo comando de gerenciamento de eventos é executado. ON( ) retorna o
comando atribuído a um comando de gerenciamento de eventos. ON( ) retornará uma seqüência
vazia se nenhum comando estiver atribuído atualmente ao comando de gerenciamento de eventos
especificado.

ON( ), exemplo da função

O seguinte exemplo utiliza ON( ) para exibir as definições de ON ERROR e ON KEY LABEL.

ON ERROR DO 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ê não especificar uma
extensão para o nome do arquivo, o Visual FoxPro atribuirá automaticamente a extensão .DBC. Se
omitir NomeArquivo, a caixa de diálogo Abrir será exibida. Você pode especificar um nome de
caminho como parte do nome do banco de dados.
Observação O Visual FoxPro não irá reconhecer um nome de caminho adequado se um nome de
diretório ou disco contiver um ponto de exclamação (!).

? Exibe a caixa de diálogo Abrir, na qual você poderá escolher um banco de dados já existente ou
digitar o nome de um novo Formulário a ser criado.

EXCLUSIVE Abre o banco de dados no modo exclusivo. Se você abrir o banco de dados no modo
exclusivo, outros usuários não poderão acessá-lo e receberão uma mensagem de erro se tentarem
fazer isso. Se você não incluir EXCLUSIVE nem SHARED, a definição atual de SET EXCLUSIVE
determinará como o banco de dados será aberto.

SHARED Abre o banco de dados no modo compartilhado. Se você abrir o banco de dados para
uso compartilhado, outros usuários poderão acessá-lo. Se você não incluir EXCLUSIVE nem
SHARED, a definição atual de SET EXCLUSIVE determinará como o banco de dados será aberto.

NOUPDATE Especifica que o banco de dados não pode ser alterado. Em outras palavras, o banco
de dados é somente para leitura. Se você omitir NOUPDATE, o banco de dados será aberto com
acesso para leitura e gravação.

As tabelas contidas no banco de dados não são afetadas por NOUPDATE. Para evitar alterações
em uma tabela do banco de dados, inclua NOUPDATE em USE ao abrir a tabela.

VALIDATE Especifica que o Visual FoxPro assegura que as referências no banco de dados são
válidas. O Visual FoxPro verifica se as tabelas e os índices aos quais é feita referência no banco de
dados estão disponíveis em disco. O Visual FoxPro também verifica se os campos e as marcas de
índice aos quais é feita referência existem nas tabelas e índices.

Comentários

Enquanto o banco de dados está aberto, todas as tabelas nele contidas estão disponíveis. Contudo, as
tabelas não estão implicitamente abertas. Você deverá abri-las com USE.

Quando USE é executado, o Visual FoxPro procura a tabela dentro do banco de dados aberto no
momento. Se a tabela não for encontrada, o Visual FoxPro procurará por uma tabela fora do banco
de dados. Isso significa que, se uma tabela fora do banco de dados tiver o mesmo nome de outra
dentro do banco de dados, esta será encontrada primeiro.

Você não pode abrir um banco de dados que foi aberto exclusivamente por outro usuário.

OPEN DATABASE, exemplo do comando

No exemplo a seguir, OPEN DATABASE é utilizado para abrir o banco de dados testdata.
DISPLAY DATABASE é utilizado para exibir informações sobre as tabelas do banco de dados.
CLOSE 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 informações da tabela

ORDER( ), função

Retorna o nome da marca ou do arquivo de índice de controle para a tabela atual ou especificada.

Sintaxe

ORDER([nÁreaTrabalho | cAliasTabela [, nCaminho]])

Tipos de Retorno

Caractere

Argumentos

nÁreaTrabalho Especifica a Área de trabalho de uma tabela cujo nome do arquivo de índice de
controle ou nome da marca de controle é retornado por ORDER( ).

cAliasTabela Especifica o alias de tabela cujo nome do arquivo de índice de controle ou nome da
marca de controle é retornado por ORDER( ).

nCaminho Especifica que a unidade de disco e o diretório são retornados junto com o nome do
arquivo de índice composto ou de entrada única. A expressão numérica nCaminho pode ter
qualquer valor.

Comentários

Uma tabela pode ter vários arquivos de índice abertos simultaneamente. No entanto, apenas um
arquivo de índice de entrada única (o arquivo de índice de controle) ou uma marca de um arquivo
de índice composto (a marca de controle) controla a ordem de exibição ou de acesso da tabela.
Determinados comandos, como SEEK, utilizam o arquivo de índice de controle ou a marca de
controle para procurar registros. Esta função retorna o nome do arquivo de índice de controle ou da
marca de controle.
USE e SET INDEX suportam a abertura de mais de um índice com uma lista de arquivos de índice.
Um arquivo de índice de controle ou uma marca de controle pode ser designado nesta lista de
arquivos de índice. É possível também utilizar SET ORDER para designar um índice ou uma marca
de controle.

Como padrão, ORDER( ) retorna o nome do arquivo de índice de controle ou o nome da marca de
controle para a Área de trabalho atual. A função ORDER( ) retorna a seqüência vazia se uma ordem
não for definida (SET ORDER TO é emitida ou não há nenhum arquivo ou marca de índice de
controle).

ORDER( ), exemplo da função

O exemplo a seguir exibe arquivos e marcas de índice.

CLOSE 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( ), função

Retorna o nome e o número da versão do sistema operacional onde o Visual FoxPro está sendo
executado.

Sintaxe

OS([1])

Tipos de Retorno

Caractere

Argumentos

1 Utilize OS(1) para retornar o número da versão do software do sistema operacional.

Comentários

Se o argumento 1 opcional for omitido, será retornado o nome e o número da versão do sistema
operacional.
No Visual FoxPro para Windows, utilize OS( ) para retornar a versão do MS-DOS (por exemplo,
MS-DOS 6.22).

OS( ), exemplo da função

? OS( )
? OS(1)

PACK DATABASE, comando

Remove os registros marcados para exclusão do banco de dados atual.

Sintaxe

PACK DATABASE
Comentários

Um banco de dados contém registros marcados para exclusão depois que uma tabela ou
visualização é removida do banco de dados ou se a estrutura de uma tabela do banco de dados é
modificada.

O banco de dados deve ser aberto com exclusividade e nenhuma tabela ou visualização no banco de
dados pode ser aberta.

PACK DATABASE, exemplo do comando

No exemplo a seguir, PACK DATABASE é utilizado para compactar o banco de dados testdata,
removendo os registros marcados para exclusão.

CLOSE 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 exclusão na tabela atual e reduz o
tamanho de um arquivo de Memo associado à tabela.

Sintaxe

PACK [MEMO] [DBF]

Argumentos

MEMO Remove o espaço não utilizado do arquivo de Memo, mas não remove da tabela os
registros marcados para exclusão. As informações contidas em campos Memo são armazenadas em
um arquivo de Memo associado. Um arquivo de Memo tem o mesmo nome da tabela e uma
extensão .FPT.

DBF Remove da tabela os registros marcados para exclusão, mas não afeta o arquivo de Memo.

Comentários
Quando o comando PACK é utilizado, o Visual FoxPro copia para uma tabela temporária todos os
registros não marcados para exclusão. Depois de concluída a execução de PACK, o Visual FoxPro
exclui a tabela original do disco e renomeia a tabela temporária com o nome da tabela original. Se
você pressionar ESC para interromper PACK, a tabela temporária será excluída e a tabela original
permanecerá inalterada. A tabela original também será recuperada se você ficar sem espaço em
disco enquanto PACK estiver em execução.

Quando você emite PACK sem as cláusulas MEMO e DBF, PACK afeta tanto a tabela como o
arquivo de Memo.

PACK requer uso exclusivo da tabela. Para obter maiores informações sobre como abrir uma tabela
com exclusividade em uma rede, consulte SET EXCLUSIVE.

Caso a tabela atual tenha um ou mais índices abertos, PACK irá reconstruir os arquivos de índice.

Importante Tenha o cuidado de marcar somente os registros desnecessários. Não há como


recuperar registros excluídos depois da utilização de PACK.

PAD( ), função

Retorna o último título de menu selecionado em uma barra de menus como uma seqüência de
caracteres maiúsculos.

Sintaxe

PAD( )

Tipos de retorno

Caractere
Comentários

Para que PAD( ) retorne um título de menu, é necessário que uma barra de menus esteja definida e
ativa. As barras de menus são criadas e ativadas com DEFINE MENU e ACTIVATE MENU.

Também é possível utilizar PAD( ) com a barra de menus do sistema do Visual FoxPro.

PAD( ) retorna uma seqüência vazia quando uma barra de menus não está definida e ativa ou se
você emite PAD( ) na janela Comando.

PAD( ), exemplo da função

Neste exemplo, PAD( ) é utilizada para passar um título de menu a um procedimento.


A barra de menus do sistema Visual FoxPro atual é gravada para a memória com SET SYSMENU
SAVE e todos os títulos de menu do sistema são removidos com SET SYSMENU TO.
Vários títulos de menu do sistema são criados com DEFINE PAD. Quando um título de menu for
selecionado, PAD( ) será utilizado para passar o título de menu ao procedimento denominado
choice. choice exibirá o título de menu selecionado e o nome da barra de menus. Se o título de
menu Sair for selecionado, o menu original do sistema Visual FoxPro será restaurado.

*** Nomeie este programa como PADEXAM.PRG ***


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\<latórios' COLOR SCHEME 3 KEY
ALT+L, ''

DEFINE PAD padExit OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ;


KEY ALT+I, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN padexam WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETERS gcPad, gcMenu
WAIT WINDOW 'Você escolhe' + gcPad + ;
' do menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF
PADL( ) | PADR( ) | PADC( ), funções

Retorna uma seqüência de uma expressão preenchida com espaços ou caracteres até o comprimento
especificado no lado direito, esquerdo ou nos dois lados.

Sintaxe

PADL(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])


– Ou –
PADR(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
– Ou –
PADC(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])

Tipos de retorno

Caractere

Argumentos

eExpressão Especifica a expressão a ser preenchida. Esta expressão pode ser de qualquer tipo,
exceto expressão lógica ou um campo de figura ou geral.
nTamanhoResultado Especifica o número total de caracteres na expressão depois que ela foi
preenchida.

cCaracterePreenchimento Especifica o valor a ser utilizado no preenchimento. Este valor é


repetido, de acordo com a necessidade, para preencher a expressão até o número especificado de
caracteres.

Se você omitir cCaracterePreenchimento, espaços (caractere ASCII 32) serão utilizados no


preenchimento.

Comentários

PADL( ) insere preenchimento à esquerda, PADR( ) insere preenchimento à direita e PADC( )


insere preenchimento nos dois lados.

PADL( ) | PADR( ) | PADC( ), exemplo das funções

STORE 'TITLE' TO gcString


CLEAR
? PADL(gcString, 40, '=')
? PADR(gcString, 40, '=')
? PADC(gcString, 40, '=')

PARAMETERS( ), função

Retorna o número de parâmetros passados para o procedimento, para a função definida pelo usuário
ou para o programa chamado mais recentemente.

Sintaxe

PARAMETERS( )
Tipos de retorno

Numérico

Comentários

PARAMETERS( ) é útil para determinar o número de parâmetros passados para um programa, um


procedimento ou uma função definida pelo usuário.

Observação O valor retornado por PARAMETERS( ) é redefinido sempre que um procedimento,


uma função definida pelo usuário ou um programa é chamado ou quando o comando ON KEY
LABEL é executado.

PARAMETERS( ), exemplos de função

O exemplo 1 chama um procedimento e exibe o número de parâmetros passados em uma janela de


espera.
O exemplo 2 utilize um procedimento para exibir a média de 4 valores.

* Exemplo 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 médio é'
?? gnMin

* Esta função definida pelo usuário permite até 9 parâmetros a serem passados.
* Usa a função PARAMETERS( ) para determinar quantos

* foram passados e retorna o valor médio.

FUNCTION 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 variáveis de memória


privadas.

Sintaxe

PARAMETERS ListaParâmetro

Argumentos
ListaParâmetro Especifica os nomes das matrizes ou das variáveis de memória às quais os dados
são atribuídos.

Os parâmetros da ListaParâmetros são separados por vírgulas. Na instrução PARAMETERS deve


haver, pelo menos, o mesmo número de parâmetros existentes na instrução DO ... WITH. Se o
número de variáveis ou matrizes listado na instrução PARAMETERS for superior ao número
passado por DO ... WITH, as demais variáveis ou matrizes serão inicializadas com um valor falso
(.F.). Um limite máximo de 27 parâmetros podem ser passados.

PARAMETERS( ) retorna o número de parâmetros passados para a última rotina executada.

Comentários

Quando PARAMETERS for utilizado com DO ... WITH, esta deve ser a primeira instrução
executada no programa, procedimento ou função definida chamada pelo usuário.

Como padrão, DO ... WITH passa variáveis e matrizes para procedimentos por referência. Quando
um valor é alterado no procedimento chamado, o novo valor é retornado à variável ou matriz
associada, no programa de chamada. Para passar uma variável ou matriz a um procedimento por
valor, coloque-as entre parênteses na lista de parâmetros DO ... WITH. Qualquer alteração feita no
parâmetro do procedimento chamado não é retornada ao programa de chamada.

Como padrão, as variáveis são passadas por referência a um procedimento e por valor a uma função
definida pelo usuário. Utilize SET UDFPARMS TO REFERENCE para passar por referência
variáveis para uma função definida pelo usuário.

PARAMETERS, exemplo de comando

O exemplo abaixo passa parâmetros para uma rotina de tratamento de erro.

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;


MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR && restaura a rotina de tratamento de erro do sistema

PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Número do erro: ' + LTRIM(STR(gnError))
? 'Mensagem do erro: ' + gcMess
? 'Linha de código com erro: ' + gnMess1
? 'Número da linha com erro: '+ LTRIM(STR(gnLineNo))
? 'Programa com erros: ' + gcProg
PAYMENT( ), função

Retorna o valor de cada pagamento periódico sobre um empréstimo com juros fixos.

Sintaxe

PAYMENT(nPrincipal, nTaxaJuros, nPagamentos)

Tipos de retorno

Numérico

Argumentos

nPrincipal Especifica o principal inicial do empréstimo.

nTaxaJuros Especifica a taxa de juros fixa por período. Se o empréstimo for saldado com
pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12.
nPagamentos Especifica o número total de pagamentos que serão efetuados sobre o empréstimo.

Comentários

PAYMENT( ) considera uma taxa de juros periódica constante e considera que os pagamentos serão
efetuados no fim de cada período.
PAYMENT( ), função

Retorna o valor de cada pagamento periódico sobre um empréstimo com juros fixos.

Sintaxe

PAYMENT(nPrincipal, nTaxaJuros, nPagamentos)

Tipos de retorno

Numérico

Argumentos

nPrincipal Especifica o principal inicial do empréstimo.

nTaxaJuros Especifica a taxa de juros fixa por período. Se o empréstimo for saldado com
pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12.

nPagamentos Especifica o número total de pagamentos que serão efetuados sobre o empréstimo.

Comentários

PAYMENT( ) considera uma taxa de juros periódica constante e considera que os pagamentos serão
efetuados no fim de cada período.
PCOL( ), função

Retorna a posição de coluna atual do cabeçote de impressão da impressora.

Sintaxe

PCOL( )
Tipos de retorno

Numérico

Comentários

O valor retornado por PCOL( ) é relativo à definição atual da margem esquerda da impressora. Para
definir a margem esquerda, utilize SET MARGIN ou armazene um valor na variável de memória do
sistema _PLOFFSET.

A função PCOL( ) é especialmente útil no endereçamento relativo do texto impresso.

Você pode utilizar o operador $ em vez de PCOL( ).

PCOL( ), exemplo da função

CLEAR
@ PROW( ), PCOL( )+12 SAY 'Contato'
@ PROW( ), $+12 SAY 'Contato'
PCOUNT( ), função

Retorna o número de parâmetros passados para o programa atual, procedimento ou função definida
pelo usuário.

Sintaxe

PCOUNT( )

Tipos de retorno

Numérico

Comentários

PCOUNT( ) é útil para determinar quantos parâmetros são passados para o programa atual,
procedimento ou função definida pelo usuário.

Observação O valor retornado por PCOUNT( ) é redefinido cada vez que um programa,
procedimento ou função definida pelo usuário é solicitada ou quando ON KEY LABEL é
executado.

PCOUNT( ), exemplos da função


O exemplo 1 solicita um procedimento e exibe uma janela de espera para o número de parâmetros
passados.
O exemple 2 utiliza um procedimento para exibir a média de 4 valores.

* Exemplo 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 médio é '
?? gnMin

* Esta função definida pelo usuário permite que até 9 parâmetros sejam passados.
* Utiliza a função PCOUNT( ) para determinar quantos

* foram passados e retornar o valor médio.

FUNCTION 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( ), função

Retorna o pi constante numérico.

Sintaxe

PI( )

Tipos de retorno

Numérico

Comentários

O pi constante numérico (3,141592) é o grau de circunferência de um círculo em relação aos seu


diâmetro.

O número de casas decimais exibido no valor retornado por PI( ) é determinado por SET
DECIMALS.

PI( ), exemplo da função

CLEAR
? PI( ) && Exibe 3.14
STORE 2.30 TO gnRadius
STORE PI( ) * gnRadius^2 TO gnArea
? gnArea && Exibe 16.6190

POPUP( ), função

Retorna como uma seqüência o nome do menu ativo ou um valor lógico que indica se um menu foi
definido.

Sintaxe

POPUP([cNomeMenu])

Tipos de retorno

Caracteres ou Lógico

Argumentos

cNomeMenu Retorna um valor lógico que indica se cNomeMenu foi definido. POPUP( ) retornará
verdadeiro (.T.), se o menu especificado tiver sido definido; caso contrário, POPUP( ) retornará
falso (.F.).

Comentários

A função POPUP( ) retornará o nome do menu ativo como uma seqüência de caracteres se você
omitir o argumento opcional cNomeMenu. Para que POPUP( ) retorne o nome de um menu, este
deve estar definido e ativo. Os menus são criados e ativados com DEFINE POPUP e ACTIVATE
POPUP. O menu pode ser, também, um menu do sistema do Visual FoxPro. POPUP( ) retornará
uma seqüência vazia se um menu não estiver definido e ativo ou se você emitir POPUP( ) a partir
da janela Comando.
PRINTSTATUS( ), função

Retornará verdadeiro (.T.) se a impressora ou dispositivo de impressão estiver on-line; caso


contrário, retornará falso (.F.).

Sintaxe

PRINTSTATUS( )

Tipos de retorno

Lógico

Comentários

A função PRINTSTATUS( ) é semelhante a SYS(13), com a exceção de que SYS(13) retorna


READY em vez de verdadeiro (.T.) ou OFFLINE em vez de falso (.F.).

No Visual FoxPro, PRINTSTATUS( ) sempre retornará verdadeiro (.T.) se a impressora estiver


conectada através do Painel de controle do Windows.

PRINTSTATUS( ), exemplo de função

? PRINTSTATUS( )
*** Exemplo do Programa ***
STORE PRINTSTATUS( ) TO glReady
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 variáveis de memória que foram definidas em um programa
de chamada a partir do programa atual.

Sintaxe

PRIVATE ListaVar
– Ou –
PRIVATE ALL
[LIKE Estrutura | EXCEPT Estrutura]

Argumentos
ListVar Especifica as matrizes ou as variáveis de memória que devem ser declaradas privadas .

ALL LIKE Estrutura Faz com que PRIVATE oculte todas as matrizes e variáveis de memória
cujos nomes correspondam a Estrutura, que pode conter os curingas ponto de interrogação (?) e
asterisco (*).

ALL EXCEPT Estrutura Faz com que PRIVATE oculte todas as matrizes ou variáveis de
memória, a menos que os seus nomes coincidam com Estrutura, que pode conter os curingas ponto
de interrogação (?) e asterisco (*).

Comentários

Ocultar variáveis criadas em programas de nível mais alto permite que variáveis com o mesmo
nome das variáveis privadas sejam manipuladas no programa atual sem afetarem os valores das
variáveis ocultas. Uma vez concluída a execução do programa que contém PRIVATE, todas as
matrizes e variáveis de memória declaradas privadas ficarão novamente disponíveis.

O comando PRIVATE não cria variáveis, ele simplesmente oculta do programa atual variáveis
declaradas em programas de nível mais alto.

PRIVATE , exemplo de comando

*** Exemplo do programa demonstrando PRIVATE ***


SET TALK 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( ), função

Retorna o texto de um título de menu.


Sintaxe

PRMPAD(NomeBarraMenu, NomeTítuloMenu)

Tipos de retorno

Caractere

Argumentos

NomeBarraMenu Especifica o nome da barra de menus que contém o título de menu.

NomeTítuloMenu Especifica o título do menu.

Comentários

As barras de menus são criadas com DEFINE MENU, que cria a barra de menus, e com DEFINE
PAD, que cria os títulos de menus da barra de menus. PRMPAD( ) funciona, também, com o
sistema de menus do Visual FoxPro. A barra de menus não precisa estar ativa para que PRMPAD( )
retorne o texto de um título de menu.

Caso um título de menu tenha sido criado utilizando-se os caracteres barra invertida e menor que
(\<) para criar uma tecla de acesso, ou uma barra invertida (\) para desativar o título do menu,
PRMPAD( ) retornará somente o texto do título do menu, não incluindo os caracteres especiais.

PRMPAD( ), exemplo de função

No exemplo a seguir, uma barra de menus denominada mnuExemplo é criada com três títulos de
menu. Os designadores de opção desativada e tecla de acesso não são retornados a partir dos títulos
de menu denominados título Dois e título Três. A barra de menus é ativada para exibir os títulos de
menu e é eliminada da tela e da memória quando um título de menu é selecionado.

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 também'

=messagebox( PRMPAD('mnuExemplo', 'títuloUm') )


=messagebox( PRMPAD('mnuExemplo', 'títuloDois') )
=messagebox( PRMPAD(gcPopNome, 'títuloTrês') )
ACTIVATE MENU mnuExample
DEACTIVATE MENU mnuExample
RELEASE MENU mnuExample

PROCEDURE, comando

Identifica o início de um procedimento em um arquivo de programa.

Sintaxe

PROCEDURE NomeProcedimento
Comandos
[RETURN [eExpressão ]]
ENDPROC

Argumentos

NomeProcedimento Especifica o nome do procedimento a ser criado.

Comentários

PROCEDURE é uma instrução dentro de um arquivo de programa que especifica o início de cada
procedimento neste arquivo e define o nome do procedimento. Os nomes dos procedimentos devem
começar com uma letra ou com um sublinhado e podem conter qualquer combinação de letras,
números e sublinhados

No Visual FoxPro para Windows, os nomes dos procedimentos podem ter até 254 caracteres.

Os comentários podem ser colocados na mesma linha depois de PROCEDURE e ENDPROC. Estes
comentários são ignorados durante a compilação e a execução do programa.

A instrução PROCEDURE é seguida de uma séries de comandos que compõem o procedimento.


Você pode incluir RETURN em qualquer lugar do procedimento para retornar um controle ao
programa de chamada ou a um outro programa e para definir um valor retornado pelo
procedimento. Se você não incluir um comando RETURN, um RETURN implícito será
automaticamente executado quando a função sair. Se o comando RETURN não incluir um valor de
retorno (ou se um RETURN implícito for executado), o Visual FoxPro atribuirá .T. (Verdadeiro)
como o valor de retorno.

O procedimento encerra-se com o comando ENDPROC. Este comando é opcional; o procedimento


sai quando encontra um outro comando PROCEDURE, um comando FUNCTION ou o final do
arquivo de programa.
Observação Você não pode ter código de programa normal executável incluído em um arquivo de
programa depois de procedimentos; apenas procedimentos, funções definidas pelo usuário e
definição de classe podem seguir o primeiro comando PROCEDURE ou FUNCTION no arquivo.

Ao executar um procedimento com DO NomeProcedimento, o Visual FoxPro procura o


procedimento em uma ordem específica. O Visual FoxPro procura:

1. O programa que contém DO NomeProcedimento.


2. O banco de dados atual.
3. Os arquivos de procedimento abertos com SET PROCEDURE.
4. Os programas na cadeia de execução. Ele procura arquivos de programa começados com o
programa executado por último até o primeiro programa executado.
5. Um arquivo de programa independente. Se for localizado um arquivo de programa com o
mesmo nome do arquivo especificado com DO, o Visual FoxPro executará o programa. Se não for
localizado um nome de arquivo de programa correspondente, o Visual FoxPro retornará uma
mensagem de erro.

Inclua a cláusula IN em DO para executar um procedimento em um arquivo específico.

Como padrão, os parâmetros são passados aos procedimentos por valor. Para obter informações
sobre como passar parâmetros para procedimentos por referência, consulte SET UDFPARMS.
Podem ser passados no máximo 27 parâmetros para um procedimento. Os parâmetros podem ser
passados a um procedimento pela inclusão de uma instrução PARAMETERS ou LPARAMETERS
no procedimento ou colocando uma lista de parâmetros imediatamente após PROCEDURE
NomeProcedimento. Inclua a lista de parâmetros entre parênteses e separe os parâmetros com
vírgulas.

PROCEDURE, exemplo de comando

O exemplo a seguir ilustra como um procedimento pode ser chamado para realizar uma tarefa
discreta como, por exemplo, fazer uma entrada em um arquivo de resumo. O procedimento abre o
arquivo de resumo (que se supõe existir no exemplo), constrói uma entrada com base nas
informações passadas nos parâmetros, grava a entrada e fecha o arquivo. O procedimento é
chamado com um comando DO semelhante ao comando na parte superior do programa.

DO MakeLogEntry WITH "Efetuou log on", "jsmith"

PROCEDURE MakeLogEntry
PARAMETERS message, username
pnHandle = FOPEN("LOG2.TXT",2) && Considera que o arquivo existe
pnSize = FSEEK(pnHandle,0,2) && Vai para o final do arquivo
logEntry = dtoc(date())+","+hora()+","+nomeusuário+","+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( ), função

Retorna o nome do programa atualmente em execução ou o nome do programa em execução


quando ocorreu um erro.

Sintaxe

PROGRAM([nNível])

Tipos de retorno

Caractere

Argumentos

nNível Especifica quantos níveis de programa para trás do nome do programa deverão ser
localizados. Esse parâmetro pode variar de 0 até a profundidade de aninhamento de programas. Um
programa pode executar outro programa, que pode executar um outro e assim sucessivamente. Os
programas podem ser aninhados até 128 níveis.

Se você especificar 0 ou 1 em nNível, a função PROGRAM( ) retornará o nome do programa


mestre (o programa de nível mais alto). Se nNível ultrapassar a profundidade de aninhamento de
programas, PROGRAM( ) retornará uma seqüência vazia.

Comentários

PROGRAM( ) ajuda o programa a recuperar-se de erros. Essa função é semelhante a SYS(16).


Se utilizada sem argumentos, PROGRAM( ) retorna o nome do programa atualmente em execução.

PROGRAM( ), exemplo da função

ON ERROR DO errhand WITH PROGRAM( )


*** A próxima linha deve gerar um erro ***
USE nodatabase
ON ERROR && Retorna à rotina de gerenciamento de erro padrão do sistema
PROCEDURE errhand
PARAMETERS gcProgram
WAIT 'Ocorreu um erro no programa ' + gcProgram WINDOW

PROMPT( ), função

Retorna o texto de um título de menu selecionado em uma barra de menus ou de um item de menu
selecionado em um menu.

Sintaxe

PROMPT( )

Tipos de retorno

Caractere

Comentários
PROMPT( ) retorna o texto do último título de menu selecionado de uma barra de menus ou o
último item de menu selecionado de um menu. A barra de menus ou o menu podem ser definidos
pelo usuário ou podem ser do sistema do Visual FoxPro. Se uma barra de menus ou um menu não
estiver ativo ou se você pressionar ESC para sair de uma barra de menus ou de um menu,
PROMPT( ) retornará uma seqüência vazia.

Uma barra de menus é criada com DEFINE MENU, e cada título de menu na barra de menus é
criado com DEFINE PAD. Um menu é criado com DEFINE POPUP, e os itens de menu são
criados com DEFINE BAR.

É possível utilizar MENU( ) e POPUP( ) para retornar o nome da barra de menus ou do menu a
partir do qual o título ou o item de menu é selecionado.
PROPER( ), função

Retorna uma seqüência em maiúsculas a partir de uma expressão de caracteres, conforme


apropriado, de nomes próprios.

Sintaxe

PROPER(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a partir da qual PROPER( ) retorna uma


seqüência de caracteres convertidos para maiúsculas.

PROPER( ), exemplo da função

STORE 'Visual FoxPro' TO gcExpr1

CLEAR
? PROPER(gcExpr1) && Exibe "Visual FoxPro"
STORE 'VISUAL FOXPRO' TO gcExpr2
? PROPER(gcExpr2) && Exibe "Visual FoxPro"

PROW( ), função

Retorna o atual número da linha do cabeçote de impressão da impressora.


Sintaxe

PROW( )

Tipos de retorno

Numérico

Comentários

Se você emitir EJECT, o Visual FoxPro redefinirá PROW( ) com 0.

PROW( ) é especialmente útil para o endereçamento relativo ao texto impresso.

PROW( ), exemplo da função

No exemplo a seguir, os dois comandos retornam o mesmo resultado. Você pode utilizar o operador
$ em vez de PCOL( ). Tanto $ quanto PCOL( ) retornam a atual posição da impressora na coluna.

@ PROW( ), PCOL( ) + 12 SAY 'Contato'


@ PROW( ), $+12 SAY 'Contato'

PRTINFO( ), função

Retorna a definição atual da impressora especificada.

Sintaxe

PRTINFO(nDefiniçãoImpressora [, cNomeImpressora])

Tipos de retorno

Numérico

Argumentos

nDefiniçãoImpressora Especifica a definição de impressora do Visual FoxPro que será retornada.

As tabelas a seguir listam os valores de retorno das definições de impressora.

Observação Se PRTINFO(2) retornar - 1 ou um valor diferente daqueles listados na tabela a


seguir, utilize PRTINFO(3) e PRTINFO(4) para retornar o tamanho do papel.
Se nDefiniçãoImpressora for igual a 1 (PRT_ORIENTATION em FOXPRO.H), PRTINFO( )
retornará a orientação do papel:

Valores de retorno Definição

–1 Informação não disponível


0 Retrato
1 Paisagem

Se nDefiniçãoImpressora for igual a 2 (PRT_PAPERSIZE em FOXPRO.H), PRTINFO( ) retornará


o tamanho do papel:

Valores de retorno Definição

–1 ou um valor diferente daqueles listados a seguir Informação não disponível. Utilize


nDefiniçãoImpressora = 3 e nDefiniçãoImpressora = 4 para determinar o tamanho do papel.
1 Carta, 8 1/2 x 11 pol
2 Carta pequeno, 8 1/2 x 11 pol
3 Tablóide, 11 x 17 pol
4 Ledger, 17 x 11 pol
5 Ofício, 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 padrão norte-americano, 14 7/8 x 11 pol
40 Fanfold padrão alemão, 8 1/2 x 12 pol
41 Fanfold ofício alemão, 8 1/2 x 13 pol

Se nDefiniçãoImpressora for igual a 3 (PRT_PAPERLENGTH em FOXPRO.H), PRTINFO( )


retornará o tamanho do papel em incrementos de 0,1mm.
Se nDefiniçãoImpressora for igual a 4 (PRT_PAPERWIDTH em FOXPRO.H), PRTINFO( )
retornará a largura do papel em incrementos de 0,1mm.
Se nDefiniçãoImpressora for igual a 5 (PRT_SCALE em FOXPRO.H), PRTINFO( ) retornará o
fator pelo qual a saída impressa é dimensionada.
Se nDefiniçãoImpressora for igual a 6 (PRT_COPIES em FOXPRO.H), PRTINFO( ) retornará o
número de cópias a serem impressas.

Se nDefiniçãoImpressora for igual a 7 (PRT_DEFASOURCE em FOXPRO.H), PRTINFO( )


retornará a origem do papel padrão:

Valores de retorno Definição

1 Compartimento superior
2 Compartimento inferior
3 Compartimento central
4 Alimentação manual
5 Compartimento de envelope
6 Envelope de alimentação manual
7 Seleção automática
8 Pinos de tração
9 Formato pequeno
10 Formato grande
11 Grande capacidade
14 Cassete

Se nDefiniçãoImpressora for igual a 8 (PRT_PRTQUAL em FOXPRO.H), PRTINFO( ) retornará


um valor positivo indicando a resolução horizontal em pontos por polegada (DPI, Dots Per Inch) ou
um valor negativo indicando a qualidade da impressão:
Valores de retorno Definição

-1 Rascunho
-2 Baixa
-3 Média
-4 Alta

Se nDefiniçãoImpressora for igual a 9 (PRT_COLOR em FOXPRO.H), PRTINFO( ) retornará um


valor que indica se uma impressora colorida gera saída colorida ou monocromática:

Valores de retorno Definição

1 Colorida
2 Monocromática

Se nDefiniçãoImpressora for igual a 10 (PRT_DUPLEX em FOXPRO.H), PRTINFO( ) retornará o


modo duplex:

Valores de retorno Definição

1 Impressão simplex
2 Duplex vertical
3 Duplex horizontal

Se nDefiniçãoImpressora for igual a 11 (PRT_YRESOLUTION em FOXPRO.H), PRTINFO( )


retornará a resolução vertical em DPI. Se essa informação não estiver disponível, será retornado -1.
Se nDefiniçãoImpressora for igual a 12 (PRT_TTOPTION em FOXPRO.H), PRTINFO( ) retornará
um valor que indica como as fontes TrueType® serão impressas:

Valores de retorno Definição

1 Imprime como gráficos de bitmap


2 Descarrega como fontes de software
3 Substitui fontes do dispositivo

Se nDefiniçãoImpressora for igual a 13, PRTINFO( ) retornará um valor que indica se a saída está
ordenada:

Valores de retorno Definição


0 Sem ordenação
1 Ordenada

cNomeImpressora Especifica o nome da impressora sobre a qual são retornadas informações. Se


cNomeImpressora for omitido, serão retornadas informações para a impressora padrão.

Comentários

As definições de impressora do Visual FoxPro são definidas na caixa de diálogo Configurar página.
Selecione Configurar página no menu Arquivo para exibir a caixa de diálogo Configurar página do
Visual FoxPro.

PUBLIC, comando

Define variáveis ou matrizes globais.

Sintaxe

PUBLIC ListaVarMem
– Ou –
PUBLIC [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...

Argumentos

ListaVarMem Especifica uma ou mais variáveis de memória a serem inicializadas e designadas


como globais.

[ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1])


[, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes a serem
inicializadas e designadas como globais. Consulte ” DIMENSION” para obter uma descrição de
cada argumento.

Comentários

É possível utilizar e modificar matrizes e variáveis globais a partir de qualquer programa executado
durante a sessão atual do Visual FoxPro.

Variáveis e matrizes criadas com PUBLIC são inicializadas com falso (.F.), exceto as variáveis
públicas FOX e FOXPRO, que são inicializadas com verdadeiro (.T.). As variáveis públicas FOX e
FOXPRO podem ser utilizadas para executar condicionalmente um código baseado no produto que
está sendo executado.

Qualquer variável ou matriz criada na janela Comando automaticamente se torna pública.

Qualquer variável ou matriz que você queira declarar como pública deve ser declarada pública antes
de você atribuir um valor a ela.

O Visual FoxPro irá gerar um erro de sintaxe se, dentro de um programa, você atribuir um valor a
uma matriz ou a uma variável e, posteriormente, declará-la pública com PUBLIC.

PUBLIC, exemplo do comando

SET TALK OFF


PUBLIC val1,val2
val1 = 10
val2 = 15

DO down
? val1
? val2

RELEASE ALL && Libera somente variáveis privadas


DISPLAY MEMORY LIKE val?
RELEASE val1,val2 && Variáveis públicas devem ser liberadas explicitamente
DISPLAY MEMORY LIKE val?

PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? val1
? val2
RETURN
PUSH POPUP, comando

Coloca na memória uma definição de menu em uma pilha de definições de menus.

Sintaxe

PUSH POPUP NomeMenu

Argumentos

NomeMenu Especifica o nome do menu cuja definição é colocada na pilha. O menu também pode
ser um menu do sistema do Visual FoxPro.

Comentários

Quando utilizado com POP POPUP, PUSH POPUP permite que você salve uma definição de menu,
faça alterações nessa definição e, em seguida, restaure-a ao seu estado original.

As definições de menus são colocadas e removidas da pilha na ordem último a entrar, primeiro a
sair.

PUSH POPUP, exemplo do comando

No exemplo a seguir, é criado um menu denominado popExam. A definição do menu é adicionada à


pilha e, então, modificada. Em seguida, o menu original é restaurado ao ser retirado da pilha.

DEFINE POPUP popExam FROM 5,5


DEFINE BAR 1 OF popExam PROMPT 'Um'
DEFINE BAR 2 OF popExam PROMPT 'Dois'
DEFINE BAR 3 OF popExam PROMPT 'Três'
DEFINE BAR 4 OF popExam PROMPT 'Quatro'
ACTIVATE POPUP popExam 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( ), função

Chama a caixa de diálogo Salvar como e retorna o nome do arquivo especificado.

Sintaxe

PUTFILE([cTextoPersonalizado] [, cNomeArquivo] [, cExtensãoArquivo])

Tipos de retorno

Caractere

Argumentos

cTextoPersonalizado Especifica o texto personalizado que deve aparecer na caixa de diálogo


Salvar como. No Windows 3.x, o texto aparece como o título da caixa de diálogo. No Windows 95,
o texto personalizado substitui o rótulo Nome do arquivo. No Macintosh, o texto personalizado
substitui o rótulo Salvar como.

Observe que, no Windows 95, as legendas longas podem estar truncadas.


cNomeArquivo Especifica o nome de arquivo padrão exibido na caixa de texto.

cExtensãoArquivo Especifica extensões de nomes de arquivo. Somente nomes de arquivo com a


extensão especificada serão exibidos na lista rolável da caixa de diálogo Salvar como quando a
caixa de verificação Todos os arquivos for limpa. A primeira extensão em cExtensãoArquivo será
automaticamente adicionada ao nome do arquivo digitado se não houver uma extensão incluída
junto ao nome do arquivo. Para obter uma lista de extensões de arquivo do Visual FoxPro e os tipos
de criadores correspondentes, consulte ” Extensões e tipos de arquivos”.

A expressão de caractere cExtensãoArquivo pode assumir uma das formas a seguir:

· cExtensãoArquivo pode conter uma única extensão, como .PRG, e apenas os nomes de
arquivo com essa extensão serão exibidos.
· cExtensãoArquivo pode conter uma lista de extensões de nome de arquivo separadas por
ponto-e-vírgula. Por exemplo, se você incluir PRG;FXP, o Visual FoxPro exibirá todos os nomes de
arquivo com as extensões .PRG e .FXP.
· Se os nomes de arquivo tiverem o mesmo nome raiz, mas extensões diferentes (por
exemplo, CUSTOMER.PRG e CUSTOMER.FXP), o Visual FoxPro exibirá somente o nome de
arquivo com a extensão que aparece primeiro em cExtensãoArquivo.

· cExtensãoArquivo pode conter uma lista de extensões de nome de arquivo separadas por
barras verticais, como PRG|FXP. Nesse caso, o Visual FoxPro exibe todos os nomes de arquivo
com as extensões listadas, mesmo que os arquivos tenham o mesmo nome raiz.
· Se cExtensãoArquivo contiver somente um ponto-e-vírgula (;), o Visual FoxPro exibirá
todos os nomes de arquivo sem extensão.
· Se cExtensãoArquivo for uma seqüência vazia, o Visual FoxPro exibirá os nomes de todos
os arquivos do diretório ou pasta atual.

· Se cExtensãoArquivo contiver curingas do MS-DOS, como o ponto de interrogação (?) e o


asterisco (*), o Visual FoxPro exibirá todos os nomes de arquivo com extensões correspondentes
aos critérios de caracteres curinga. Por exemplo, se cExtensãoArquivo
for ?X?, serão exibidos todos os nomes de arquivo com as extensões .FXP, .EXE, .TXT, e assim
por diante.

Comentários

Utilize PUTFILE( ) para escolher um nome de arquivo existente ou especificar um novo nome de
arquivo. PUTFILE( ) retornará o nome de arquivo com o seu caminho. Se você não digitar um
nome de arquivo, PUTFILE( ) retornará o nome de arquivo (especificado com cNomeArquivo) e a
extensão padrão (especificada por cExtensãoArquivo). Se você escolher Cancelar ou pressionar
ESC, PUTFILE( ) retornará uma seqüência vazia. É possível utilizar o nome do arquivo retornado
por PUTFILE( ) para nomear um arquivo e salvá-lo no disco.

PUTFILE( ), exemplo da função


O exemplo a seguir cria um arquivo de dados delimitado a partir de qualquer tabela existente
selecionada pelo usuário. GETFILE( ) é utilizada para localizar e abrir uma tabela e PUTFILE( ),
para retornar o nome do arquivo de destino.

gcTableName = GETFILE('DBF', 'Abre tabela:')


USE (gcTableName)
gcDelimName = ALIAS( ) + '.DLM'
gcDelimFile = PUTFILE('Arquivo delimitado:', gcDelimName, 'DLM')
IF EMPTY(gcDelimFile) && Esc pressionada
CANCEL
ENDIF
COPY TO (gcDelimFile) DELIMITED && Cria arquivo delimitado
MODIFY FILE (gcDelimFile) NOEDIT

PV( ), função

Retorna o valor atual de um investimento.


Sintaxe

PV(nPagamento, nTaxaJuros, nPagamentosTotais)

Tipos de retorno

Numérico

Argumentos

nPagamento Especifica o valor de pagamentos periódicos. nPagamento pode resultar em um


número positivo ou negativo. PV( ) considera que os pagamentos serão efetuados ao final de cada
período.

nTaxaJuros Especifica a taxa de juros periódica. Se a taxa de juros de um investimento for anual e
os pagamentos forem efetuados mensalmente, divida a taxa de juros anual por 12.

nPagamentosTotais Especifica o número total de pagamentos.

Comentários

PV( ) calcula o valor atual de um investimento com base em uma série de pagamentos periódicos
iguais a uma taxa de juros periódica constante.

PV( ), exemplo da função

STORE 500 to gnPayment && Pagamentos periódicos efetuados 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 sessão ativa do Visual FoxPro e retorna o controle ao sistema operacional.

Sintaxe

QUIT

Comentários

No Visual FoxPro para Windows, você retorna ao Windows.

Importante Utilize QUIT sempre que for terminar uma sessão do Visual FoxPro. Se desligar o
computador sem emitir QUIT, poderá haver perda de dados, os arquivos abertos poderão ser
danificados e os arquivos de trabalho temporários que normalmente são excluídos poderão ser
deixados em disco.

RAND( ), função

Retorna um número aleatório entre 0 e 1.

Sintaxe

RAND([nValorOriginal])
Tipos de retorno

Numérico

Argumentos

nValorOriginal Especifica o valor original que determina a seqüência de valores que o RAND( )
retorna.

RAND( ) retornará a mesma seqüência de números aleatórios se você utilizar o mesmo valor
original para nValorOriginal na primeira vez que emitir RAND( ), seguido pela função RAND( )
sem nValorOriginal.

Se nValorOriginal for negativo na primeira vez que você emitir RAND( ), um valor original do
cronômetro do sistema será utilizado. Para ativar a seqüência de números mais aleatória, emita
RAND( ) inicialmente com um argumento negativo e, em seguida, emita RAND( ) sem um
argumento.

Se você omitir nValorOriginal, RAND( ) utilize um valor original padrão de 100001.

RAND( ), exemplo da função

O primeiro exemplo abaixo utiliza RAND( ) para criar uma tabela com 10 registros que contêm
valores aleatórios, depois utiliza MIN( ) e MAX( ) para exibir os valores máximo e mínimo na
tabela.
O segundo exemplo abaixo exibe um número aleatório que fica entre os valores 1 e 10.

CLOSE 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 aleatórios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mínimo
gnMinimum = 100 && Inicializa o valor máximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo

CLEAR
gnLower = 1
gnUpper = 10

? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)


RAT( ), função

Retorna a posição numérica da última ocorrência de uma expressão de caracteres ou campo memo
contido em outra expressão de caracteres ou campo memo.

Sintaxe

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

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RAT( ) procura na


cExpressãoPesquisada. A expressão de caracteres pode se referir a um campo memo de qualquer
tamanho.

cExpressãoPesquisada Especifica a expressão de caracteres em que RAT( ) faz a procura. A


expressão de caracteres pode se referir a um campo memo de qualquer tamanho.

nOcorrência Especifica a ocorrência, da direita para a esquerda, de cExpressãoProcura procurada


por RAT( ) em cExpressãoPesquisada. Como padrão, RAT( ) procura a última ocorrência de
cExpressãoProcurada (nOcorrência = 1). Se nOcorrência for 2, RAT( ) irá procurar pela penúltima
ocorrência e assim por diante.

Comentários

RAT( ), a função AT( ) invertida, procura na expressão de caracteres cExpressãoPesquisada, da


direita para a esquerda, pela última ocorrência de outra expressão de caracteres,
cExpressãoProcurada.

RAT( ) retorna um número inteiro, indicando a posição do primeiro caractere de


cExpressãoProcurada em cExpressãoPesquisada. RAT( ) retorna 0 se cExpressãoProcurada não for
encontrada em cExpressãoPesquisada ou se nOcorrencia for maior que o número de vezes que
cExpressãoProcurada ocorre em cExpressãoPesquisada.

A procura executada por RAT( ) considera maiúsculas/minúsculas.

RAT( ), exemplo da função


STORE 'abracadabra' TO string
STORE 'a' TO find_str
CLEAR
? RAT(find_str,string) && Exibe 11
? RAT(find_str,string,3) && Exibe 6

RATC( ), função

Retorna a posição numérica da última ocorrência de uma expressão de caracteres o campo memo
dentro de outra expressão de caracteres ou campo memo

Sintaxe

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

Tipos de retorno

Numérica

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RATC( ) procura na


cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres em que RATC( ) faz a procura. As


expressões de caracteres cExpressãoProcurada e cExpressãoPesquisada podem ser campos memo
de qualquer tamanho.

nOcorrência Especifica a ocorrência, da direita para a esquerda, de cExpressãoProcura procurada


por RATC( ) em cExpressãoPesquisada. Como padrão, RATC( ) procura a última ocorrência de
cExpressãoProcurada (nOcorrência = 1). Se nOcorrência for 2, RAT( ) irá procurar pela penúltima
ocorrência e assim por diante.

Comentários
RATC( ) destina-se a expressões que contêm caracteres de byte duplo. Se a expressão contiver
apenas caracteres de byte único, RATC( ) será equivalente a RAT( ).

RATC( ) retorna a posição numérica da última ocorrência de uma expressão de caracteres ou campo
memo dentro de outra expressão de caracteres ou campo memo. As expressões de caracteres ou
campos memo podem conter qualquer combinação de caracteres de byte duplo e único.

RATC( ) é a função invertida AT_C( ): procura da direita para a esquerda.

RATC( ) retorna um número inteiro, indicando a posição do primeiro caractere de


cExpressãoProcurada em cExpressãoPesquisada. RATC( ) retorna 0 se cExpressãoProcurada não
for encontrada em cExpressãoPesquisada ou se nOcorrência for maior que o número de vezes que
cExpressãoProcurada ocorre em cExpressãoPesquisada.

A procura executada por RATC( ) considera maiúsculas/minúsculas.

RATLINE( ), função

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

Sintaxe

RATLINE(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RATLINE( ) procura na


cExpressãoPesquisada.
cExpressãoPesquisada Especifica a expressão de caracteres em que RATLINE( ) faz a procura. As
expressões de caracteres cExpressãoProcurada e cExpressãoPesquisada podem ser campos memo
de qualquer tamanho.

Utilize MLINE( ) para retornar a linha que contém cExpressãoProcurada.

Dica A função RATLINE( ) oferece uma forma conveniente para pesquisar em campos memo.

Comentários

RATLINE( ), a função ATLINE( ) invertida, procura a ocorrência da cExpressãoProcura em uma


expressão de caracteres cExpressãoPesquisada, a partir do último caractere de
cExpressãoPesquisada.

Caso a procura seja bem-sucedida, RATLINE( ) retornará o número da linha em que ocorre a
correspondência. Caso a procura seja malsucedida, RATLINE( ) retornará 0.

A procura executada por RATLINE( ) considera maiúsculas/minúsculas.

Importante O número da linha que RATLINE( ) retorna é determinado pelo valor de SET
MEMOWIDTH, mesmo que cExpressãoPesquisada não seja um campo memo. Para obter maiores
informações, consulte “SET MEMOWIDTH”.

RATLINE( ), exemplo da função

No exemplo a seguir, RATLINE( ) retorna o número da linha para a última linha no campo memo
notes que contém a palavra “graduado”. MLINE( ) usa este valor para retornar o conteúdo da linha.

CLOSE 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 diretório ou pasta do disco.

Sintaxe

RD cCaminho | RMDIR cCaminho

Argumentos

cCaminho Especifica o nome e a localização do diretório ou pasta a ser removido do disco.

Comentários

O Visual FoxPro irá gerar uma mensagem de erro se você tentar remover um diretório que não
esteja vazio.

RD | RMDIR, exemplo do comando


O exemplo a seguir utiliza MKDIR para criar um novo diretório denominado mytstdir, em seguida
CHDIR é utilizado para mudar para o novo diretório. GETDIR( ) é utilizado para exibir a estrutura
do novo diretório e, em seguida, RMDIR é utilizado para remover o diretório que acabou de ser
criado. GETDIR( ) é utilizado para exibir a estrutura do diretório novamente.

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro


MKDIR mytstdir && Cria um novo diretório
CHDIR mytstdir && Muda para o novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório
SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxPro
RMDIR mytstdir && Remove o novo diretório
= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

RECALL, comando

Desmarca registros marcados para exclusão na tabela selecionada.

Sintaxe

RECALL
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[NOOPTIMIZE]
Argumentos

Escopo Especifica um intervalo de registros a ser reintegrado. Somente os registros dentro do


intervalo especificado serão reintegrados. As cláusulas de escopo são: ALL, NEXT nRegistros,
RECORD nNúmeroRegistro e REST.

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

FOR lExpressão1 Especifica que apenas os registros para os quais lExpressão1 resulta em
verdadeiro (.T.) serão reintegrados. Isto permite filtrar registros indesejáveis.

Rushmore otimizará RECALL FOR se lExpressão1 for uma expressão otimizável. Para obter um
melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão reintegrados, desde que
lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Evita a otimização Rushmore de RECALL.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no Capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.

Comentários

RECALL pode ser utilizado para recuperar registros, desde que não se tenha emitido PACK ou
ZAP.

Importante Depois de compactar um arquivo com o comando PACK, todos os registros marcados
para exclusão serão excluídos permanentemente.

Para marcar registros para exclusão, emita DELETE ou DELETE - SQL ou selecione Excluir
registros no menu Tabela, quando uma janela Pesquisar ou Editar estiver ativa. Para reintegrar
registros, emita RECALL ou selecione Reintegrar registros no menu Registro, quando uma janela
Pesquisar ou Editar estiver ativa.

RECALL, exemplo de comando

· O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL é
utilizado para marcar todos os registros a serem excluídos onde o campo country contém USA.
Todos os registros marcados para exclusão são exibidos. RECALL ALL é utilizado para desmarcar
todos os registros marcados para exclusão.

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

DELETE FROM customer WHERE country = 'USA' && Marcar para exclusão
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista registros marcados
RECALL ALL && Desmarca todos os registros marcados para exclusão

RECCOUNT( ), função

Retorna o número de registros da tabela atual ou da tabela especificada.

Sintaxe

RECCOUNT([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Numérico

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho de uma tabela aberta em uma outra área
de trabalho.
A função RECCOUNT( ) retornará 0 nenhuma tabela estiver aberta na área de trabalho
especificada.

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

Comentários

O valor que RECCOUNT( ) retorna não é afetado por SET DELETED e SET FILTER.

RECCOUNT( ) sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela retorna o número de


registros existentes na tabela aberta da área de trabalho atualmente selecionada.

RECCOUNT( ), exemplo de função

No exemplo a seguir, o Visual FoxPro compara o espaço disponível em disco com a quantidade
necessária para classificar customer.

*** Verifica o ESPAÇO EM DISCO antes de uma CLASSIFICAÇÃO ***

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

*** Obtém o tamanho do cabeçalho da tabela ***

gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***

gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)


IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Espaço em disco suficiente para classificar.'
ELSE
WAIT WINDOW 'Espaço em disco insuficiente. Impossível realizar classificação.'

ENDIF

RECNO( ), função

Retorna o número do registro atual na tabela em uso ou na tabela especificada.

Sintaxe
RECNO([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Numérico

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho para uma tabela aberta em outra área de
trabalho. RECNO( ) retorna 0 se uma tabela não estiver aberta na área de trabalho especificada.

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

Comentários

O registro atual é aquele em que o ponteiro do registro está posicionado.

RECNO( ) retornará números negativos para registros incluídos em um buffer da tabela.

A função RECNO( ) retornará um valor maior do que o número de registros existentes na tabela se
o ponteiro estiver posicionado depois do último registro da tabela. RECNO( ) retornará 1 se o
ponteiro estiver posicionado antes do primeiro registro da tabela ou se a tabela não tiver registros.
Caso uma tabela não tenha registros, EOF( ) retornará sempre verdadeiro (.T.).

RECNO( ) emitida sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela retorna o número


do registro atual da tabela aberta na área de trabalho atualmente selecionada.

Se você emitiu SEEK sem sucesso em uma tabela indexada, poderá especificar 0 para que a
nÁreaTrabalho utilize a lógica de “pesquisa de software” para retornar o número do registro
correspondente mais próximo. RECNO(0) retorna 0 se não localizar uma correspondência próxima.
O Visual FoxPro gerar uma mensagem de erro se GO RECNO(0) for emitido quando essa
correspondência não é encontrada.

RECNO( ), exemplo de função

O exemplo a seguir procura a tabela customer para o nome de uma empresa e, se esse nome não for
localizado, utiliza RECNO(0) para retornar a empresa com a correspondência mais próxima.

CLOSE 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 correspondência mais próxima é' + empresa
? 'Número do registro: ' + ALLTRIM(STR(RECNO( )))
ENDIF

RECSIZE( ), função

Retorna o tamanho (largura) de um registro de tabela.

Sintaxe

RECSIZE([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Numérico
Argumentos

nÁreaTrabalho Especifica o número da área de trabalho de uma tabela aberta em uma outra área
de trabalho. RECSIZE( ) retornará 0 caso não esteja aberta nenhuma tabela na área de trabalho
especificada.

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

Comentários

A função RECSIZE( ) emitida sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela


retorna o tamanho do registro da tabela aberta na área de trabalho atualmente selecionada.

RECSIZE( ), exemplo de função

No exemplo a seguir, o Visual FoxPro compara o espaço em disco disponível com a quantidade
necessária para classificar customer.

*** Verifique DISKSPACE antes de uma SORT ***

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

*** Obtenha o tamanho do cabeçalho da tabela ***

gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***

gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)


IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Espaço em disco suficiente para classificar.'
ELSE
WAIT WINDOW 'Espaço em disco insuficiente. Classificação não pode ser feita.'

ENDIF
REGIONAL, comando

Cria matrizes e variáveis de memória regionais.

Sintaxe

#REGION nNúmeroRegião
REGIONAL ListaVar

Argumentos

#REGION nNúmeroRegião Cria uma região. As variáveis regionais devem ser declaradas antes de
serem utilizadas em um programa. Observe que #REGION é uma diretiva de compilador e não um
comando. nNúmeroRegião especifica um número de região de 0 a 31.

REGIONAL ListaVar Declara as variáveis para a região criada com a diretiva #REGION.
ListaVarMem é uma lista de matrizes e variáveis de memória separadas por vírgulas.

Durante a compilação do programa, se uma outra variável regional com nome idêntico já tiver sido
compilada quando uma declaração regional for localizada, a segunda ocorrência do nome da
variável se tornará exclusiva para garantir que não haja conflitos com a variável regional declarada
anteriormente.

Para que o nome de uma variável se torne exclusivo, preencha o nome da variável regional até 10
caracteres com sublinhados e o número da região atual. Esta substituição ocorre inteiramente
durante a compilação do programa e não tem qualquer efeito sobre a velocidade da execução.

Quando o nome de uma variável for modificado, utilize DISPLAY MEMORY para exibir o nome
modificado. Para controlar a variável na janela Depurar, utilize o seu nome modificado. Como a
janela Rastrear utiliza o código fonte de programa original, ela exibirá o nome original da variável
(e não o nome modificado criado pelo compilador).

Comentários

Não haverá interferência entre variáveis de memória ou matrizes com nomes idênticos se os seus
valores estiverem protegidos dentro de uma “região”. Variáveis regionais são semelhantes a
variáveis privadas.

REGIONAL, exemplo de comando

No exemplo a seguir, dois conjuntos de variáveis regionais são criados. Na região 1, são criadas as
variáveis gcA, gcB, gcC e gcD e a seqüência de caracteres “Um” é armazenada para cada uma. Na
região 2, as variáveis gcC, gcD, gcE e gcF são criadas e a seqüência de caracteres “Dois” é
armazenada para cada uma. As variáveis gcC and gcD são comuns a ambas as regiões.
A seguir, a saída de DISPLAY MEMORY é exibida. Os nomes das variáveis gcC e gcD são
modificados na segunda região. gcC se torna GCC________2 e gcD se torna GCD________2.
Todas as variáveis são particulares e podem ser acessadas por programas de baixo nível.

#REGION 1
REGIONAL gcA,gcB,gcC,gcD
STORE 'Um' to gcA,gcB,cgC,gcD
#REGION 2
REGIONAL gcC,gcD,gcE,gcF && gcC e gcD são comuns para ambas as regiões
STORE 'Dois' to gcC,gcD,gcE,gcF
DO showmemory

PROCEDURE showmemory
DISPLAY MEMORY LIKE g*

REINDEX, comando

Reconstrói arquivos de índice abertos.

Sintaxe
REINDEX [COMPACT]

Argumentos

COMPACT Converte arquivos de índice único (.IDX) regulares para arquivos .IDX compactados.

Comentários

Os arquivos de índice ficam desatualizados quando se abre uma tabela sem abrir seus arquivos de
índice correspondentes e são feitas alterações nos campos de chave dos arquivos de índice. Quando
os arquivos de índice ficam desatualizados, é possível atualizá-los através de uma reindexação.

O comando REINDEX atualiza todos os arquivos de índice abertos na área de trabalho selecionada.
O Visual FoxPro reconhece cada tipo de arquivo de índice (arquivos de índice composto (.CDX),
arquivos .CDX estruturais e arquivos de índice único (.IDX)) e faz a reindexação conformemente.
Ele atualiza todas as marcas nos arquivos .CDX e atualiza arquivos .CDX estruturais, que são
abertos automaticamente com a tabela.

Qualquer arquivo de índice criado com a palavra-chave UNIQUE do comando INDEX ou com SET
UNIQUE ON mantém o status UNIQUE quando reindexado.

Para reindexar (REINDEX) arquivos de índice desatualizados, emita os comandos abaixo:

USE TableName INDEX OutdatedIndexNames


REINDEX

REINDEX, exemplo de comando

No exemplo a seguir, ISEXCLUSIVE( ) comprova que a tabela customer foi aberta para uso
exclusivo. A tabela não é reindexada visto que a que está na área atual não foi aberta para uso
exclusivo.

cExclusive = SET('EXCLUSIVO')
SET EXCLUSIVE OFF
SET PATH TO (SYS(2004) + 'SAMPLES\DATA\')
OPEN DATA testdata && Abre o banco de dados de teste
USE Customer && Não 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 memória barras de menus definidas pelo usuário.

Sintaxe

RELEASE MENUS [ListaNomesBarrasMenus [EXTENDED]]

Argumentos

ListaNomesBarrasMenus Especifica as barras de menus que serão removidas da memória. Separe


os nomes das barras de menus com vírgulas.

EXTENDED Libera uma barra de menus e todos os menus, títulos e itens subordinados, além de
todos os comandos ON SELECTION BAR, ON SELECTION MENU, ON SELECTION PAD e
ON SELECTION POPUP associados.

Comentários

Barras de menus ativas têm que ser desativadas com DEACTIVATE MENU antes que possam ser
liberadas da memória.

Se RELEASE MENUS for emitido sem argumentos adicionais, todas as barras de menus definidas
pelo usuário serão removidas da memória.

RELEASE PAD, comando

Remove um título de menu específico ou todos os títulos de menu da memória.

Sintaxe

RELEASE PAD NomeTítuloMenu OF NomeBarraMenus | ALL OF NomeBarraMenus

Argumentos

NomeTítuloMenu OF NomeBarraMenus Especifica o título de menu a ser removido da memória.


Você pode remover um título da barra de menus do sistema do Visual FoxPro, especificando seu
nome em NomeTítuloMenu. Por exemplo, o comando RELEASE PAD _MEDIT OF
_MSYSMENU remove o título de menu Editar da barra de menus do sistema do Visual FoxPro.

ALL OF NomeBarraMenus Especifica que todos os títulos de uma barra de menus definida pelo
usuário serão removidos da memória. A cláusula ALL não pode ser utilizada para remover títulos
da barra de menus do sistema do Visual FoxPro.

RELEASE PAD, exemplo de comando

Os comandos a seguir removem o título de menu Janela da barra de menus do sistema:

PUSH MENU _MSYSMENU


RELEASE PAD _MSM_WINDO OF _MSYSMENU && Remove o título de menu Janela

WAIT WINDOW ' Pressione uma tecla para restaurar o menu padrão '
POP MENU _MSYSMENU && Restaura o sistema de menu padrão do Visual FoxPro

RELEASE POPUPS, comandos

Remove da memória um menu específico ou todos os menus.

Sintaxe
RELEASE POPUPS [ListaNomeMenu [EXTENDED]]

Argumentos

ListaNomeMenu Especifica os menus a serem liberados da memória. Separe os nomes de menus


com vírgulas.

Os menus do sistema do Visual FoxPro que aparecem na barra de menus do sistema do Visual
FoxPro podem também ser liberados. Para liberar um menu do sistema do Visual FoxPro, inclua o
nome interno do menu do sistema (_MFILE, _MEDIT, _MDATA etc). Utilize SET SYSMENU TO
DEFAULT para restaurar os menus do sistema e a barra de menus padrão do sistema.

EXTENDED Libera um menu, seus itens e todos os comandos associados a ON SELECTION


POPUP e ON SELECTION BAR.

Comentários

Um menu ativo deve ser ativado com DEACTIVATE POPUP antes que possa se liberado da
memória.

Se RELEASE POPUPS for emitido sem argumentos adicionais, todos os menus definidos pelo
usuário serão removidos da memória.
RELEASE PROCEDURE, comando

Fecha os arquivos de procedimento abertos com SET PROCEDURE.

Sintaxe

RELEASE PROCEDURE NomeArquivo1 [, NomeArquivo2 …]

Argumentos

NomeArquivo1 [, NomeArquivo2 …] especifica o nome do arquivo de procedimento ou um


conjunto de arquivos de procedimento a ser fechado.

Comentários

Os arquivos de procedimento são abertos com SET PROCEDURE. Uma vez que o arquivo é
aberto, os procedimentos dentro do arquivo estão disponíveis para programas e a partir da janela
Comando.

Para fechar todos os arquivos de procedimento abertos, edite SET PROCEDURE TO sem qualquer
argumento adicional.

RELEASE WINDOWS, comando

Remove da memória janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro.

Sintaxe

RELEASE WINDOWS [ListaNomesJanelas] |


Argumentos

ListaNomesJanelas Especifica as janelas liberadas da memória. ListaNomesJanelas pode incluir


janelas definidas pelo usuário e janelas do sistema do Visual FoxPro. Os nomes de janelas devem
ser separados por vírgulas.

Se ListaNomesJanelas não estiver incluído, a janela definida pelo usuário e ativada no momento
será liberada.

RELEASE WINDOWS pode ser utilizado para remover janelas do sistema do Visual FoxPro
encontradas na janela principal do Visual FoxPro ou em uma janela pai, definida pelo usuário.

A lista a seguir inclui janelas do sistema que podem ser liberadas da janela principal do Visual
FoxPro ou de uma janela pai.

· Comando
· Depurar
· Rastrear
· Visualizar

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


Visual FoxPro), coloque o nome completo da janela do sistema ou barra de ferramentas entre aspas.
Por exemplo, para liberar a Barra de ferramentas controles de relatório no Visual FoxPro, emita o
comando:

RELEASE WINDOW "Controles de Relatório"

Utilize ACTIVATE WINDOW para posicionar uma janela do sistema na janela principal do Visual
FoxPro ou em uma janela definida pelo usuário.
RELEASE, comando

Remove da memória variáveis de memória e matrizes.

Sintaxe

RELEASE ListaVarMemt
– Ou –
RELEASE ALL [EXTENDED]
[LIKE Estrutura | EXCEPT Estrutura]

Argumentos

RELEASE ListaVarMem Especifica as variáveis de memória e matrizes liberadas da memória. Os


nomes de variáveis de memória e matrizes são separados por vírgulas.

RELEASE ALL Libera da memória todas as variáveis de memória e matrizes.

EXTENDED Quando emitido em um programa, especifica que todas as variáveis públicas serão
liberadas. RELEASE ALL, RELEASE ALL LIKE ou RELEASE ALL EXCEPT não libera
variáveis públicas quando emitido em um programa.

LIKE Estrutura | EXCEPT Estrutura Libera da memória todas as variáveis de memória e matrizes
que correspondam à estrutura especificada ou todas as variáveis de memória e matrizes exceto
aquelas que correspondam à estrutura especificada. Estrutura pode incluir os curingas ? e *.

REMOVE TABLE, comando

Remove uma tabela do banco de dados atual.

Sintaxe

REMOVE TABLE NomeTabela | ?


[DELETE] [RECYCLE]

Argumentos

NomeTabela Especifica a tabela a ser excluída do banco de dados atual.


? Exibe a caixa de diálogo Remover na qual você pode escolher uma tabela no banco de dados
atual a ser removida.

DELETE Especifica que a tabela é removida do banco de dados e do disco.

Cuidado Qualquer tabela removida do disco com esta instrução não pode ser removida. Mesmo se
SET SAFETY estiver ON, você não será advertido antes da tabela ser removida do disco.

RECYCLE Especifica que a tabela não é imediatamente excluída do disco e é colocada no


Windows 95 Recycle Bin.

Comentários

Quando uma tabela é removida do banco de dados, ela se torna uma tabela livre e pode ser
adicionada a outro banco de dados. As tabelas são adicionadas a um banco de dados com ADD
TABLE.

Quando REMOVE TABLE é emitido, todos os índices primários, valores padrão e regras de
validação associados à tabela também são removidos. Se SET SAFETY estiver ON, o Visual
FoxPro exibirá um aviso perguntando se você tem certeza de que deseja remover a tabela do banco
de dados.

Importante REMOVE TABLE afeta outras tabelas no banco de dados atual se estas tabelas
possuem regras ou relações associadas à tabela que está sendo removida. As regras e as relações
não são mais válidas quando a tabela é removida do banco de dados.

REMOVE TABLE, exemplo de comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada tabela 1. A tabela é adicionada a mydbc1 quando ela é criada. A tabela é em seguida
fechada e removida de mydbc1. ADD TABLE é utilizado para adicionar a tabela a mydbc2.
RENAME TABLE é utilizado para alterar o nome da tabela de table1 para table2.

CREATE DATABASE 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.


Comentários

RENAME TABLE não pode ser utilizado para alterar o nome de uma tabela livre; em vez disso,
utilize RENAME.

RENAME TABLE, exemplo de comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada tabela 1. A tabela é adicionada a mydbc1 quando é criada. A tabela é, em seguida,
fechada e removida de mydbc1. ADD TABLE é utilizado para adicionar a tabela a mydbc2.
RENAME TABLE é utilizada para alterar o nome da tabela da table1 para table2.

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 extensão de arquivo para cada arquivo. Se as extensões não forem incluídas, os arquivos
assumirão a extensão padrão .DBF. Se você renomear uma tabela livre que tenha um arquivo de
memo .FPT associado, certifique-se de renomear o arquivo de memo. Inclua um ponto (.) após o
nome do arquivo para renomear um arquivo que não possua uma extensão.

Não utilize RENAME para alterar o nome de uma tabela em um banco de dados; RENAME não
serve para isso. Utilize RENAME TABLE para alterar o nome de uma tabela em um banco de
dados.

Inclua os caminhos com os nomes de arquivos caso estes não estejam na unidade de disco e
diretório padrão. Se NomeArquivo1 e NomeArquivo2 estiverem em diretórios ou pastas diferentes,
NomeArquivo1 será movido para o diretório ou pasta de NomeArquivo2.

Quando você emitir RENAME, NomeArquivo2 não poderá ser um nome de arquivo existente e
NomeArquivo1 deverá existir e não poderá estar aberto.

NomeArquivo1 e NomeArquivo2 podem conter caracteres curingas como, por exemplo, * e ?. Por
exemplo, para renomear todos os arquivos de programa com a extensão .PRG na pasta ou diretório
atual para fazer backup de arquivos com extensão .BAK, emita RENAME *.PRG TO *.BAK.
REPLACE FROM ARRAY, comando

Atualiza dados em campos com valores de uma matriz de variável.

Sintaxe

REPLACE FROM ARRAY NomeMatriz


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

Argumentos

NomeMatriz Especifica o nome da matriz cujos valores substituem os dados dos campos.

FIELDS ListaCampos Especifica que somente os campos em ListaCampos são substituídos pelo
conteúdo da matriz. Os campos nas áreas de trabalho não selecionadas devem ser antecedidos de
seus aliases de tabela.

Escopo Especifica um intervalo de registros a serem substituídos pelo conteúdo da matriz. Apenas
os registros dentro do intervalo são substituídos. A substituição ocorre até o final do escopo ou da
matriz.

As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para REPLACE FROM ARRAY é o registro atual (NEXT 1).

FOR lExpressão1 Especifica que os campos serão substituídos somente nos registros para os quais
lExpressão1 resulta em verdadeiro (.T.). A inclusão de FOR permite que se substitua os registros
condicionalmente, filtrando aqueles que não deseja. A substituição ocorre em todos os registros
para os quais lExpressão1 resulta em verdadeiro (.T.) ou até que se alcance o fim da matriz.

Rushmore otimizará REPLACE FROM ARRAY FOR se lExpressão1 for uma expressão
otimizável. Para um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.
WHILE lExpressão2 Especifica uma condição de acordo com a qual os campos em registros serão
substituídos pelo conteúdo da matriz quando a expressão lógica lExpressão2 resultar em verdadeiro
(.T.).

NOOPTIMIZE Evita a otimização Rushmore.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

Comentários

Os campos do tipo memo e geral são ignorados em REPLACE FROM ARRAY. Para importar
dados para estes campos, utilize GATHER e APPEND GENERAL.

Começando pelo primeiro elemento, os elementos de matriz substituem os campos correspondentes


do registro. O primeiro elemento de matriz substitui o primeiro campo do registro, o segundo
elemento substitui o segundo campo e assim por diante.

Se o número de elementos da matriz for menor do que o número de campos da tabela, os campos
adicionais serão ignorados. Se ocorrer o contrário, os elementos de matriz adicionais serão
ignorados.

Observação Nenhuma substituição ocorrerá se o ponteiro do registro estiver no fim do arquivo da


área de trabalho atual e você especificar um campo de outra área de trabalho.

REPLACE, comando

Atualiza os registros da tabela.


Sintaxe

REPLACE NomeCampo1 WITH eExpressão1 [ADDITIVE]


[, NomeCampo2 WITH eExpressão2 [ADDITIVE]] ...
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[IN nÁreaTrabalho | cAliasTabela]
[NOOPTIMIZE]

Argumentos

NomeCampo1 WITH eExpressão1 [, NomeCampo2 WITH eExpressão2 ... ] Especifica que os


dados em NomeCampo1 serão substituídos pelo valor da expressão eExpressão1; que os dados em
NomeCampo2 serão substituídos pelo valor da expressão eExpressão2 e assim por diante.

Quando um valor de expressão for maior do que a largura de um campo numérico, REPLACE fará
com que o valor caiba no campo por meio das etapas a seguir:

1. Primeiro, REPLACE truncará as casas decimais, arredondando a parte decimal restante do


campo.
2. Se o valor ainda não couber, REPLACE armazenará o conteúdo do campo utilizando a
notação científica.
3. Se o valor ainda não couber, REPLACE substituirá o conteúdo do campo por asteriscos.

ADDITIVE Inclui as substituições no final dos campos memo. ADDITIVE aplica-se somente às
substituições nos campos memo. Se você omitir ADDITIVE, o campo memo será sobrescrito com o
valor da expressão.

Escopo Especifica um intervalo de registros a serem substituídos. Apenas os registros dentro do


intervalo são substituídos. As cláusulas de escopo são: ALL, NEXT nRegistros
, RECORD nNúmeroRegistro e REST.

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

FOR lExpressão1 Especifica que os campos designados serão substituídos somente nos registros
para os quais lExpressão1 resultar em verdadeiro (.T.). A inclusão de FOR permite que você
substitua os registros condicionalmente, filtrando os que não deseja substituir.

Rushmore otimizará REPLACE FOR se lExpressão1 for uma expressão otimizável. Para um
melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.

WHILE l Expressão2 Especifica uma condição de acordo com a qual os campos serão substituídos
quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).
IN nÁreaTrabalho Especifica a área de trabalho em que os registros são atualizados.

IN cAliasTabela Especifica o alias da tabela em que os registros são atualizados.

Se você omitir nÁreaTrabalho e cAliasTabela, os registros serão atualizados na tabela da área de


trabalho selecionada no momento.

NOOPTIMIZE Evita a otimização Rushmore.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

Comentários

REPLACE substitui dados em um campo pelo valor em uma expressão. Os campos nas áreas de
trabalho não selecionadas devem ser antecedidos de seus aliases.

Observação Se a cláusula IN for omitida, nenhuma substituição ocorrerá se o ponteiro do registro


estiver no fim do arquivo da área de trabalho atual e você especificar um campo de outra área de
trabalho.

REPLACE, exemplo de comando

O exemplo a seguir cria uma tabela com 10 registros. REPLACE é utilizado para colocar valores
aleatórios em um campo. MIN( ) e MAX( ) exibem os valores máximo e mínimo na tabela.

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 aleatórios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mínimo
gnMinimum = 100 && Inicializa o valor máximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo


REPLICATE( ), função

Retorna uma seqüência de caracteres que contenha uma expressão de caracteres especificada,
repetida um determinado número de vezes.

Sintaxe

REPLICATE(cExpressão, nVezes)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres que é repetida.

nVezes Especifica o número de vezes que a expressão de caracteres é repetida.

Comentários

No Visual FoxPro, o comprimento máximo da seqüência de caracteres resultante é restringido pelo


espaço de memória disponível.

REPLICATE( ), exemplo de função


CLEAR
? REPLICATE('HELLO ',4) && Exibe HELLO HELLO HELLO HELLO

REPORT command

Exibe ou imprime um relatório sob o controle de um arquivo de definição de relatório, criado com
MODIFY REPORT ou CREATE REPORT.

Sintaxe

REPORT FORM NomeArquivo1 | ?


[ENVIRONMENT]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[HEADING cTextoCabeçalho]
[NOCONSOLE]
[NOOPTIMIZE]
[PLAIN]
[RANGE nPáginaInicial [, nPáginaFinal]]
[PREVIEW [WINDOW NomeJanela]
[NOWAIT]]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo2 [ASCII]]
[NAME NomeObjeto]
[SUMMARY]

Argumentos

NomeArquivo 1 Especifica o nome do arquivo de definição de relatório a ser impresso.

? Exibe a caixa de diálogo Abrir, na qual se pode escolher um arquivo de relatório.

ENVIRONMENT Incluído para compatibilidade com versões anteriores de relatórios 2.x. A fim
de restaurar o ambiente de dados associado a um relatório do Visual FoxPro, defina a propriedade
AutoOpenTables do ambiente de dados para verdadeiro (.T.), o valor padrão. Para garantir que o
ambiente do relatório seja fechado ao fim da impressão do relatório, defina a propriedade
AutoCloseTables do ambiente de dados para verdadeiro (.T.), também o valor padrão.

Para relatórios convertidos a partir de versões anteriores do FoxPro, a inclusão de


ENVIRONMENT abre e restaura todas as tabelas e relações do Ambiente de Dados, mesmo que
AutoOpenTables esteja definida como falso (.F.).

Ao criar ou modificar relatórios, você pode salvar o ambiente de dados atual do Visual FoxPro com
o arquivo de definição de relatório. Quando se salva o ambiente de dados do Visual FoxPro,
registros adicionais são colocados na tabela de definição de relatórios para todos os arquivos de
tabela e índice abertos, a ordem do índice e quaisquer relacionamentos entre as tabelas.

Escopo Especifica um intervalo de registros a serem incluídos no relatório. Somente os registros


dentro do intervalo são incluídos no relatório.

As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Para
obter maiores informações sobre cláusulas de escopo, consulte Cláusulas de escopo.

O escopo padrão para REPORT é ALL (todos os registros).

FOR lExpressão1 Imprime dados somente nos registros para os quais lExpressão1 resulta em
verdadeiro (.T.). A inclusão de FOR permite que você filtre os registros que não deseja imprimir.

Rushmore otimizará REPORT FOR se lExpressão1 for uma expressão otimizável. Para um melhor
desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição de acordo com a qual os dados serão impressos
quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

HEADING cTextoCabeçalho Especifica um texto para que um cabeçalho adicional seja colocado
em cada página do relatório. A cláusula PLAIN terá a precedência se você incluir HEADING e
PLAIN.
NOCONSOLE Suprime o eco de um relatório para a janela principal do Visual FoxPro ou para
uma janela definida pelo usuário quando o relatório está sendo impresso ou enviado a um arquivo.

NOOPTIMIZE Para evitar a otimização Rushmore de REPORT, inclua NOOPTIMIZE.

Para obter maiores informações, consulte SET OPTIMIZE e ”Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

PLAIN Especifica que um cabeçalho de página aparecerá somente no início do relatório.

RANGE nPáginaInicial [, nPáginaFinal] Especifica um intervalo de páginas a ser impresso.


nPáginaInicial especifica a primeira página impressa; nPáginaFinal especifica a última página
impressa. Se nPáginaFinal for omitida, o padrão da última página impressa será 9.999.

PREVIEW [WINDOW NomeJanela] Exibe o relatório no modo de visualização de página em vez


de enviá-lo para a impressora. Para imprimir um relatório, deve-se emitir REPORT com TO
PRINTER.

Observe que as variáveis de memória do sistema são ignoradas quando você inclui PREVIEW.

A cláusula opcional WINDOW pode ser incluída para especificar uma janela onde o relatório será
exibido no modo visualização de página. NomeJanela pode ser o nome de uma janela criada com
DEFINE WINDOW ou um formulário.

Você pode incluir a cláusula opcional NOWAIT para que, em tempo de execução, o Visual FoxPro
não espere que a janela de visualização de página seja fechada antes de prosseguir com a execução
do programa. Em vez disso, o Visual FoxPro continuará a execução do programa com a janela de
visualização de página aberta.

Em aplicativos distribuídos, verifique se o menu Exibir está disponível. Se a Barra de ferramentas


visualizar impressão estiver fechada, ela não poderá ser restaurada a menos que o menu Exibir
esteja disponível.

TO PRINTER [PROMPT] Envia um relatório à impressora.

No Visual FoxPro, FoxPro para Windows e FoxPro para Macintosh, você pode incluir a cláusula
opcional PROMPT para exibir a caixa de diálogo Configuração da impressora antes de iniciar a
impressão. As definições da impressora que podem ser ajustadas dependem do driver de impressora
instalado. Coloque PROMPT imediatamente após TO PRINTER.

TO FILE NomeArquivo 2 [ASCII] Especifica o arquivo de texto para o qual um relatório é


enviado. O driver atual de impressora é utilizado quando o relatório é enviado ao arquivo de texto.
O arquivo criado quando você inclui TO FILE possui a extensão padrão .TXT.

Você pode incluir a cláusula opcional ASCII para criar um arquivo de texto em ASCII a partir do
arquivo de definição de relatório. Sem a cláusula ASCII, PostScript® e outros códigos de
impressora são gravados no arquivo de texto. Os gráficos, as linhas, os retângulos e/ou os
retângulos com bordas arredondadas contidos na definição de relatório não aparecem no arquivo de
texto em ASCII.
O número de linhas e colunas de cada página do arquivo de texto em ASCII é determinado pelo
conteúdo das variáveis de memória do sistema _ASCIICOLS e _ASCIIROWS. Os valores-padrão
para _ASCIICOLS e _ASCIIROWS são 80 colunas 63 linhas, respectivamente. Esses valores
correspondem a uma página padrão na posição retrato.

NAME NomeObjeto Especifica um nome de variável de objeto para o ambiente de dados de um


relatório. O ambiente de dados e os objetos do mesmo possuem propriedades e métodos, como
AddObject, que precisam ser definidos ou chamados em tempo de execução. A variável de objeto
oferece acesso a essas propriedades e métodos. Se você não especificar NAME, o Visual FoxPro
utilizará como padrão o nome do arquivo de relatório do código associado aos eventos.

SUMMARY Suprime a impressão detalhada de linha. Apenas os totais e subtotais serão


impressos.

Comentários

A extensão padrão para um arquivo de definição de relatório é .FRX. Se o arquivo de definição de


relatório não estiver no diretório padrão, o caminho também terá de ser incluído com o nome do
arquivo.
RESTORE FROM, comando

Recupera variáveis de memória e matrizes de variáveis de memória salvas em um arquivo de


variáveis de memória ou campo Memo. Em seguida, posiciona tais variáveis na memória.

Sintaxe

RESTORE FROM NomeArquivo | MEMO NomeCampoMemo


[ADDITIVE]

Argumentos

NomeArquivo Especifica o arquivo de variável de onde as variáveis de memória e matrizes são


restauradas. A extensão .MEM é atribuída aos arquivos de variável de memória.

MEMO NomeCampoMemo Especifica o campo Memo de onde as variáveis de memória e


matrizes são restauradas.

ADDITIVE Evita que qualquer variável de memória ou matriz atualmente em memória seja
apagada. Se ao número de variáveis ou matrizes que estiverem sendo acrescentadas com
ADDITIVE soma-se o número de variáveis existentes, excedendo o limite de variável de memória,
o Visual FoxPro trará o máximo possível de variáveis e matrizes para a memória, a partir do
arquivo de variável de memória ou do campo Memo.

Se você restaurar uma variável de memória ou matriz, cujo nome seja igual ao de uma variável de
memória ou matriz existente, o valor da variável de memória ou matriz existente será sobrescrito
com o valor da variável de memória ou matriz restaurada.
Comentários

Quando RESTORE FROM é emitido em um programa, todas as variáveis de memória e matrizes


PUBLIC e PRIVATE são restauradas como PRIVATE. Já as variáveis de memória e matrizes
LOCAL são restauradas como LOCAL. Se RESTORE for emitido na janela Comando, as variáveis
de memória e matrizes PUBLIC e PRIVATE serão restauradas como PUBLIC; as variáveis de
memória e matrizes LOCAL são restauradas como LOCAL.

RESTORE FROM limpa da memória as variáveis de memória ou matrizes existentes no momento,


a menos que você inclua a palavra-chave ADDITIVE. RESTORE FROM não afeta as variáveis de
memória do sistema.

Observe que as variáveis de tipo de objeto não podem ser restauradas a partir de um arquivo de
variável ou campo Memo.

RESTORE FROM, exemplo do comando

No exemplo a seguir, duas variáveis são criadas. Elas são salvas em um arquivo variável e
restauradas sem eliminar as variáveis existentes.
gnVal1 = 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 usuário salva
anteriormente no buffer da tela, em uma variável de memória ou em um elemento de matriz.

Sintaxe

RESTORE SCREEN
[FROM NomeVarMem]

Argumentos

FROM NomeVarMem Especifica o nome de uma variável de memória ou elemento de matriz do


qual você deseja restaurar a imagem da tela ou da janela.

Comentários

Utilize SAVE SCREEN para colocar a janela principal do Visual FoxPro ou janela definida pelo
usuário atual no buffer da tela, em uma variável de memória ou em um elemento de matriz.

As variáveis de memória ou elementos de matriz que contêm imagens de telas ou de janelas


armazenadas apresentam um tipo de dado S quando são visualizados com DISPLAY ou LIST
MEMORY. A janela principal do Visual FoxPro ou as janelas definidas pelo usuário salvas em
variáveis de memória ou elementos de matriz podem também ser salvas em arquivos de variáveis de
memória com SAVE TO e restauradas com RESTORE FROM.

Se emitido sem a cláusula FROM, RESTORE SCREEN restaura a janela principal do Visual
FoxPro ou janela definida pelo usuário a partir do buffer de tela.
RESTORE WINDOW, comando

Restaura para a memória as definições e os status de janelas salvos em um arquivo de janela ou


campo Memo.

Sintaxe

RESTORE WINDOW ListaNomesJanelas | ALL


FROM NomeArquivo | FROM MEMO NomeCampoMemo

Argumentos

ListaNomesJanelas Especifica uma ou mais janelas a serem restauradas. Separe os nomes das
janelas com vírgulas.

ALL Restaura todas as definições de janelas no arquivo de janela ou campo Memo.

FROM NomeArquivo Especifica o arquivo de janela a partir do qual as janelas são restauradas. Os
arquivos de janela têm a extensão .WIN. Se for atribuída outra extensão ao arquivo quando ele for
salvo, você deverá incluí-la em NomeArquivo.

FROM MEMO NomeCampoMemo Especifica o campo Memo a partir do qual as janelas são
restauradas.
Comentários

Utilize SAVE WINDOW para armazenar as definições de janelas em um arquivo de janela ou em


um campo Memo.

As janelas na memória com nomes iguais aos das que são restauradas serão sobrescritas. O status de
uma janela (oculto, ativo, entre outros), quando ela é salva, será preservado quando ela for
restaurada.

RESTORE WINDOW, exemplo da comando

No exemplo a seguir, uma janela denominada wOutput1 é definida e salva como uma variável.
Todas as janelas são limpas e a janela denominada wOutput1 é restaurada e ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;
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 execução de um programa interrompido.

Sintaxe

RESUME

Comentários
Utilize SUSPEND para interromper a execução de um programa. O programa será reiniciado a
partir da linha onde a execução foi interrompida.

SUSPEND e RESUME são excelentes ferramentas de depuração. Você pode interromper um


programa para examinar o status atual do ambiente do Visual FoxPro, incluindo definições de
menus, barras de menus, janelas ou variáveis de memória.

Importante Para evitar que os comandos que são executados quando um programa é interrompido
interfiram na saída do programa subseqüente, emita CLEAR para limpar a janela principal do
Visual FoxPro ou a janela ativa definida pelo usuário antes de retomar a execução do programa.

RETRY, comando

Executa novamente o comando anterior.

Sintaxe

RETRY

Comentários

RETRY retorna o controle para o programa de chamada e executa novamente a última linha
executada no programa. A diferença entre RETRY e RETURN é que RETURN executa a linha
seguinte no programa de chamada.

RETRY é útil nas rotinas de gerenciamento de erros. É utilizado freqüentemente para executar
novamente um comando até que uma função de bloqueio de arquivo ou de registro consiga fazer o
bloqueio. Você pode utilizar SET REPROCESS para controlar as tentativas da função de bloqueio.
Prefere-se SET REPROCESS na maioria das situações de rede.

RETURN, comando
Retorna o controle do programa para o programa que originou a chamada.

Sintaxe

RETURN [eExpressão | TO MASTER | TO NomeProcedimento]

Argumentos

eExpressão Especifica uma expressão retornada para o programa que originou a chamada. Se você
omitir RETURN ou a expressão de retorno, verdadeiro (.T.) será retornado automaticamente para o
programa de chamada.

TO MASTER Retorna o controle para o programa de chamada de nível mais alto.

TO NomeProcedimento Especifica o programa para o qual o controle é retornado.

Comentários

RETURN finaliza a execução de um programa, procedimento ou função e retorna o controle para o


programa que originou a chamada, o programa que originou a chamada de nível mais alto, outro
programa ou a janela Comando.

O Visual FoxPro libera variáveis de memória PRIVATE quando RETURN é executado.

Normalmente, RETURN é colocado no fim de um programa, procedimento ou função para retornar


o controle para um programa de nível mais alto. No entanto, um RETURN implícito será executado
se você omitir esse comando.

RETURN, exemplo do comando

No exemplo a seguir, a função longdate retorna uma seqüência de caracteres que é adequada para a
impressão a partir de uma data.

SET CENTURY ON
? longdate({02/16/95}) && Exibe quinta-feira, 16 de fevereiro, 1995

FUNCTION longdate
PARAMETER mdate
RETURN CDOW(mdate) + ', ' + MDY(mdate)
RGB( ), função

Retorna um único valor de cor a partir de um conjunto de componentes das cores vermelha, verde e
azul.

Sintaxe

RGB(nValorVermelho, nValorVerde, nValorAzul)

Argumentos

nValorVermelho Especifica a intensidade do componente de cor vermelha. nValorVermelho pode


variar de 0 a 255. 0 é a menor intensidade de cor; 255 é a maior intensidade de cor.

nValorVerde Especifica a intensidade do componente de cor verde. nValorVerde pode variar de 0


a 255.

n nValorAzul Especifica a intensidade do componente de cor azul. nValorAzul pode variar de 0 a


255.

Comentários

O valor retornado por RGB( ) pode ser utilizado para definir as propriedades de cores, como
BackColor e ForeColor.

RGBSCHEME( ), função

Retorna uma lista de par de cores RGB ou par de cores RGB a partir de um esquema de cores
especificado.

Sintaxe
RGBSCHEME(nNúmero EsquemaCores [, nPosiçãoParesCores])

Tipos de retorno

Caractere

Argumentos

nNúmeroEsquemaCores Especifica o número do esquema de cores para o qual você deseja


completar uma listagem de cores RGB. RGBSCHEME( ) retorna 10 pares de cores RGB.

nPosiçãoPareCores Retorna um único par de cores RGB a partir de um esquema de cores.


nPosiçãoParesCores especifica a posição do par de cores RGB no esquema de cores. Por exemplo,
se nPosiçãoParesCores for 4, o quarto par de cores RGB será retornado.

Comentários

Utilize SCHEME( ) para retornar uma lista de par de cores ou um par de cores tradicional a partir
de um esquema de cores. O par de cores RGB utiliza valores numéricos para especificar as cores.
Os pares de cores tradicionais utilizam letras para especificar as cores.

RGBSCHEME( ), exemplo da função

O exemplo a seguir exibe o terceiro par de cores RGB a partir do esquema de cores número 4.

CLEAR
? RGBSCHEME(4,3)
RIGHT( ), função

Retorna o número especificado dos caracteres à extrema direita de uma seqüência de caracteres.

Sintaxe

RIGHT(cExpressão, nCaracteres)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos caracteres à extrema direita são retornados.

nCaracteres Especifica o número de caracteres retornados da expressão de caracteres. RIGHT( )


retornará toda a expressão de caracteres se nCaracteres for maior do que o comprimento de
cExpressão. RIGHT( ) retornará uma seqüência vazia se nCaracteres for negativa ou 0.

Comentários

Os caracteres são retornados a partir do último caractere à direita seguido por um número
especificado de caracteres.

RIGHT( ), exemplo de função

CLEAR
? RIGHT('Redmond, WA', 2) && Exibe WA
RIGHTC( ), função

Retorna o número especificado dos caracteres à extrema direita de uma seqüência de caracteres.

Sintaxe

RIGHTC(cExpressão, nCaracteres)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos caracteres à extrema direita são retornados.

nCaracteres Especifica o número de caracteres retornados da expressão de caracteres. RIGHTC( )


retornará toda a expressão de caracteres se nCaracteres for maior do que o comprimento de
cExpressão. RIGHTC( ) retornará uma seqüência vazia se nCaracteres for negativa ou 0.

Comentários

RIGHTC( ) destina-se a expressões que contêm caracteres de byte duplo. Se a expressão contiver
apenas caracteres de byte único, RIGHTC( ) será equivalente a RIGHT( ).
Os caracteres são retornados partindo do último caractere à direita e seguido por nCaracteres.

RLOCK( ), função

Tenta bloquear o(s) registro(s) de uma tabela.

Sintaxe

RLOCK([nÁreaTrabalho | cAliasTabela]
| [cListaNúmerosRegistro, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico
Argumentos

nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho ou alias de tabela para


uma tabela aberta em outra Área de trabalho. Se você não especificar a Área de trabalho ou alias,
RLOCK( ) irá tentar bloquear o registro atual da tabela na Área de trabalho selecionada no
momento.

cListaNúmerosRegistro Especifica que RLOCK( ) tenta bloquear vários registros. A expressão de


caractere cListaNúmerosRegistro especifica um ou mais números de registro, separados por
vírgulas, que RLOCK( ) tenta bloquear. Por exemplo, para tentar bloquear os primeiros quatro
registros de uma tabela, cListaNúmerosRegistro deve conter 1, 2, 3, 4.

Para bloquear vários registros, você deve ativar SET MULTILOCKS e incluir o número da Área de
trabalho (nÁreaTrabalho) ou o alias (cAliasTabela) da tabela onde tentou bloquear vários registros.

Também é possível bloquear vários registros movendo o ponteiro do registro até aquele que
pretende bloquear. A seguir, emita RLOCK( ) ou LOCK( ) e repita este processo para registros
adicionais.

No Visual FoxPro, você pode especificar 0 como um número de registro. Esta especificação permite
que você bloqueie o cabeçalho da tabela.

Importante Mantenha o cabeçalho da tabela bloqueado pelo menor tempo possível, pois outros
usuários não poderão acrescentar registros à tabela enquanto aquele estiver bloqueado.

Para liberar o bloqueio do cabeçalho da tabela, utilize UNLOCK RECORD 0, UNLOCK ou


UNLOCK ALL.

Se o bloqueio de todos os registros especificados em cListaNúmerosRegistro for bem-sucedido,


RLOCK( ) retornará verdadeiro (.T.). Se um ou mais registros especificados em
cListaNúmerosRegistro não puderem ser bloqueados, RLOCK( ) retornará falso (.F.) e nenhum
registro será bloqueado. Em ambos os casos, os bloqueios de registros existentes permanecem na
mesma posição. O bloqueio de vários registros é um processo adicional — o posicionamento de
bloqueios adicionais não libera os bloqueios existentes.

Quanto ao desempenho, sempre é mais rápido bloquear a tabela inteira do que bloquear até mesmo
um pequeno número de registros.

Comentários

RLOCK( ) é idêntico a LOCK( ).

Se o(s) bloqueio(s) for(em) bem-sucedido(s), RLOCK( ) retornará verdadeiro (.T.). Os registros


bloqueados encontram-se disponíveis para o acesso de leitura e gravação pelo usuário que
posicionou os bloqueios. Já para os demais usuários da rede, a disponibilidade de acesso é somente
para leitura.
A execução de RLOCK( ) não garante que a(s) tentativa(s) de bloqueio de registro tenha(m) sido
bem-sucedida(s). Um bloqueio de registro não pode ser posicionado em um registro ou em uma
tabela já bloqueados por outro usuário. Se, por qualquer motivo, o(s) bloqueio(s) de registro não
puder(em) ser posicionado(s), RLOCK( ) retornará falso (.F.).

Como padrão, RLOCK( ) tenta bloquear um registro uma vez. Utilize SET REPROCESS para
tentar novamente e de forma automática um bloqueio de registro quando a primeira tentativa falhar.
SET REPROCESS controla o número de tentativas de bloqueio ou sua duração quando a tentativa
de bloqueio inicial é malsucedida. Para obter maiores informações sobre SET REPROCESS e
bloqueio de tabelas, consulte SET REPROCESS.

SET MULTILOCKS determina se você pode bloquear vários registros em uma tabela. Se SET
MULTILOCKS estiver desativado (o padrão), você só poderá bloquear um único registro da tabela.
Se SET MULTILOCKS estiver ativado, você poderá bloquear vários registros da tabela. Para obter
maiores informações, consulte SET MULTILOCKS.

Um registro de tabela só pode ser desbloqueado pelo usuário que fez o bloqueio. Os bloqueios de
registro podem ser liberados da seguinte forma: emitindo UNLOCK, fechando a tabela ou saindo do
Visual FoxPro.

UNLOCK pode ser utilizado para liberar bloqueios de registro na Área de trabalho atual, em uma
Área de trabalho específica ou em todas. Para obter maiores informações, consulte UNLOCK.

Ao passar SET MULTILOCKS de ativado (ON) para desativado (OFF) ou vice-versa, executa-se
implicitamente UNLOCK ALL. Todos os bloqueios de registro de todas as Áreas de trabalho são
liberados.

Para fechar tabelas, utilize USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informações sobre o bloqueio de registros e arquivos e o compartilhamento de


tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do
Desenvolvedor.

RLOCK( ), exemplo de função

O exemplo a seguir bloqueia e desbloqueia os quatro primeiros registros nas tabelas customer e
employee.

CLOSE 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( ), função

Retorna uma expressão numérica arredondada para um número especificado de casas decimais.

Sintaxe

ROUND(nExpressão, nCasasDecimais)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo valor será arredondado.


nCasasDecimais Especifica o número de casas decimais para o arredondamento de nExpressão.

Se nCasasDecimais for negativo, ROUND( ) retornará um número completo contendo um número


de zeros igual a nCasasDecimais à esquerda da vírgula decimal. Por exemplo, se nCasasDecimais
for igual a –2, o primeiro e o segundo dígitos à esquerda da vírgula decimal terão o valor igual a 0.

Comentários

O valor que ROUND( ) retorna tem o mesmo número de casas decimais de nCasasDecimais.
ROUND( ) ignora o número de casas decimais especificado por SET DECIMALS.

ROUND( ), exemplo de função

SET DECIMALS TO 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 padrões de incialização

SET DECIMALS TO 2

RTOD( ), função

Converte radianos em graus.

Sintaxe
RTOD(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica representando radianos que RTOD( ) converte em


graus.

Comentários

RTOD( ) converte o valor (em radianos) de uma expressão numérica em um valor equivalente em
graus.

RTOD( ) é útil ao se trabalhar com as funções trigonométricas COS( ), SIN( ) e TAN( ) do Visual
FoxPro.

Utilize DTOR( ) para converter graus em radianos.

RTOD( ), exemplo de função

CLEAR
? RTOD(ACOS(0)) && Exibe 90.00
STORE -1 to gnArcAngle
? RTOD(ACOS(gnArcAngle)) && Exibe 180.00
? RTOD(ACOS(SQRT(2)/2)) && Exibe 45.00
RTRIM( ), função

Retorna uma seqüência de caracteres que resulta da remoção de espaços à direita de uma expressão
de caracteres.

Sintaxe

RTRIM(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caractere da qual os espaços à direita foram removidos.

Comentários

RTRIM( ) pode ser utilizada para confirmar a remoção dos espaços dos dados digitados por um
usuário. RTRIM( ) é idêntica a TRIM( ).

RTRIM( ), exemplo de função

CLOSE 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 documentação


do MS-DOS para obter maiores informações sobre os comandos disponíveis.
NomePrograma Especifica o programa ou o aplicativo a ser executado. Poderá ser especificado um
programa ou aplicativo baseado no Windows ou no MS-DOS.

/N [K] Especifica NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua
K) para executar outro aplicativo do Windows.

Comentários

É possível emitir RUN de dentro da janela Comando ou de outro programa.

Importante Para utilizar RUN, você precisa ter o arquivo de sistema operacional
COMMAND.COM no diretório atual ou esse arquivo deverá estar localizado onde o parâmetro MS-
DOS COMSPEC possa encontrá-lo. Para obter maiores informações sobre COMSPEC, consulte a
documentação do MS-DOS.

Cuidado Não utilize RUN para executar programas de reorganização de disco, como o CHKDSK,
a partir do Visual FoxPro. Esses programas modificam o conteúdo do seu disco de maneira a
impedir o bom funcionamento do Visual FoxPro.

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

Se o programa especificado em RUN não possuir uma extensão, o Visual FoxPro procurará
primeiro, no caminho do MS-DOS, um arquivo PIF (Program Information File) com o nome que
você indicou. Esse arquivo permite a execução de um programa não Windows no Windows. Você
poderá especificar parâmetros para o programa, ou seja, se ele é executado em uma janela ou na tela
inteira, o total de memória alocado para o programa etc.

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

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

FOXRUN.PIF O FOXRUN.PIF permite a execução de programas e comandos do MS-DOS e do


Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretório que VFP.EXE
no Visual FoxPro.

/N significa NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua K) para
executar outro aplicativo do Windows. Por exemplo, a instrução a seguir abre o acessório Mapa de
caracteres do Windows:

! /N CHARMAP.EXE
No exemplo a seguir, o Selecionador de cores é aberto no Painel de controle do Windows:

! /N CONTROL COLOR

Um aplicativo do Windows executado com RUN /N ou ! /N apresenta o mesmo comportamento que


quando aberto através do Gerenciador de Programas ou do Gerenciador de Arquivos. Você pode
alternar entre o aplicativo e o Visual FoxPro ou o FoxPro para Windows utilizando as operações
padrão do Windows.

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

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 padrão, o FOXRUN.PIF executa o


programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do
MS-DOS é executado, o título da janela é Executar Comando do FoxPro. No Visual FoxPro, a
janela Executar Comando do FoxPro é fechada após a execução do comando ou do programa
externo.
Você pode utilizar o editor PIF do Windows para personalizar o FOXRUN.PIF. O PIF pode ser
editado para especificar se a janela Executar Comando do Visual FoxPro Inativo deve ser mantida
aberta ou fechada (padrão no Visual FoxPro) usando a caixa de verificação Fechar janela ao sair.
Também é possível abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar
memória para o programa, etc.

Considerações de memória Como padrão, o FOXRUN.PIF aloca um mínimo de 256K de memória


para a execução de um comando ou programa externo. Se você não tiver 256K de memória
convencional livre, o Visual FoxPro exibirá uma mensagem de erro. Para corrigir tal mensagem,
experimente um ou mais dos procedimentos a seguir:

· Feche os aplicativos e arquivos para liberar memória adicional.


· Edite o FOXRUN.PIF para reduzir o total exigido de memória na caixa de texto KB
Requerido.
Se o comando externo exigir mais de 256K, o MS-DOS exibirá uma mensagem de erro na janela
Executar Comando do Visual FoxPro. Para corrigir tal erro, edite o FOXRUN.PIF para aumentar o
total de memória necessário na caixa de texto KB Requerido.

SAVE SCREEN, comando

Salva uma imagem da janela principal do Visual FoxPro ou de uma janela ativa definida pelo
usuário no buffer de tela, em uma variável de memória ou em um elemento de matriz.

Sintaxe

SAVE SCREEN [TO NomeVar]

Argumentos

TO NomeVar] Especifica a variável de memória ou o elemento de matriz na qual a imagem da


janela ou da tela é salva.
Comentários

Utilize RESTORE SCREEN para exibir novamente imagens salvas no buffer de tela, em uma
variável de memória ou em um elemento de matriz.

Quando visualizadas com DISPLAY ou LIST MEMORY, as variáveis de memória ou os elementos


de matriz, que contêm uma imagem da janela principal do Visual FoxPro ou de uma janela definida
pelo usuário, têm o tipo de dado S.

Se emitido sem a cláusula TO NomeVarMem, SAVE SCREEN salva a janela principal do Visual
FoxPro ou a janela definida pelo usuário no buffer de tela.
SAVE WINDOWS, comando

Salva todas as definições de janelas ou as definições de janelas especificadas em um arquivo de


janela ou campo memo.

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 vírgulas.

ALL Salva todas as definições de janelas no arquivo de janela ou no campo memo.

TO NomeArquivo Especifica o arquivo de janela no qual as definições de janelas são salvas.

Se você não especificar uma extensão ao nomear o arquivo, será atribuída a extensão padrão .WIN.
Se for especificada uma extensão diferente, ao serem salvas as definições de janelas em um arquivo,
deverá incluir a extensão, quando restauradas no arquivo.

TO MEMO NomeCampoMemo Especifica o campo memo no qual as definições de janelas são


salvas. A tabela que contém o campo memo deve estar aberta, mas não é necessário que ela esteja
na Área de trabalho atualmente selecionada. Para salvar definições de janelas em uma tabela aberta
em outra Área de trabalho, inclua o alias da tabela quando especificar o campo memo.

Comentários

Utilize RESTORE WINDOW para restaurar definições de janelas de um arquivo de janela ou de


um campo memo. O status de cada janela também será salvo. Por exemplo, se a janela estiver
oculta, quando for salva em um arquivo ou campo memo, ela permanecerá oculta quando for
restaurada.

SAVE WINDOWS, exemplo do comando

No exemplo a seguir, uma janela denominada wOutput1 é criada e a definição da janela é salva no
arquivo TEMP.WIN. Todas as janelas são limpas e wOutput1 é restaurada do arquivo e ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;
CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW wOutput1
@ 1,1 SAY 'Este é o conteúdo 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 satisfaça as condições especificadas.

Sintaxe

SCAN [NOOPTIMIZE]
[Escopo] [FOR lReferência1] [WHILE lReferência2]
[Comandos]
[LOOP]
[EXIT]
ENDSCAN

Argumentos

NOOPTIMIZE Impede a otimização de Rushmore de SCAN.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia


Rushmore” no Capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a ser examinado. Apenas os registros dentro deste
intervalo serão examinados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD
nNúmeroRegistro e REST. Para obter maiores informações sobre cláusulas de escopo, consulte
“Cláusulas de escopo”.

O escopo padrão para SCAN é todos os registros (ALL)

FOR lReferência1 Executa comandos apenas para os registros para os quais lReferência1 resulta
em verdadeiro (.T.) A inclusão da cláusula FOR permite filtrar os registros que você não deseja
examinar.

Rushmore otimizará uma consulta criada com SCAN ... FOR se lReferência1 for uma expressão
otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte “SET OPTIMIZE” e “Compreendendo a tecnologia


Rushmore” no Capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.
WHILE lReferência2 Especifica uma condição pela qual os comandos serão executados desde que
lReferência2 resulte em verdadeiro (.T.).

Comandos Especifica os comandos do Visual FoxPro que devem ser executados.

LOOP Retorna o controle diretamente para SCAN. LOOP pode ser colocado em qualquer lugar
entre SCAN e ENDSCAN.

EXIT Transfere o controle do programa de dentro do loop SCAN ... ENDSCAN para o primeiro
comando depois de ENDSCAN. EXIT pode ser colocado em qualquer lugar entre SCAN e
ENDSCAN.

ENDSCAN Indica o fim do procedimento SCAN.

Comentários

O comando SCAN avança automaticamente o ponteiro do registro para o próximo registro que
satisfaça as condições especificadas e executa o bloco de comandos.

Você pode colocar comentários na mesma linha depois de ENDSCAN. Os comentários são
ignorados durante a compilação e a execução do programa.

SCAN ... ENDSCAN, exemplo do comando

O exemplo a seguir utiliza um loop SCAN ... ENDSCAN para exibir todas as empresas na Suécia.

CLOSE 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 variáveis de memória ou para uma matriz.

Sintaxe

SCATTER
[FIELDS ListaNomesCampos
| FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura] [MEMO]
TO NomeMatriz | TO NomeMatriz BLANK | MEMVAR | MEMVAR BLANK
| NAME NomeObjeto

Argumentos

FIELDS ListaNomesCampos Especifica os campos que devem ser transferidos para as variáveis
de memória ou para a matriz. Todos os campos serão transferidos se você omitir FIELDS
ListaNomesCampos. Se você colocar depois da lista de campos a palavra-chave MEMO, ela poderá
conter campos memo. SCATTER ignora sempre campos gerais e de figura, mesmo que você inclua
MEMO.

FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Você poderá transferir seletivamente campos
para variáveis de memória ou para uma matriz incluindo a cláusula LIKE ou EXCEPT ou ambas.
Se incluir LIKE Estrutura, os campos que correspondem à Estrutura serão transferidos para as
variáveis de memória ou a matriz. Se incluir EXCEPT Estrutura, todos os campos, exceto os que
correspondem à Estrutura, serão transferidos para as variáveis de memória ou a matriz.

Estrutura suporta caracteres curinga. Por exemplo, para transferir todos os campos que começam
com as letras A e P para as variáveis de memória ou a matriz, utilize:

SCATTER FIELDS LIKE A*,P* TO myarray

A cláusula LIKE pode ser combinada com a cláusula EXCEPT:

SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray

MEMO Especifica que a lista de campos inclui um ou vários campos memo. Como padrão, os
campos memo são ignorados em SCATTER.

Para copiar campos memo grandes para variáveis de memória ou para uma matriz, é necessário que
haja memória suficiente. O Visual FoxPro irá gerar uma mensagem de erro caso não haja memória
suficiente. Se um campo memo for muito grande para caber na memória, nem ele ou qualquer outro
campo memo da lista será copiado. Se um campo memo não for copiado, a sua variável de memória
ou o seu elemento de matriz estará definido como falso (.F.).
TO NomeMatriz Especifica a matriz para a qual o conteúdo do registro é copiado. Começando do
primeiro campo, SCATTER copia em ordem seqüencial o conteúdo de cada campo para cada
elemento da matriz.

Os elementos de matriz extras permanecerão inalterados se o número de elementos da matriz


especificada for maior do que o número de campos. Caso a matriz não exista ou caso o número de
elementos nela contidos seja menor do que o número de campos, uma nova matriz será criada
automaticamente. Os elementos de matriz têm o mesmo tamanho e os mesmos tipos de dados que
os campos correspondentes.

TO NomeMatriz BLANK Cria uma matriz com elementos vazios que têm o mesmo tamanho e o
mesmo tipo dos campos da tabela.

MEMVAR Copia os dados para um conjunto de variáveis de memória em vez de copiá-los para
uma matriz. SCATTER cria uma variável de memória para cada campo da tabela e preenche cada
uma com dados do campo correspondente no registro atual, atribuindo à variável o mesmo nome,
tamanho e tipo do campo.

Uma variável de memória será criada para cada campo da lista de campos se uma lista de campos
estiver incluída.

Anteceda o nome da variável de memória com o qualificador M. para fazer referência a uma
variável de memória que tenha o mesmo nome de um campo da tabela atual.

Importante Não inclua TO com MEMVAR. O Visual FoxPro criará uma matriz denominada
MEMVAR se você incluir TO.

MEMVAR BLANK Cria um conjunto de variáveis de memória vazias. Cada uma delas tem o
mesmo nome, o mesmo tipo de dado e o mesmo tamanho do seu campo. Se uma lista de campos
estiver incluída, será criada uma variável de memória para cada campo da lista.

NAME NomeObjeto Cria um objeto cujas propriedades têm o mesmo nome dos campos da tabela.
Os valores de cada propriedade do objeto são o conteúdo dos campos da tabela. Propriedades não
são criadas para campos memo ou gerais da tabela.

Para fazer referência a uma propriedade de um objeto que tenha o mesmo nome de uma tabela
aberta, anteceda o nome da propriedade com o qualificador M.. Por exemplo:

USE customer
SCATTER NAME customer

? customer.company && Retorna o valor da tabela


? M.customer.company && Retorna o valor da propriedade do objeto

Comentários

SCATTER e COPY TO ARRAY são semelhantes. COPY TO ARRAY copia vários registros para
uma matriz, enquanto que SCATTER copia apenas um registro para uma matriz ou para um
conjunto de variáveis de memória. SCATTER criará automaticamente a matriz ou as variáveis de
memória, caso elas ainda não existam.

Utilize GATHER para copiar elementos de matriz ou variáveis de memória para os registros da
tabela.

SCATTER, exemplo dos comandos

Exemplo 1
Este exemplo utiliza SCATTER para criar um conjunto de variáveis com base nos campos na tabela
de teste. Em seguida, a cada campo é atribuído um valor e um novo registro em branco é adicionado
à tabela. Os dados são copiados à tabela, utilizando-se o comando GATHER.

CREATE TABLE Test FREE ;


(Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANK


m.Object="Caixa"
m.Color="Vermelho"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

Exemplo 2

Este exemplo utiliza SCATTER junto à cláusula NAME para criar um objeto com propriedade, com
base nos campos na tabela. Às propriedades do objeto são atribuídos valores e um novo registro em
branco é adicionado à tabela. Os dados são copiados para o novo registro, utilizando-se GATHER
com a cláusula NAME.

CREATE TABLE Test FREE ;


(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK


oTest.Object="Caixa"
oTest.Color="Vermelho"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

SCHEME( ), função
Retorna uma lista de par de cores ou um par de cores único, a partir de um esquema de cores
especificado.

Sintaxe

SCHEME(nNúmeroEsquema [, nNúmeroParCores])

Tipos de retorno

Caractere

Argumentos

nNúmeroEsquema Especifica o número do esquema de cores para o qual você deseja uma lista de
par de cores completa. SCHEME( ) retorna dez pares de cores.

nNúmeroParCores Especifica a posição de um par de cores no esquema de cores e SCHEME( )


retorna apenas este par de cores. Por exemplo, se nNúmeroParCores for 4, SCHEME( ) retornará o
quarto par de cores a partir do esquema de cores.

SCHEME( ), exemplo da função

O exemplo a seguir retorna o terceiro par de cores, a partir do esquema de cores número 4:
? SCHEME(4,3)
SCOLS( ), função

Retorna o número de colunas disponíveis na janela principal do Visual FoxPro.

Sintaxe

SCOLS( )

Tipos de retorno

Numérico

Comentários

O valor retornado por SCOLS( ) depende do modo de exibição atual. Para alterar o modo de
exibição, utilize SET DISPLAY.
SCROLL, comando

Rola para cima, para baixo, para a esquerda ou para a direita uma área da janela principal do Visual
FoxPro ou de uma janela definida pelo usuário.

Sintaxe

SCROLL nLinha1, nColuna1, nLinha2, nColuna2, nLinhasRoladas


[, nColunasRoladas]

Argumentos

nLinha1, nColuna1, nLinha2, nColuna2 Especifica a área retangular em que ocorre a rolagem na
janela principal do Visual FoxPro ou na janela ativa definida pelo usuário. nLinha1, nColuna1
especifica o canto superior esquerdo da área e nLinha2, nColuna2 especifica o canto inferior direito.

nLinhasRoladas Especifica quantas linhas devem ser roladas para cima ou para baixo dentro da
área retangular. Caso a expressão numérica nLinhasRoladas seja positiva, o Visual FoxPro irá rolar
este número de linhas para cima. Caso nLinhasRoladas seja negativa, o Visual FoxPro irá rolar este
número de linhas para baixo. Se nLinhasRoladas for 0 e você omitir nColunasRoladas, o Visual
FoxPro irá limpar a área retangular.

nColunasRoladas Especifica quantas colunas devem ser roladas para a direita ou para a esquerda
dentro da área retangular. Caso a expressão numérica nColunasRoladas seja positiva, o Visual
FoxPro irá rolar este número de colunas para a direita. Caso nColunasRoladas seja negativa, o
Visual FoxPro irá rolar este número de colunas para a esquerda. Caso você inclua nLinhasRoladas e
nColunasRoladas, o Visual FoxPro irá rolar a área na diagonal.

SCROLL, exemplo do comando

O comando a seguir rola uma pequena área retangular:

CLEAR
@ 4, 1 FILL TO 10, 8 COLOR GR+/B
WAIT WINDOW 'Pressione a tecla para rolar para o canto superior esquerdo'
SCROLL 0, 0, 5, 5, -2, 1

SEC( ), função

Retorna a parte de segundos de uma expressão DateTime.

Sintaxe

SEC(tExpressão)

Tipos de retorno

Numérico

Argumentos

tExpressão Especifica a expressão DateTime a partir da qual SEC( ) retorna os segundos. Se


tExpressão contiver apenas uma data e não uma hora, o Visual FoxPro adicionará a hora padrão de
meia-noite (12:00:00 A.M.) em tExpressão.

SEC( ), exemplo da função

O exemplo a seguir exibe a parte de segundos da hora atual e a parte de segundos de uma hora
específica.

CLEAR
? SEC(DATETIME( ))
? SEC({10:42:16am}) && Exibe 16

SECONDS( ), função

Retorna o número de segundos decorridos desde a meia-noite.

Sintaxe

SECONDS( )

Tipos de retorno

Numérico

Comentários

SECONDS( ) retorna um valor numérico no formato decimal, com uma resolução de 1 milisegundo.
Se você estiver executando o Windows NT, a resolução será 10 milisegundos.

SECONDS( ), exemplo da função

CLEAR
? SECONDS( )
? SECONDS( )/(60 * 60)

SEEK( ), função

Localiza uma tabela indexada para a primeira ocorrência de um registro cuja chave de índice
corresponde à expressão especificada. Retorna um valor lógico indicando se a busca foi realizada
com sucesso.

Sintaxe

SEEK(eExpressão [, nÁreaTrabalho | cAliasTabela


[, nNúmeroÍndice | cIDXNomeArquivoÍndice | cNomeMarca]])
Tipos de retorno

Lógico

Argumentos

eExpressão Especifica a expressão da chave de índice para a qual você deseja que SEEK( ) faça a
busca.

nAreaTrabalho Especifica o número da Área de trabalho que é localizado para a chave de índice.

cAliasTabela Especifica que o alias da tabela é localizado.

Se você omitir nÁreaTrabalho e cAliasTabela, a tabela na Área de trabalho selecionada atualmente


será localizada.

nNúmeroÍndice Especifica o número do arquivo de índice ou marca utilizado para localizar a


chave de índice. nNúmeroÍndice refere-se aos arquivos de índice conforme eles são listados em
USE ou SET INDEX. Os arquivos .IDX abertos são numerados primeiro na ordem que aparecem
em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir) são então numeradas na
ordem em que são criadas. Finalmente, as marcas em qualquer arquivo .CDX aberto independente
são numeradas na ordem em que foram criadas. Para obter maiores informações sobre numeração
de índice, consulte SET ORDER.

cIDXNomeArquivoÍndice Especifica um arquivo .IDX que é utilizado para localizar a chave de


índice.

cNomeMarca Especifica uma marca para o arquivo .CDX que é utilizado para localizar a chave de
índice. O nome da marca pode ser proveniente de um arquivo .CDX estrutural ou qualquer
arquivo.CDX aberto independente.

Observação O arquivo .IDX terá prioridade se existir arquivo .IDX e nomes de marcas duplicados.

Comentários

Você pode utilizar SEEK( ) apenas com uma tabela com uma definição de ordem de índice e você
pode localizar apenas uma chave de índice. A correspondência deve ser exata, a menos que SET
EXACT esteja definido para OFF.

Se houver uma correspondência, SEEK( ) retornará verdadeiro (.T.) e o ponteiro do registro mudará
para o registro correspondente. Se não houver correspondência, SEEK( ) retornará falso (.F.) e o
ponteiro do registro mudará para o final do arquivo. A emissão de SEEK( ) é equivalente à emissão
de SEEK e FOUND( ) em seguida.

Se você omitir os argumentos nNúmeroÍndice, IDXNomeArquivoÍndice e cNomeMarca, SEEK( )


utilizará a marca de índice ou índice de controle principal para procurar a chave de índice.
SEEK( ), exemplo da função

CLOSE 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 ocorrência de um registro cuja chave de índice corresponde a
uma expressão geral, em seguida move o ponteiro de registro ao registro correspondente.

Sintaxe

SEEK eExpressão
[ORDER nNúmeroÍndice | IDXNomeArquivoÍndice
| [TAG] NomeMarca [OF CDXNomeArquivo]
[ASCENDING | DESCENDING]]
[IN nAreaTrabalho | cAliasTabela]

Argumentos

eExpressão Especifica a chave de índice para a qual SEEK faz a busca. eExpressão pode ser nulo.
ORDER nNúmeroÍndice Especifica o número do arquivo de índice ou marca que é utilizado para
procurar a chave de índice. nNúmeroÍndice refere-se aos arquivos de índice como estão listados em
USE ou SET INDEX. Os arquivos .IDX abertos são numerados primeiro na ordem em que
aparecem em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir um) são então
numeradas na ordem em que foram criadas. Finalmente, as marcas em qualquer arquivo .CDX
aberto independente são numeradas na ordem que são criadas. Consulte, SET ORDER para obter
maiores informações sobre numeração de índice.

ORDER NomeArquivoÍndiceIDX Especifica um arquivo .IDX que é utilizado para procurar a


chave de índice.

ORDER [TAG] NomeMarca [OF CDXNomeArquivo] Especifica uma marca de um arquivo .CDX
que é utilizado para procurar a chave de índice. O nome da marca pode ser de um arquivo .CDX
estrutural ou qualquer arquivo .CDX aberto independente.

Se nomes de marcas idênticos existirem em arquivos .CDX abertos independentes, utilize OF


CDXNomeArquivo para especificar o arquivo.CDX que contém a marca.

Observação O arquivo .IDX terá prioridade se existirem nomes de marca e arquivo .IDX
duplicados.

ASCENDING Especifica que a tabela é procurada em ordem ascendente.

DESCENDING Especifica que a tabela é procurada em ordem descendente.

IN nÁreaTrabalho Especifica que o número da Área de trabalho da tabela é procurado.

IN cAliasTabela Especifica o alias da tabela que é procurada.

Se você omitir IN nÁreaTrabalho e IN cAliasTabela, a tabela na Área de trabalho atualmente


selecionada será procurada.

Comentários

Você pode utilizar SEEK apenas com tabelas indexadas e pode procurar apenas na chave de índice.
A correspondência deve ser exata a menos que SET EXACT seja definido para OFF.

Se SEEK procurar um registro com uma chave de índice correspondente, RECNO( ) retornará o
número de registro do registro correspondente, FOUND( ) retornará verdadeiro (.T.) e EOF( )
retornará falso (.F.).

Se uma chave correspondente não for localizada, RECNO( ) retornará o número de registros na
tabela mais 1, FOUND( ) retornará falso (.F.) e EOF( ) retornará verdadeiro (.T.).

Se SET NEAR estiver on, o ponteiro do registro será posicionado imediatamente após o registro
com a chave de índice mais próxima. Se SET NEAR estiver off, o ponteiro do registro será
posicionado no final do arquivo. Em qualquer um dos casos, RECNO() retornará o número de
registro do registro mais próximo.
SEEK, exemplo do comando

No exemplo a seguir, customer é aberta e indexada no campo company. SEEK é utilizado para
localizar a expressão de chave do índice que corresponde ao valor contido na variável gcSeekVal.

CLOSE 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( ), função

Retorna o número da área de trabalho atualmente selecionada ou da área de trabalho não utilizada
que possui o número mais alto.

Sintaxe

SELECT([ 0 | 1 | cAliasTabela ])

Tipos de retorno

Numérico

Argumentos

0 Especifica que SELECT( ) retornará o número da área de trabalho atual.

1 Especifica que SELECT( ) retornará a área de trabalho não utilizada, que possui o número mais
alto.

cAliasTabela Especifica o alias da tabela da qual SELECT( ) retornará a área de trabalho.

Comentários
SELECT( ) retornará o número da área de trabalho atual se SET COMPATIBLE estiver desativado
(OFF). Se SET COMPATIBLE estiver ativado (ON), SELECT( ) retornará o número da área de
trabalho não utilizada que possui o número mais alto.

É possível selecionar (ativar) uma área de trabalho com SELECT.

SELECT( ), exemplo da função

CLOSE DATABASES
SET COMPATIBLE ON
OPEN DATABASE (HOME( ) + 'samples\data\testdata')

SELECT 0 && Área de trabalho não usada


USE customer && Abre a tabela Customer

SELECT 0 && Área de trabalho não usada


USE orders && Abre a tabela Orders

CLEAR
? SELECT( ) && Retorna 3, área de trabalho disponível mais lenta

SELECT, comando

Ativa a Área de trabalho especificada.

Sintaxe

SELECT nÁreaTrabalho | cAliasTabela

Argumentos
nÁreaTrabalho Especifica uma Área de trabalho a ser ativada. Se nÁreaTrabalho for 0, a Área de
trabalho não utilizada com o menor número será ativada.

cAliasTabela Especifica uma Área de trabalho que contém uma tabela aberta a ser ativada.
cAliasTabela é o alias da tabela aberta. Você também pode incluir uma letra de A a J para
cAliasTabela para ativar uma das dez primeiras áreas de trabalho.

Comentários

Como padrão, o número da Área de trabalho 1 está ativo quando você inicia o Visual FoxPro.

Observação Os campos nas tabelas abrem em qualquer Área de trabalho e podem ser incluídos nos
comandos e funções do Visual FoxPro. Utilize os formatos a seguir para acessar os campos em uma
tabela aberta em uma Área de trabalho diferente da atual: alias.field ou alias -> field.

SELECT, exemplo do comando

O exemplo a seguir demonstra formas de selecionar áreas de trabalho.

CLOSE 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
CCO
OMMA
ANND
DOOSS SSEETT

SET ALTERNATE, comando

Direciona saída de tela ou impressora criada com ?, ??, DISPLAY ou LIST a um arquivo texto.

Sintaxe

SET ALTERNATE ON | OFF


– Ou –
SET ALTERNATE TO [NomeArquivo [ADDITIVE]]

Argumentos

ON Direciona saída para o arquivo texto.

OFF (Padrão) Desativa a saída para o arquivo texto.

TO NomeArquivo Cria o arquivo texto, ao qual é atribuído a extensão .TXT padrão, a não ser que
você inclua uma extensão diferente com o nome do arquivo.

Se você utilizar SET ALTERNATE TO sem NomeArquivo, o último arquivo criado utilizando SET
ALTERNATE TO NomeArquivo será fechado.

ADDITIVE Inclui saída no final do arquivo especificado com NomeArquivo. Se ADDITIVE for
omitido, o conteúdo do arquivo será sobrescrito.
SET ASSERTS, comando

Especifica se os comandos ASSERT serão avaliados ou ignorados.

Sintaxe

SET ASSERTS ON | OFF

Argumentos

ON Especifica ao Visual FoxPro que execute os comandos ASSERT.

OFF Especifica ao Visual FoxPro que ignore os comandos ASSERT.

Comentários

ASSERTS é desativado se o botão Ignorar todos for selecionado na caixa de mensagem exibida
após uma instrução.

SET AUTOSAVE, comando

Determina se o Visual FoxPro descarrega buffers de dados para o disco, quando você sai de um
READ ou retorna para a janela Comando.
Sintaxe

SET AUTOSAVE ON | OFF

Argumentos

ON Especifica que os buffers sejam descarregados para disco sempre que você sair de um READ
ou retornar para a janela Comando.

OFF Especifica que os buffers sejam descarregados para disco, apenas se passarem cinco minutos
desde o último descarregamento e apenas quando você sair de um READ ou retornar para a janela
Comando.

OFF é o padrão para SET AUTOSAVE.

Comentários

O descarregamento de buffers pode reduzir a chance de perda de dados se houver queda de energia.

É feito um escopo de SET AUTOSAVE para a sessão de dados atual.


SET BELL, comando

Ativa ou desativa a campainha do computador e define os atributos de campainha.

Sintaxe

SET BELL ON | OFF


– Ou –
SET BELL TO [cNomeArquivoWAV, nDuração]

Argumentos

ON (Padrão) Ativa a campainha.

OFF Desativa a campainha.

TO cNomeArquivoWAV, nDuração No Visual FoxPro, é possível especificar um som em forma


de onda ou um som de alarme de sistema para ser reproduzido quando a campainha for tocada.

cNomeArquivoWAV especifica o som em forma de onda a ser reproduzido. cNomeArquivoWAV


pode ser um nome de arquivo de som em forma de onda ou uma entrada da seção de sons de seu
arquivo WIN.INI. Se não for possível localizar o som, o Visual FoxPro irá reproduzir o som padrão
especificado pela entrada SystemDefault na seção de sons de seu arquivo WIN.INI. O Visual
FoxPro não reproduz sons se não for possível localizar o som padrão ou se não houver uma entrada
SystemDefault.

Se você especificar um som de alarme de sistema ou um som em forma de onda , deverá incluir
também nDuração. Ocorrerá um erro de sintaxe se o valor de duração for omitido. O valor de
duração especificado será ignorado e o som de alarme de sistema ou o som em forma de onda será
reproduzido na íntegra.

Comentários

SET BELL ativa ou desativa o som da campainha durante a edição quando você atingir o final de
um campo ou digitar dados inválidos.

SET BELL, exemplo de comando

No exemplo a seguir, é reproduzido o arquivo de som em forma de onda DING.WAV.

SET BELL TO 'C:\WINDOWS\DING.WAV', 0


?? CHR(7)

SET BLOCKSIZE, comando

Especifica como o Visual FoxPro aloca espaço em disco para o armazenamento de campos Memo.

Sintaxe

SET BLOCKSIZE TO nBytes

Argumentos
nBytes Especifica o tamanho do bloco no qual o espaço em disco, para campos Memo, é alocado.
Se nBytes for 0, o espaço em disco será alocado em bytes únicos (blocos de 1 byte). Se nBytes for
um inteiro entre 1 e 32, o espaço em disco será alocado em blocos de nBytes bytes multiplicado por
512. Se nBytes for maior do que 32, o espaço em disco será alocado em blocos de nBytes bytes.

Se você especificar um valor de tamanho de bloco maior do que 32, poderá economizar bastante
espaço em disco.

Comentários

O valor padrão de SET BLOCKSIZE é 64. Para redefinir o tamanho do bloco para um valor
diferente depois da criação do arquivo, defina-o com um novo valor e, em seguida, utilize COPY
para criar uma nova tabela. A nova tabela terá o tamanho de bloco especificado.

É feito um escopo de SET BLOCKSIZE para a sessão de dados atual.

SET CARRY, comando


Determina se o Visual FoxPro adiantará dados do registro atual para um novo registro criado com
INSERT, APPEND e BROWSE.

Sintaxe

SET CARRY ON | OFF


– Ou –
SET CARRY TO [ListaCampos [ADDITIVE]]

Argumentos

ON Adianta dados de todos os campos em todas as áreas de trabalho do registro atual para um
novo registro.

OFF (Padrão) Evita que os dados de todos os campos sejam passados para um novo registro.

TO [ListaCampos [ADDITIVE]] ListaCampos especifica os campos dos quais serão adiantados


dados. Separa os nomes de campos com vírgulas.

ADDITIVE especifica aos campos da lista de campos que sejam adicionados ao conjunto de
campos atual que está sendo adiantado.

A emissão de SET CARRY TO implicitamente executa SET CARRY ON.

Utilize SET CARRY TO sem ListaCampos para restaurar a definição padrão (todos os campos são
adiantados).

Comentários

Utilize SET CARRY para ativar permitir que os dados sejam adiantados do registro atual para um
novo registro ou para evitar que os dados sejam adiantados. Os campos que geralmente
permanecem inalterados durante uma sessão de edição podem ser adiantados para cada novo
registro. Por exemplo, um campo que contenha os dados atuais pode ser adiantado para cada novo
registro, de modo que não seja necessário digitar novos dados de novo. Observe que o conteúdo dos
campos do tipo Geral não é adiantado.

SET CARRY afeta apenas a tabela aberta na área de trabalho selecionada no momento.

SET CARRY é o escopo para a sessão de dados atual.


SET CENTURY, comando

Determina se o Visual FoxPro exibe a parte de século de expressões de dados.

Sintaxe

SET CENTURY ON | OFF | TO [nSéculo [ROLLOVER nAno]]

Argumentos

ON Especifica um ano com quatro dígitos em um formato que inclui 10 caracteres (incluindo
delimitadores de data).

OFF (Padrão) Especifica um ano de dois dígitos em um formato que inclui oito caracteres e
assume o século XX para cálculos de datas.

TO nSéculo Um número de 1 a 99 que especifica o século atual. Quando uma data possuir um ano
de dois dígitos, nSéculo determinará em que século o ano ocorreu.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o século atual
padrão.

SET CENTURY ON

SET CENTURY TO 19
? {02/16/56} && Exibe 02/16/1956

SET CENTURY TO 20
? {02/16/56} && Exibe 02/16/2056
ROLLOVER nAno Um número de 0 a 99 que especifica o ano acima, que é o século atual e o
abaixo, que é o século seguinte.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o ano de passagem
de século padrão para 0.

SET CENTURY ON
SET CENTURY TO 19 ROLLOVER 60
? {02/16/96} && Exibe 16/02/1996

? {02/16/56} && Exibe 16/02/2056

Comentários

Utilize SET CENTURY para especificar como as funções e variáveis de data serão exibidas.

É feito um escopo de SET CENTURY para a sessão de dados atual.

SET CLOCK, comando

Determina se o Visual FoxPro exibirá o relógio do sistema e especifica a localização do relógio na


janela principal do Visual FoxPro.

Sintaxe

SET CLOCK ON | OFF | STATUS


– Ou –
SET CLOCK TO [nLinha, nColuna]

Argumentos

ON Exibe o relógio no canto superior direito da janela principal do Visual FoxPro.

OFF (Padrão) Remove o relógio da barra de status ou da janela principal do Visual FoxPro.

STATUS Exibe o relógio na barra de status gráfica. Execute SET STATUS BAR ON para exibir a
barra de status gráfica.

TO [nLinha, nColuna] Utilizando coordenadas de linha e coluna, especifica onde o relógio será
exibido na janela principal do Visual FoxPro. Utilize SET CLOCK TO sem as coordenadas para
exibir o relógio em sua posição padrão no canto superior direito da janela principal do Visual
FoxPro.

Se você posicionar o relógio na barra de status gráfica com SET CLOCK STATUS e especificar
uma localização na janela principal do Visual FoxPro com TO nLinha, nColuna, o Visual FoxPro
irá remover o relógio da barra de status gráfica e posicioná-lo na localização especificada.

SET COLLATE, comando

Especifica uma seqüência de ordenação para campos de caracteres em operações de classificação e


indexação subsequentes.

Sintaxe

SET COLLATE TO cNomeSeqüência


Argumentos

cNomeSeqüência Especifica uma seqüência de ordenação. As opções de seqüência de ordenação


disponíveis são as seguintes.

Opções Idioma

DUTCH Holandês
GENERAL Inglês, francês, alemão, espanhol moderno, português e outros idiomas da Europa
ocidental
GERMAN Ordem de lista telefônica em alemão (DIN)
ICELAND Islandês
MACHINE Máquina (a seqüência de ordenação padrão de versões anteriores do FoxPro)
NORDAN Norueguês, dinamarquês
SPANISH Espanhol tradicional
SWEFIN Sueco, finlandês
UNIQWT Peso único

Observação Quando você especifica a opção SPANISH, “ch” é uma letra única que é classificada
entre “c” e “d”, e “ll” é classificado entre “l” e “m”.
Caso você especifique uma opção de seqüência de ordenação como uma seqüência de caracteres
literal, certifique-se de colocar a opção entre aspas:

SET COLLATE TO "SWEFIN"

MACHINE é a opção de seqüência de ordenação padrão e é a seqüência com a qual os usuários de


Xbase estão familiarizados. Os caracteres são ordenados da forma como aparecem na página de
código atual.

GENERAL pode ser preferível para usuários dos Estados Unidos e da Europa ocidental. Os
caracteres são ordenados da forma como aparecem na página de código atual. Nas versões do
FoxPro anteriores a 2.5, você pode ter utilizado UPPER( ) ou LOWER( ) em campos de caracteres
ao criar índices. Nas versões do FoxPro posteriores a 2.5, você pode especificar a opção de
seqüência de ordenação GENERAL e omitir a conversão UPPER( ).

Caso você especifique uma opção de seqüência de ordenação diferente de MACHINE e caso crie
um arquivo .IDX, sempre será criado um .IDX compactado.

Utilize SET(“COLLATE”) para retornar a seqüência de ordenação atual.

Caso você inclua a linha a seguir no arquivo de configuração do Visual FoxPro, será especificada
uma seqüência de ordenação quando você iniciar o Visual FoxPro:

COLLATE = cNomeSeqüência

Esse procedimento é idêntico à emissão do comando a seguir:


SET COLLATE TO cNomeSeqüência

Comentários

SET COLLATE permite que você ordene tabelas que contenham caracteres acentuados para
qualquer um dos idiomas suportados. A alteração da definição de SET COLLATE não afeta a
seqüência de ordenação de índices anteriormente abertos. O Visual FoxPro mantém índices
existentes automaticamente, oferecendo uma flexibilidade para criar muitos tipos de índices
diferentes, até para o mesmo campo.

Por exemplo, se um índice for criado com SET COLLATE definido como GENERAL e a definição
de SET COLLATE for alterada posteriormente para SPANISH, o índice irá manter a seqüência de
ordenação GENERAL.

É feito um escopo de SET COLLATE para a sessão de dados atual.

Para obter informações adicionais sobre páginas de código e o suporte internacional do Visual
FoxPro, consulte “ Páginas de código suportadas pelo Visual FoxPro” e o capítulo 18,
“Desenvolvendo aplicativos internacionais”, no Guia do Desenvolvedor.

Para obter maiores informações sobre como configurar o Visual FoxPro, consulte o capítulo 3,
“Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

SET COLOR OF SCHEME, comando

Especifica as cores de um esquema de cores ou copia um esquema de cores para outro.

Sintaxe

SET COLOR OF SCHEME nEsquema1 TO


[SCHEME nEsquema2 | ListaParesCores]

Argumentos

nEsquema1 Especifica o número do esquema de cores que você deseja alterar. Pode ser um valor
de 1 a 24.

Observação No Visual FoxPro, os esquemas de cores de 13 a 15 são reservados para uso interno.
Não utilize esses esquemas de cores.

TO [SCHEME nEsquema2] Especifica o número de um esquema de cores para o qual o esquema


de cores nEsquema1 é alterado.
TO [ListaParesCores] Especifica até 10 pares de cores que você gostaria de alterar em seu
esquema de cores. Você pode alterar de maneira seletiva as cores em um esquema de cores
incluindo uma vírgula para cada par de cores que não deseja alterar. Por exemplo, para alterar o
terceiro par de cores no esquema de cores 1 para branco e azul claro e deixar o resto das definições
de cores inalterado, utilize o seguinte comando:

SET COLOR OF SCHEME 1 TO , , W+/B*

Um par de cores também pode ser especificado com um conjunto de seis valores de cor RGB
(vermelho, verde e azul), separados por vírgulas. Para alterar o terceiro par de cores no esquema de
cores 1 para branco e azul claro e deixar o resto das definições de cores inalterado, é possível
utilizar o seguinte comando:

SET COLOR OF SCHEME 1 TO , , RGB(255,255,255,0,0,255)

Comentários

Nem todos os elementos de interface podem ser controlados por esquemas de cores — janelas de
sistema, como as janelas Visualização e Comando, a barra de menus do sistema etc. sempre são
controladas pelas definições de cores do Painel de controle. A execução de SET COLOR OF
SCHEME nEsquema1 TO sem a inclusão de uma cláusula opcional restaura as cores do esquema de
cores atual.

Para obter maiores informações sobre conjunto de cores e esquemas de cores, consulte o tópico
“Visão geral de cores”.

SET COMPATIBLE, comando

( IMPORTANTE )

Controla a compatibilidade com o FoxBASE+ e outras linguagens Xbase.

Sintaxe

SET COMPATIBLE FOXPLUS | OFF | DB4 | ON


[PROMPT | NOPROMPT]
Argumentos

FOXPLUS | OFF (Padrão) Essas duas palavras-chave podem ser utilizadas de forma
intercambiável. Cada uma delas permite que os programas criados no FoxBASE+ sejam executados
no Visual FoxPro, sem alterações.

DB4 | ON A inclusão de uma dessas palavras-chave afetará o comportamento de alguns comandos


e funções.

PROMPT | NOPROMPT Essas opções determinam se o Visual FoxPro exibirá uma caixa de
diálogo quando você abrir uma tabela do dBASE contendo um campo Memo.

Inclua a opção PROMPT para exibir a caixa de diálogo Converter memos. Se você abrir uma tabela
do dBASE contendo um campo Memo, o Visual FoxPro, como padrão, exibirá a caixa de diálogo
Converter memos, que permitirá a conversão do arquivo de memo do dBASE para um formato do
Visual FoxPro. Deve-se converter o arquivo de memo para um formato do Visual FoxPro para que
a tabela seja aberta no Visual FoxPro. Posteriormente, você pode converter o arquivo de memo para
um formato do dBASE, incluindo a opção TYPE FOXPLUS no comando COPY.

Se você incluir NOPROMPT, a caixa de diálogo Converter memos não será exibida quando você
abrir uma tabela do dBASE que contenha um campo Memo. O arquivo de memo do dBASE será
automaticamente convertido para um formato do Visual FoxPro.

Comentários

Entre os comandos e funções afetados por SET COMPATIBLE estão LIKE( ), PLAY MACRO,
SELECT( ) e STORE (quando STORE é utilizado com matrizes).

SET COMPATIBLE não é compatível com outros comandos, funções ou recursos do Xbase não
suportados no Visual FoxPro. Por exemplo, ele não permite que você abra um formulário de
relatório criado em outros produtos Xbase com o Criador de relatórios.

A tabela a seguir lista os comandos afetados por SET COMPATIBLE.

Comandos

@ ... GET com uma cláusula RANGE READ com uma cláusula @ ... GET VALID
@ ... SAY com CHR(7) READs aninhados
@ ... SAY rolagem READ
@ ... SAY quando STATUS está ativado (ON) RUN | !
ACTIVATE SCREEN SET COLOR TO
ACTIVATE WINDOWSET 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 cláusula numérica PICTURE
LIKE( )SELECT( )
Comandos de menu SYS(2001, "COLOR")
PLAY MACRO

SET CONFIRM, comando

Especifica se é possível sair de uma caixa de texto digitando o último caractere nela contido.

Sintaxe

SET CONFIRM ON | OFF

Argumentos

ON Especifica que não é possível sair da caixa de texto digitando o último caractere nela contido.
Para sair, pressione ENTER, TAB ou uma das teclas de direção para mover de uma caixa de texto
para outro controle.

SET CONFIRM ON afeta também itens de menu e títulos de menu criados com DEFINE BAR e
DEFINE PAD. Se o usuário digitar a primeira letra do item de menu ou do título de menu, o item
ou o título será selecionado mas não será ativado. Para ativar o item ou o título de menu quando ele
estiver selecionado, pressione ENTER ou a BARRA DE ESPAÇOS.
OFF Especifica que o usuário pode sair de uma caixa de texto digitando o último caractere nela
contido. Quando atingir o último caractere da caixa de texto, o ponto de inserção irá mover-se para
o controle seguinte e a campainha soará (se SET BELL estiver ativado (ON)).

OFF é o valor padrão de SET CONFIRM.

SET CONFIRM OFF também afeta itens e títulos de menu. Se SET CONFIRM estiver desativado
(OFF), o usuário poderá escolher um item a partir de um menu ou um título de menu em uma barra
de menus, pressionando a tecla correspondente à primeira letra do título ou do item de menu.
(Quando SET CONFIRM está ativado (ON), esta ação seleciona apenas o item ou o título de menu).

Comentários

SET CONFIRM não tem qualquer efeito em teclas de acesso a itens ou títulos de menu. Se um item
ou um título de menu for criado com uma tecla de acesso, poderá ser escolhido pressionando-se a
tecla de acesso correspondente.

Você poderá criar caixas de texto utilizando o Criador de formulários.

É feito um escopo de SET CONFIRM para a sessão de dados atual.

SET CONSOLE, comando

Ativa ou desativa, dentro de programas, a saída para a janela principal do Visual FoxPro ou para a
janela ativa definida pelo usuário.

Sintaxe

SET CONSOLE ON | OFF

Argumentos
ON (Padrão) Envia toda a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.

OFF Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo
usuário.

Comentários

O comando SET CONSOLE é ativado (ON) quando se utiliza o Visual FoxPro de modo interativo e
não pode ser alterado para desativado (OFF) a partir da janela Comando. A definição só pode ser
alterada para desativado (OFF) a partir de um programa.

SET CONSOLE afeta algumas caixas de diálogo interativas do Visual FoxPro. Por exemplo, se
SET CONSOLE estiver desativado (OFF) e você emitir BROWSE quando nenhuma janela estiver
aberta, o Visual FoxPro exibirá uma mensagem de erro. Se SET CONSOLE estiver ativado (ON)
nas mesmas circunstâncias, o Visual FoxPro exibirá a caixa de diálogo Abrir.

SET CONSOLE não afeta a saída de @ ... SAY. A saída de @ ... SAY é controlada pela definição
de SET DEVICE.

Importante Um erro sempre define CONSOLE como ativado (ON). Utilize SYS(100) para
verificar a definição de SET CONSOLE antes da ocorrência do erro. Para obter maiores
informações, consulte SYS(100) - Definição de console.

SET COVERAGE, comando


Ativa ou desativa o alcance do código ou especifica um arquivo de texto para o qual as informações
de alcance do código serão direcionadas.

Sintaxe

SET COVERAGE TO [NomeArquivo [ADDITIVE]]

Argumentos

TO NomeArquivo Especifica o nome de um arquivo de texto para o qual as informações de


alcance do código serão direcionadas. Emita SET COVERAGE TO sem um nome de arquivo para
fechar o arquivo de texto.

Se o arquivo de texto especificado não existir, o Visual FoxPro criará e abrirá o arquivo
automaticamente.

ADDITIVE Inclui as informações de alcance do código no final do arquivo de texto especificado


com NomeArquivo. Se você omitir ADDITIVE, as informações de alcance do código substituirão o
conteúdo do arquivo de texto.

Comentários

É possível também definir opções de alcance do código na caixa de diálogo Alcance.

SET CPDIALOG, comando

Especifica se a caixa de diálogo Página de código será exibida quando uma tabela for aberta.

Sintaxe

SET CPDIALOG ON | OFF

Argumentos

ON (Padrão) Exibe a caixa de diálogo Página de código quando uma tabela é aberta e as
condições a seguir são verdadeiras:

· A tabela está aberta em modo exclusivo.


· A tabela não está marcada com uma página de código.
OFF Não exibe a caixa de diálogo Página de código quando uma tabela é aberta.

Comentários

A caixa de diálogo Página de código permite que você especifique uma página de código para
tabelas criadas em versões anteriores do FoxPro e para outros produtos que criam tabelas do Visual
FoxPro. A tabela é marcada com a página de código selecionada.

Ao criar um aplicativo, emita SET CPDIALOG ON para certificar-se de que as tabelas incluídas no
aplicativo estão marcadas com a página de código correta. No aplicativo completo, certifique-se de
que SET CPDIALOG está desativado (OFF).

É possível, também, especificar de modo interativo se a caixa de diálogo Página de código é exibida
com a caixa de verificação Solicitar página de código, na guia Dados da caixa de diálogo Opções. A
caixa de diálogo Opções é exibida quando Opções é selecionada no menu Ferramentas.

Para obter informações adicionais sobre páginas de código e sobre o suporte internacional do Visual
FoxPro, consulte Páginas de código suportadas pelo Visual FoxPro e o capítulo 18,
“Desenvolvendo aplicativos internacionais”, no Guia do Desenvolvedor.

SET CURRENCY, comando

Define o símbolo da moeda e especifica sua posição na exibição de expressões numéricas,


monetárias, flutuantes e duplas.

Sintaxe

SET CURRENCY TO [cSímboloMoeda]


– Ou –
SET CURRENCY LEFT | RIGHT
Argumentos

cSímboloMoeda Especifica uma seqüência de caracteres, de um a nove caracteres, que representa


o símbolo da moeda. Emita SET CURRENCY TO sem cSímboloMoeda para redefinir o símbolo da
moeda como cifrão padrão ($).

LEFT (Padrão) Posiciona o símbolo da moeda à esquerda do valor monetário.

RIGHT Posiciona o símbolo da moeda à direita do valor monetário.

Comentários

O símbolo monetário é exibido na saída criada com @ ... SAY e nas caixas de texto criadas com
@ ... GET quando o código $ está incluído na cláusula FUNCTION ou PICTURE.

É feito um escopo de SET CURRENCY para a sessão de dados atual.

Exemplo de comando SET CURRENCY

O exemplo a seguir exibe o símbolo da moeda DM em qualquer lado do valor monetário. Se você
utilizar PICTURE para exibir o símbolo da moeda, certifique-se de incluir @ antes do cifrão.

STORE SET('CURRENCY') TO 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 inserção é exibido quando o Visual FoxPro está aguardando uma entrada.

Sintaxe

SET CURSOR ON | OFF

Argumentos

ON (Padrão) Faz com que o ponto de inserção seja exibido durante um @ ... GET, @ ... EDIT,
WAIT ou INKEY( ) pendente.

OFF Impede que o ponto de inserção seja exibido durante um @ ... GET, @ ... EDIT, WAIT ou
INKEY( ) pendente.

Comentários

O comando SET CURSOR, semelhante a SYS(2002), permite ativar ou desativar o ponto de


inserção.

SET DATABASE, comando

Especifica o banco de dados atual.

Sintaxe

SET DATABASE TO [NomeBancoDados]

Argumentos

NomeBancoDados Especifica o nome de um banco de dados aberto que deve ser considerado o
banco de dados atual. Se você omitir NomeBancoDados, nenhum banco de dados aberto será
considerado como o atual.
Comentários

Pode haver vários bancos de dados abertos ao mesmo tempo, mas somente um pode ser o banco de
dados atual. Os comandos e as funções que manipulam bancos de dados abertos, como ADD
TABLE e DBC( ), operam no banco de dados atual.

O banco de dados atual também pode ser especificado selecionando um banco de dados aberto na
lista suspensa Banco de dados da Barra de ferramentas padrão.

O Visual FoxPro pode abrir, automaticamente, bancos de dados quando uma consulta ou um
formulário é executado.

É feito um escopo de SET DATABASE para a sessão de dados atual.

Exemplo de comando SET DATABASE

O exemplo a seguir cria dois bancos de dados chamados mydbc1 e mydbc2 e uma tabela
denominada table1. SET DATABASE é utilizado para tornar mydbc1 o banco de dados atual e
table1 é adicionada a mydbc1 quando criada. A tabela é, então, fechada e removida de mydbc1.
SET DATABASE é utilizado para tornar mydbc1 o banco de dados atual e ADD TABLE é
utilizado, em seguida, para adicionar a tabela a mydbc2. RENAME TABLE é utilizado para mudar
o nome da tabela de table1 para table2.

CREATE DATABASE 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 exibição das expressões de Data e de DataHora.


Sintaxe

SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN


| ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD
| SHORT | LONG

Comentários

A seguir são exibidas as definições e os formatos de data resultantes:

Definição Formato

AMERICAN mm/dd/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 definição de data curta do Painel de
controle do Windows.
LONG Formato de data longa determinado pela definição de data longa do Painel de controle do
Windows.

A definição de data padrão é AMERICAN.


A definição de SET DATE também determina o modo de exibição da data nas expressões de
DataHora.
Se DATE for definido com SHORT ou LONG, as definições de SET CENTURY, SET MARK,
SET HOURS e SET SECONDS serão ignoradas.
É feito um escopo de SET DATE para a sessão de dados atual.
SET DEBUG, comando

Torna as janelas Depurar e Rastrear disponíveis ou não disponíveis no sistema de menu do Visual
FoxPro.

Sintaxe

SET DEBUG ON | OFF

Argumentos

ON (Padrão) Torna as janelas Depurar e Rastrear disponíveis no sistema de menu do Visual


FoxPro.

OFF Torna as janelas Depurar e Rastrear não disponíveis no sistema de menu do Visual FoxPro. No
entanto, quando SET DEBUG está desativado (OFF), a janela Depurar pode ser aberta com SET
ECHO ON ou ACTIVATE WINDOW DEBUG e a janela Rastrear com SET STEP ON ou
ACTIVATE WINDOW TRACE.

Comentários

Para obter maiores informações sobre como utilizar as janelas Rastrear e Depurar, consulte o
capítulo 14, “Testando e depurando aplicativos”, no Guia do Desenvolvedor.

SET DEBUGOUT, comando

Sintaxe

SET DEBUGOUT TO [NomeArquivo [ADDITIVE]]


Argumentos

NomeArquivo Especifica o nome do arquivo para o qual a saída da depuração será direcionada. Se
o arquivo especificado não existir, será automaticamente criado. Se o arquivo especificado já
existir, seu conteúdo será sobrescrito, a não ser que você inclua a cláusula ADDITIVE.

Emita SET DEBUGOUT TO para interromper o direcionamento da saída da depuração para o


arquivo e fechar o arquivo.

ADDITIVE Especifica que a saída da depuração será incluída no final do arquivo especificado
com NomeArquivo.

Comentários

A saída da depuração direcionada para o arquivo inclui mensagens de ASSERT, saída do comando
DEBUGOUT e eventos especificados com SET EVENTLIST ou na caixa de diálogo Controle de
eventos. Consulte a Caixa de diálogo Controle de eventos para obter maiores informações sobre
como especificar eventos para rastrear de modo interativo.

SET DECIMALS, comando

Especifica o número de casas decimais exibido em expressões numéricas.

Sintaxe

SET DECIMALS TO [nCasasDecimais]

Argumentos

nCasasDecimais Especifica o número mínimo de casas decimais a ser exibido. O padrão são duas
casas decimais. O número máximo de casas decimais é 18; o mínimo é zero.

Comentários

SET DECIMALS especifica o número mínimo de casas decimais utilizadas para exibir os
resultados de divisão, multiplicação e funções trigonométricas e financeiras.

É feito um escopo de SET DECIMALS para a sessão de dados atual.


SET DEFAULT, comando

Especifica a unidade de disco e diretório padrão.

Sintaxe

SET DEFAULT TO [cCaminho]

Argumentos

cCaminho Especifica um dos itens a seguir:

· Um designador de unidade de disco.


· Um designador de unidade de disco com um nome de diretório.
· O nome de um diretório filho.
· Qualquer um dos itens anteriores, utilizando a notação abreviada do MS-DOS ( \ ou ..).

Comentários

SET DEFAULT altera o diretório padrão para o diretório especificado.

O Visual FoxPro procura um arquivo no diretório padrão do Visual FoxPro. O diretório padrão é
aquele a partir do qual você inicia o Visual FoxPro. Entretanto, você pode especificar outro
diretório padrão no arquivo de configuração do Visual FoxPro ou em um programa de inicialização.
Se o Visual FoxPro não conseguir localizar um arquivo no diretório padrão, ele pesquisará o
caminho do Visual FoxPro, se algum tiver sido especificado. Utilize SET PATH para especificar o
caminho do Visual FoxPro.

Se você criar um arquivo e não especificar onde colocá-lo, o arquivo será colocado no diretório
padrão do Visual FoxPro.

Ao sair do Visual FoxPro, você retorna ao Windows. Ao sair do Windows, você retorna à unidade
de disco e ao diretório a partir dos quais você iniciou o Windows.

Dica SYS(5) retorna a unidade de disco padrão. SYS(2003) retorna o diretório padrão sem
designador de unidade de disco. SYS(5) + SYS(2003) retorna a unidade de disco e o diretório
padrão.

Você pode alterar a unidade de disco padrão para unidade A, utilizando um dos comandos a seguir:
SET DEFAULT TO A
SET DEFAULT TO A:

Você pode selecionar um diretório específico:

SET DEFAULT TO A:\sales


SET DEFAULT TO C:\sales\data

É possível especificar um diretório filho. Se o diretório-raiz na unidade C for o diretório padrão do


Visual FoxPro, emita o comando a seguir para alterar o diretório padrão para C:\SALES:

SET DEFAULT TO sales

Você pode utilizar a notação abreviada do MS-DOS. Se o diretório atual for C:\SALES\DATA,
emita o comando a seguir para tornar o diretório-raiz o diretório padrão:

SET DEFAULT TO \

Você pode também mover o diretório padrão um diretório em direção ao diretório raiz, com o
seguinte comando:

SET DEFAULT TO ..

SET DELETED, comando


Especifica se o Visual FoxPro processa registros marcados para exclusão e se eles estão disponíveis
para uso em outros comandos.

Sintaxe

SET DELETED ON | OFF

Argumentos

ON Especifica que comandos que operam em registros (incluindo registros de tabelas


relacionadas) utilizando um escopo ignoram registros marcados para exclusão.

OFF (Padrão) Especifica que os registros marcados para exclusão podem ser acessados por
comandos que operam em registros (incluindo registros de tabelas relacionadas) utilizando um
escopo.

Comentários

As consultas que utilizam DELETED( ) para verificar o status de registros podem ser otimizadas
com a tecnologia Rushmore se a tabela estiver indexada em DELETED( ).

Para obter maiores informações sobre como otimizar consultas, consulte “Compreendendo a
tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor
.

Para marcar registros para exclusão, emita DELETE - SQL ou DELETE, ou selecione Excluir
registros... no menu Tabela dentro de uma janela de pesquisa ou edição.

Para reintegrar registros, emita RECALL ou selecione Reintegrar registros... no menu Tabela dentro
de uma janela de pesquisa ou edição.

Importante O comando SET DELETED será ignorado se o escopo padrão do comando for o
registro atual e você incluir um escopo de um único registro. INDEX e REINDEX sempre ignoram
SET DELETED e indexam todos os registros da tabela.

É feito um escopo de SET DELETED para a sessão de dados atual.


SET DEVELOPMENT, comando

Faz com que o Visual FoxPro compare a data e a hora da criação de um programa com a data e a
hora do seu arquivo objeto compilado quando o programa é executado.

Sintaxe

SET DEVELOPMENT ON | OFF

Argumentos

ON (Padrão) Especifica que o Visual FoxPro recompilará o programa de origem antes de executá-
lo, caso ele seja mais atual que o seu programa objeto compilado. Esta opção assegura a execução
da versão mais atual de um programa.

OFF Especifica que o Visual FoxPro não compara as versões compilada e de origem do programa.
Se SET DEVELOPMENT estiver desativado (OFF), pode ser que nem sempre esteja sendo
executada a versão mais atual de um programa.

Comentários

A versão mais atual de um programa modificado com o editor do Visual FoxPro, chamado com
MODIFY COMMAND é sempre executada, independentemente da definição de SET
DEVELOPMENT.

Só será necessário ativar o comando SET DEVELOPMENT quando os programas forem


modificados fora do Visual FoxPro. O uso de um editor externo — por exemplo, um editor de
programa residente (TSR) — pode exigir que você emita CLEAR PROGRAM antes de executar o
programa modificado. Para obter maiores informações, consulte CLEAR PROGRAM. Utilize SET
DEVELOPMENT OFF para obter o desempenho ideal.

Quando SET DEVELOPMENT está ativado (ON), a execução do programa pode ser cancelada
durante uma leitura (READ). O comando Cancelar está disponível no menu Programa quando SET
DEVELOPMENT estiver ativado (ON) e uma leitura estiver ativa. A seleção de Cancelar durante a
leitura (READ) cancela a execução do programa. Se SET DEVELOPMENT estiver desativado
(OFF), o comando Cancelar não estará disponível no menu Programa durante uma leitura.

SET DEVELOPMENT também determina se a janela Rastrear está aberta quando ocorre um erro
em um formulário que está sendo executado. Se SET DEVELOPMENT estiver ativado (ON), a
janela Rastrear é aberta com a linha de programa que causou o erro selecionado. Se SET
DEVELOPMENT estiver desativado (OFF), a janela Rastrear não é aberta quando ocorre um erro
em um formulário.

SET DEVICE, comando

Direciona a saída de @ ... SAY para a tela, uma impressora ou um arquivo.

Sintaxe

SET DEVICE TO SCREEN | TO PRINTER [PROMPT] | TO FILE NomeArquivo

Argumentos

TO SCREEN Direciona a saída de @ ... SAY para a janela principal do Visual FoxPro ou para a
janela ativa definida pelo usuário.

TO PRINTER [PROMPT] Direciona a saída de @ ... SAY para a impressora. Um ejetar de página
é emitido quando as coordenadas em @ ... SAY especificam uma localização na página que seja
mais alta do que a localização especificada pelas coordenadas no @ ... SAY anterior.

Pode-se incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da
impressão. Nesta caixa de diálogo, o usuário poderá ajustar as definições da impressora, inclusive o
número de cópias a serem impressas e o número de páginas. O driver de impressora instalado no
momento determina as definições da impressora que podem ser ajustadas. Coloque PROMPT logo
depois de TO PRINTER.

TO FILE NomeArquivo Especifica um arquivo para o qual @ ... SAY enviará a saída.
Comentários

A saída de @ ... SAY pode ser enviada para a janela principal do Visual FoxPro, para a janela ativa
definida pelo usuário, para a impressora ou para um arquivo.
SET DISPLAY, comando

Permite que você altere o modo de exibição atual em monitores que suportam diversos modos.

Sintaxe

SET DISPLAY TO CGA | EGA25 | EGA43 | VGA25 | VGA50

Argumentos

CGA Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos.

EGA25 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos e o
tamanho desta janela para 25 linhas.

EGA43 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 7 pontos e o
tamanho desta janela para 50 linhas.
VGA25 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos e o
tamanho desta janela para 25 linhas.

VGA50 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 7 pontos e o
tamanho desta janela para 50 linhas.

VGA50 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 8 pontos.

Comentários

SET DISPLAY altera o tamanho da fonte da janela principal do Visual FoxPro. O tamanho da
janela principal do Visual FoxPro será aumentado, se necessário, para que comporte o número de
linhas exigido pela opção especificada. Se a barra de status gráfica for exibida quando você emitir
SET DISPLAY, este comando estará desativado.

O Visual FoxPro exibirá uma mensagem de erro se uma opção não for suportada pelo hardware de
vídeo.

A linha SET MESSAGE será redefinida como a última linha da janela principal do Visual FoxPro
sempre que SET DISPLAY for emitido.

SET ECHO, comando

Abre a janela Rastrear para a depuração de programas. Incluído para manter a compatibilidade com
versões anteriores. Utilize a janela Rastrear como substituto.

Sintaxe
SET ECHO ON | OFF

Argumentos

ON Exibe o código de origem do programa em execução na janela Rastrear. A linha em execução


no momento será realçada.

OFF (Padrão) Fecha a janela Rastrear em versões do Visual FoxPro anteriores à versão 2.0. Para
fechar a janela Rastrear dentro de um programa, emita DEACTIVATE WINDOW TRACE.

Comentários

Também é possível utilizar a janela Rastrear para definir pontos de interrupção, que suspendem a
execução do programa.

Para obter maiores informações sobre a janela Rastrear, consulte o tópico Janela Rastrear e o
capítulo 14, “Testando e depurando aplicativos”, no Guia do Desenvolvedor.

SET ESCAPE, comando

Determina se o pressionamento da tecla ESC interromperá a execução do programa e de comandos.

Sintaxe

SET ESCAPE ON | OFF

Argumentos

ON (Padrão) Permite que a execução do programa e do comando seja interrompida quando a tecla
ESC for pressionada.

Se o usuário pressionar ESC durante a execução de um comando ou programa enquanto o ponto de


inserção estiver na janela Comando, será exibida a mensagem a seguir:

*** INTERROMPIDO ***

Se o usuário pressionar ESC durante a execução de um comando ou programa, o processamento


terminará na linha do programa atual e será exibido um alerta com as três opções a seguir:
· (Padrão) Selecione Cancelar para interromper imediatamente a execução do programa e
retornar à janela Comando.
· Selecione Suspender para colocar a execução do programa em pausa e retornar à janela
Comando. Esta opção é útil para depurar um programa. Selecione Retomar no menu Programa ou
emita RESUME na janela Comando para reiniciar o programa na linha em que ele foi colocado em
pausa.
· Selecione Ignorar para continuar a execução do programa na linha em que ele foi colocado
em pausa.

OFF Impede que a execução de um comando ou programa seja interrompida quando a tecla ESC é
pressionada.

SET EXACT, comando

Especifica as regras que o Visual FoxPro aplicará ao comparar duas seqüências de comprimentos
diferentes.

Sintaxe

SET EXACT ON | OFF


Argumentos

ON Especifica que as expressões devem corresponder caractere por caractere para que sejam
equivalentes. Qualquer espaço à direita nas expressões será ignorado na comparação. Na
comparação, a menor das duas expressões será preenchida à direita com espaços para que
corresponda ao comprimento da expressão maior.

OFF (Padrão) Especifica que, para que sejam equivalentes, as expressões devem corresponder
caractere por caractere até o fim da expressão no lado direito.

Comentários

A definição de SET EXACT não terá qualquer efeito se as duas seqüências tiverem o mesmo
comprimento.

Comparações de Seqüências O Visual FoxPro possui dois operadores relacionais que testam a
igualdade.

O operador = compara dois valores do mesmo tipo. Este operador é adequado para comparar dados
lógicos, numéricos, de data e de caractere.

No entanto, quando você compara expressões de caracteres com o operador =, os resultados podem
não ser exatamente os esperados. Expressões de caracteres são comparadas caractere por caractere
da esquerda para a direita até que uma das expressões não seja igual à outra, até que o fim da
expressão no lado direito do operador = seja atingido (SET EXACT OFF) ou até que seja atingido o
fim das duas expressões (SET EXACT ON).

Pode-se utilizar o operador = = quando é necessária uma comparação exata de dados de caractere.
Caso duas expressões de caractere sejam comparadas com o operador = =, as expressões dos dois
lados do operador = = deverão conter exatamente os mesmos caracteres, incluindo espaços em
branco, para que sejam consideradas iguais. A definição SET EXACT é ignorada quando
seqüências de caracteres são comparadas utilizando-se = =.

A tabela a seguir mostra como a escolha do operador e a definição de SET EXACT afetam as
comparações. (Um sublinhado representa um espaço em branco.)

Comparação = EXACT OFF = EXACT ON == EXACT ON ou OFF

“abc” = “abc” Corresponde Corresponde Corresponde


“ab” = “abc” Não corresponde Não corresponde Não corresponde
“abc” = “ab” Corresponde Não corresponde Não corresponde
“abc” = “ab_” Não corresponde Não corresponde Não corresponde
“ab” = “ab_” Não corresponde Corresponde Não corresponde
“ab_” = “ab” Corresponde Corresponde Não corresponde
“” = “ab” Não corresponde Não corresponde Não corresponde
“ab” = “” Corresponde Não corresponde Não corresponde
“__” = “” Corresponde Corresponde Não corresponde
“” = “___” Não corresponde Corresponde Não corresponde
TRIM(“___”) = “” Corresponde Corresponde Corresponde
“” = TRIM(“___”) Corresponde Corresponde Corresponde

É feito um escopo de SET EXACT para a sessão de dados atual.

SET EXCLUSIVE, comando

Especifica se o Visual FoxPro abrirá arquivos de tabela para utilização exclusiva ou compartilhada
em uma rede.

Sintaxe

SET EXCLUSIVE ON | OFF

Argumentos

ON (O padrão para a sessão de dados global.) Limita a acessibilidade de uma tabela aberta em
uma rede para o usuário que a abriu. A tabela não está disponível para outros usuários na rede.
Diferente de FLOCK( ), SET EXCLUSIVE ON também evita que todos os outros usuários tenham
acesso somente para leitura. Um arquivo também pode ser aberto em uma rede para utilização
exclusiva, incluindo-se a cláusula EXCLUSIVE com o comando USE. Não é necessário realizar
bloqueio de arquivo ou registro em uma tabela aberta para utilização exclusiva.

Abrir uma tabela para utilização exclusiva garante que o arquivo não poderá ser alterado por outros
usuários. É impossível executar alguns comandos até uma tabela ser aberta para utilização
exclusiva. Esses comandos são INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK,
REINDEX e ZAP.
OFF (O padrão para uma sessão de dados privada.) Permite que uma tabela aberta em uma rede
seja compartilhada e modificada por qualquer usuário na rede.

Para obter informações adicionais sobre bloqueio de arquivos e registros e sobre compartilhamento
de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia
do Desenvolvedor.

Comentários

A alteração da definição de SET EXCLUSIVE não muda o status de tabelas abertas anteriormente.
Por exemplo, se uma tabela for aberta com SET EXCLUSIVE ativado e SET EXCLUSIVE for
desativado posteriormente, a tabela manterá o seu status de utilização exclusiva.

É feito um escopo de SET EXCLUSIVE para a sessão de dados atual.

SET FDOW, comando

Especifica o primeiro dia da semana.

Sintaxe

SET FDOW TO [nExpressão]

Argumentos

nExpressão Especifica o primeiro dia da semana. A tabela a seguir lista os valores que podem ser
assumidos por nExpressão e o primeiro dia da semana correspondente.
nExpressão Dia da semana

1 Domingo
2 Segunda-feira
3 Terça-feira
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sábado

Se nExpressão for omitido, o primeiro dia da semana será redefinido como domingo (1).

Comentários

Também é possível redefinir o primeiro dia da semana com a caixa de listagem Começar semana
em na guia Regional da caixa de diálogo Opções.

Exemplo do comando SET FDOW

STORE SET('FDOW') TO gnFdow && Salva valor atual


SET FDOW TO 1 && Define o primeiro dia da semana como domingo, o padrão
SET FDOW TO 7 && Define o primeiro dia da semana como sábado
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 (Padrão) Especifica que todos os campos na tabela atual podem ser acessados.

LOCAL Especifica que apenas os campos na Área de trabalho atual relacionados na lista de
campos podem ser acessados.

GLOBAL Especifica que todos os campos na lista de campos, incluindo campos em outras áreas
de trabalho, podem ser acessados.

SET FIELDS GLOBAL permite que você acesse campos em outras áreas de trabalho sem emitir
SET COMPATIBLE TO DB4.

TO [NomeCampo1 [, NomeCampo2 ...]] Especifica os nomes dos campos que podem ser
acessados na tabela atual. Você deve incluir um alias com o nome do campo nos casos a seguir:

· Quando o campo estiver em uma tabela aberta em uma Área de trabalho diferente da Área
de trabalho selecionada no momento.
· Quando os nomes de campos forem os mesmos em duas ou mais tabelas.

É possível incluir campos de tabelas abertas em outras áreas de trabalho se os campos forem
antecedidos por seus aliases de tabela. No entanto, esses campos não podem ser acessados, a não ser
que você emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

A lista de campos pode conter instruções para criação de campos calculados. Um campo calculado
contém dados somente para leitura criados com uma expressão. Essa expressão pode ter qualquer
forma, mas deve ser uma expressão válida do FoxPro. Os campos calculados não podem ser
acessados, a não ser que você emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

O formato da instrução utilizada para criar um campo calculado é:

<calculated field name> = <expr>

Esse exemplo cria um campo calculado denominado LOCATION:


CLOSE DATABASES
USE customer
SET FIELDS TO LOCATION = ALLTRIM(city) + ', ' + state

CITY e STATE são os nomes de campos da tabela selecionada.

ALL Permite acesso a todos os campos na tabela atual.

ALL LIKE Estrutura | EXCEPT Estrutura É possível acessar campos de forma seletiva incluindo a
cláusula LIKE ou EXCEPT ou ambas. Se for incluído LIKE Estrutura, será possível acessar campos
que correspondam a Estrutura. Se for incluído EXCEPT Estrutura
, será possível acessar todos os campos, a não ser os que correspondam a Estrutura.

A estrutura Estrutura suporta caracteres curinga como * e ?. Por exemplo, para acessar campos que
comecem com as letras A e P, emita:

SET FIELDS TO ALL LIKE A*,P*

A cláusula LIKE pode ser combinada com a cláusula EXCEPT:

SET FIELDS TO ALL LIKE A*,P* EXCEPT PARTNO*

Comentários

SET FIELDS TO é aditivo — emitir SET FIELDS TO com uma lista de campos adiciona os
campos especificados aos que já estão acessíveis no momento.

Emitir SET FIELDS TO implicitamente executa SET FIELDS ON. Emitir SET FIELDS TO sem
qualquer argumento adicional implicitamente executa SET FIELDS OFF. Emita SET FIELDS TO
sem incluir uma lista de campos ou ALL para remover todos os campos da lista de campos da tabela
atual.

É feito um escopo de SET FIELDS para a sessão atual.

SET FILTER, comando

Especifica uma condição que os registros da tabela atual devem atender para serem acessíveis.

Sintaxe

SET FILTER TO [lExpressão]


Argumentos

lExpressão Especifica a condição que os registros devem satisfazer.

Se a tabela atual for indexada em um campo ou campos especificados em lExpressão, a tecnologia


Rushmore do Visual FoxPro irá otimizar consultas baseadas no campo ou campos.

Comentários

Quando o SET FILTER for emitido, apenas os registros que satisfizerem a condição especificada
pela expressão lógica lExpressão estarão disponíveis na tabela. Todos os comandos que acessam a
tabela respeitam a condição SET FILTER. Um filtro separado pode ser definido para cada tabela
aberta.

A condição especificada por SET FILTER não será avaliada até que o ponteiro do registro seja
movido na tabela.

Emitir SET FILTER TO sem lExpressão desativa o filtro da tabela atual.

SELECT - SQL não respeita a condição de filtro atual.


SET FIXED, comando

Especifica se o número de casas decimais utilizado na exibição de dados numéricos é fixo.

Sintaxe

SET FIXED ON | OFF

Argumentos

ON Utiliza a definição SET DECIMALS para determinar o número de casas decimais exibido nos
resultados. O número padrão de casas decimais é 2.

OFF (Padrão) Permite que o número de casas decimais exibido nos resultados dependa de
constantes, variáveis e operadores específicos utilizados em uma expressão numérica. O conteúdo
de campos é exibido com o número declarado de casas decimais.

Comentários

É feito um escopo de SET FIXED para a sessão de dados atual.

SET FULLPATH, comando

Especifica se CDX( ), DBF( ), MDX( ) e NDX( ) retornará o caminho em um nome de arquivo.

Sintaxe

SET FULLPATH ON | OFF

Argumentos
ON (Padrão) Especifica que CDX( ), DBF( ), MDX( ) e NDX( ) retornará o designador de unidade
de disco, o caminho e o nome do arquivo.

OFF Especifica que apenas o designador de unidade de disco e o nome do arquivo são retornados.

SET FUNCTION, comando

Atribui uma expressão (macro de teclado) a uma tecla de função ou combinação de teclas.

Sintaxe

SET FUNCTION nNúmeroTeclaFunção | NomeRótuloTecla TO [eExpressão]

Argumentos

nNúmeroTeclaFunção Especifica o número da tecla de função atribuído à macro. Por exemplo,


utilize SET FUNCTION 2 para especificar a tecla de função F2.

K NomeRótuloTecla Especifica uma combinação de teclas, incluindo uma tecla de função, à qual
a macro será atribuída. O Visual FoxPro suporta combinações de teclas que incluam teclas de
função. É possível utilizar a tecla CTRL ou a tecla SHIFT em combinações com uma tecla de
função para criar teclas programáveis adicionais. Para obter uma lista de expressões de rótulo de
tecla, consulte ON KEY LABEL.

TO [eExpressão] Especifica a série de pressionamentos de tecla armazenados para a tecla de


função ou combinação de teclas. O Visual FoxPro interpreta um ponto-e-vírgula (;) na expressão
como um avanço de linha.

As definições de teclas de função podem ser limpas com CLEAR MACROS.


OBS : Veja comando ON KEY LABEL
SET FWEEK, comando

Especifica os requisitos para a primeira semana do ano.


Sintaxe

SET FWEEK TO [nExpressão]

Argumentos

nExpressão Especifica um valor que determina os requisitos da primeira semana do ano. A tabela a
seguir lista os valores que nExpressão pode assumir e os requisitos correspondentes da primeira
semana do ano:

nExpressão Requisito da primeira semana

1 (Padrão) A primeira semana contém 1º de janeiro.


2 A maior parte (quatro dias) da primeira semana está no ano corrente.
3 A primeira semana tem sete dias.

Se você omitir nExpressão, a primeira semana do ano será redefinida como 1 (a primeira semana
contém 1º de janeiro).

Comentários

Também é possível definir a primeira semana do ano com a caixa de listagem Primeira semana do
ano na guia Regional da caixa de diálogo Opções.

Exemplo do comando SET FWEEK

STORE SET('FWEEK') TO gnFweek && Salva o valor atual


SET FWEEK TO 1 && A primeira semana contém 1º de janeiro
SET FWEEK TO 3 && A primeira semana tem sete dias

SET FWEEK TO &gnFweek && Restaura a definição original


SET HEADINGS, comando

Determina se os cabeçalhos de coluna serão exibidos para campos e se as informações sobre o


arquivo serão incluídas quando TYPE for emitido para exibir o conteúdo de um arquivo.

Sintaxe

SET HEADINGS ON | OFF

Argumentos

ON (Padrão) Especifica que os nomes de campos são exibidos.

Se TYPE for emitido para exibir o conteúdo de um arquivo, o Visual FoxPro irá inserir uma
alimentação de formulário, o caminho e o nome do arquivo e a data no início da saída exibida.

OFF Especifica que os nomes de campos não são exibidos.

Se TYPE for emitido para exibir o conteúdo de um arquivo, o Visual FoxPro não irá inserir
informações adicionais sobre o arquivo no início da saída exibida.

Comentários

SET HEADINGS especifica se um nome de campo aparecerá como um cabeçalho da coluna acima
de cada campo na saída de AVERAGE, CALCULATE, DISPLAY, LIST e SUM.

SET HELP, comando

Ativa ou desativa a Ajuda on-line do Visual FoxPro ou especifica um arquivo de Ajuda.

Sintaxe

SET HELP ON | OFF


– ou –
SET HELP TO [NomeArquivo]
Argumentos

ON (Padrão) Exibe a janela Ajuda quando o usuário pressiona F1 ou exibe HELP na janela
Comando.

OFF Torna a Ajuda on-line do Visual FoxPro não disponível.

TO [NomeArquivo] Especifica o arquivo de Ajuda diferente da Ajuda on-line do Visual FoxPro.

Se você emitir SET HELP TO sem incluir um nome de arquivo, o Visual FoxPro procura um
arquivo de Ajuda com o nome FOXHELP.HLP.

Comentários

Utilize SET HELP para fornecer um arquivo de Ajuda on-line trabalhado dentro de um aplicativo
personalizado ou para alternar entre os diferentes arquivos de Ajuda no Visual FoxPro.

Para obter maiores informações sobre a Ajuda on-line do Visual FoxPro, consulte a parte 7, “
Criando arquivos de Ajuda”, no Guia do Desenvolvedor.
SET HELPFILTER, comando

Ativa o Visual FoxPro para exibir um subconjunto dos tópicos da Ajuda do estilo .DBF na janela
Ajuda.

Sintaxe

SET HELPFILTER [AUTOMATIC] TO [lExpressão]

Argumentos

AUTOMATIC Remove automaticamente os critérios especificados com SET HELPFILTER


depois que a janela Ajuda é fechada. A inclusão de AUTOMATIC é idêntica à emissão de SET
HELPFILTER TO imediatamente depois que a janela Ajuda é fechada. Você deve colocar
AUTOMATIC diretamente antes de TO lExpressão.

lExpressão Especifica uma expressão lógica utilizada para filtrar os tópicos da Ajuda. Apenas os
tópicos para os quais lExpressão resulta em verdadeiro (.T.) são exibidos. lExpressão contém
tipicamente um nome de um campo na tabela de ajuda.

Comentários

Você pode definir apenas um filtro para a Ajuda do estilo .DBF. Você não pode definir um filtro
para a Ajuda gráfica.

Para obter maiores informações sobre a Ajuda on-line do Visual FoxPro, consulte a parte 7, “
Criando arquivos de Ajuda”, no Guia do Desenvolvedor.
SET HOURS, comando

Define o relógio do sistema para um formato de hora de 12 ou 24 horas.

Sintaxe

SET HOURS TO [12 | 24]

Argumentos

TO 12 (Padrão) Especifica um formato de 12 horas.

TO 24 Especifica um formato de 24 horas.

Comentários

Utilize SET HOURS TO sem 12 ou 24 para retornar ao formato padrão de 12 horas.

TIME( ) sempre retorna um valor em formato de 24 horas e não é afetado por SET HOURS. O
valor retornado por DATETIME( ) é determinado pela definição SET HOURS atual.

SET HOURS é projetado para a sessão atual de dados.

SET INDEX, comando

Sintaxe Argumentos Comentários Consulte também


Abre um ou mais arquivos de índice para uso com a tabela atual.

Sintaxe

SET INDEX TO [ListaArquivoÍndice | ? ]


[ORDER nNumeroÍndice | NomeArquivoÍndiceIDX
| [TAG] NomeMarca [OF NomeArquivoCDX] [ASCENDING | DESCENDING]]
[ADDITIVE]

Argumentos

ListaArquivoÍndice Especifica um ou mais arquivos de índice a serem abertos. Utilize vírgulas


para separar múltiplos arquivos de índice na lista. A lista de arquivo de índice pode conter qualquer
combinação de nomes de arquivo de índice .IDX e .CDX; você não precisa incluir as extensões de
nome de arquivo a menos que outro arquivo .IDX ou .CDX exista com o mesmo nome.

O primeiro arquivo de índice na lista de arquivo de índice torna-se o arquivo de índice de controle,
o qual controla como os registros são acessados e exibidos. Os registros serão exibidos e acessados
em ordem física de registro se o primeiro arquivo de índice for um arquivo .CDX e SET ORDER
TO TAG não tiver sido emitido.

? Exibe a caixa de diálogo Abrir da qual você pode abrir um único arquivo .IDX.

ORDER nNumeroÍndice Especifica uma marca ou um arquivo de índice de controle. A expressão


numérica nNumeroÍndice especifica os arquivos de índice como aparecem na lista de arquivo de
índice.

Os arquivos .IDX são numerados primeiro na ordem em que aparecem na lista de arquivo de índice.
As marcas no arquivo .CDX estrutural (se existir um) são numeradas na ordem em que foram
criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes são numerados na
ordem em que foram criadas. Consulte “ SET ORDER” para maiores explicações sobre a
numeração das marcas e arquivos de índice.

Se nNumeroÍndice for 0, os registros na tabela serão exibidos e acessados em ordem física de


registro, mas os arquivos de índice permanecem abertos. ORDER 0 permite atualizar os arquivos de
índice abertos enquanto acessa registros em ordem física. ORDER sem argumentos adicionais é
idêntico a ORDER 0.

O Visual FoxPro gera uma mensagem de erro se nNumeroÍndice for maior que o número de marcas
de arquivos .IDX e arquivo .CDX.

ORDER NomeArquivoÍndiceIDX Especifica um arquivo .IDX como o arquivo de índice de


controle.

ORDER [TAG] NomeMarca [OF NomeArquivoCDX] Especifica uma marca (NomeMarca) de um


arquivo .CDX para ser a marca de controle. O nome da marca pode ser do arquivo .CDX estrutural
ou de qualquer arquivo .CDX independente aberto.
Se as marcas com o mesmo nome existirem em arquivos .CDX independentes abertos, a marca
estará em uso por OF NomeArquivoCDX para especificar o arquivo .CDX.

ASCENDING | DESCENDING Especifica se os registros da tabela são exibidos e acessados em


ordem ascendente ou descendente. As marcas ou arquivos de índice não são alterados em qualquer
caminho; apenas a ordem em que os registros são exibidos e acessados é alterada. Inclua a cláusula
ASCENDING ou DESCENDING imediatamente após a cláusula ORDER.

ADDITIVE Especifica que os arquivos de índice abertos anteriormente, exceto para um índice
composto estrutural, são deixados abertos quando você emite SET INDEX para abrir arquivos ou
um arquivo de índice adicional para uma tabela. Sem ADDITIVE, os arquivos abertos
anteriormente seriam fechados.

Comentários

Os registros em uma tabela que têm arquivos ou um arquivo de índice aberto podem ser exibidos e
acessados em uma ordem determinada por um dos arquivos de índice. Ambos os arquivos de índice
simples (.IDX) e composto (.CDX) podem ser abertos com SET INDEX. Se uma tabela tiver um
arquivo .CDX estrutural, o arquivo será aberto automaticamente quando a tabela é aberta.

Apenas um arquivo .IDX (o arquivo de índice de controle) ou marca de um arquivo .CDX (a marca
de controle) controla a ordem em que os registros da tabela serão exibidos ou acessados. Certos
comandos (SEEK, por exemplo) utilizam a marca ou arquivo de índice de controle para procurar
registros.

A emissão de SET INDEX TO sem argumentos adicionais fecha todos os arquivos de índice abertos
(exceto um arquivo .CDX estrutural) na Área de trabalho atual.

SET KEY, comando

Especifica o acesso para um intervalo de registros com base em suas chaves de índice.

Sintaxe

SET KEY TO [eExpressao1 | RANGE eExpressão2 [, eExpressão3]]


[IN cAliasTabela | nÁreaTrabalho]

Argumentos
eExpressao1 Permite acesso a um conjunto de registros com chaves de índice idênticas.
eExpressao1 é um valor de chave de índice simples. Todos os registros com chaves de índice que
correspondem a eExpressao1 estão acessíveis.

RANGE eExpressao2 [, eExpressao3] Permite acesso a um conjunto de registros com chaves de


índice que está incluído em um intervalo de valores de chaves de índice. eExpressao2 permite
acesso a registros com chaves de índice iguais a ou maiores que eExpressao2. eExpressao3
(precedido por vírgula) permite acesso a registros com chaves de índice iguais ou menores que
eExpressao3. A inclusão de ambos eExpressao2 e eExpressao3 (separados por uma vírgula) permite
acesso a registros com chaves de índice iguais a ou maiores que eExpressao2 e iguais ou menores
que eExpressao3.

Por exemplo, a tabela CUSTOMER inclui um campo de caractere que contém códigos postais. Se a
tabela é indexada no campo de código postal, você pode especificar um intervalo de códigos postais
com SET KEY.

No exemplo a seguir, apenas registros com códigos postais que estão incluídos no intervalo de
40000 a 43999 aparecem em uma janela Pesquisar:

CLOSE DATABASES
USE customer
SET ORDER TO postalcode
SET KEY TO RANGE '40000', '43999'
BROWSE

IN cAliasTabela | nÁreaTrabalho Permite acesso a um intervalo de registros para uma tabela


aberta em uma Área de trabalho específica. cAliasTabela especifica o alias da Área de trabalho e
nÁreaTrabalho especifica o número da Área de trabalho. Se nenhuma tabela tiver o alias
especificado, o Visual FoxPro irá gerar uma mensagem de erro. Se você omitir o alias e número da
Área de trabalho, SET KEY irá operar na tabela na Área de trabalho atual.

Comentários

Utilize SET KEY para limitar o intervalo de registros que você pode acessar em uma tabela. A
tabela deve ser indexada e o valor ou valores da chave de índice deve ser o mesmo tipo de dados
como a expressão de índices ou a marca principal.

Emita SET KEY TO sem quaisquer argumentos adicionais para restaurar o acesso a todos os
registros na tabela.

SET KEYCOMP, comando

Controla a navegação do pressionamento do Visual FoxPro.


Sintaxe

SET KEYCOMP TO DOS | WINDOWS | MAC

Comentários

SET KEYCOMP determina os pressionamentos e as combinações de pressionamentos utilizados


para se mover através da interface do Visual FoxPro acessando controles como botões, caixas de
listagem, menus e assim por diante. O efeito de SET KEYCOMP depende do controle.

Utilize SET KEYCOMP quando você quiser utilizar pressionamentos que lhe são familiares.

Para navegar no Windows ou Macintosh utilizando pressionamentos do MS-DOS, emita

SET KEYCOMP TO DOS

Você pode especificar a opção DOS ou WINDOWS (padrão).

Você pode especificar uma definição de inicialização SET KEYCOMP em seu arquivo de
configuração do Visual FoxPro, CONFIG.FPW. Por exemplo, a linha a seguir, quando colocada em
seu arquivo de configuração, tem o efeito de SET KEYCOMP TO DOS:

KEYCOMP = DOS

Esta seção descreve como as opções DOS e WINDOWS afetam o Visual FoxPro.

Botões padrão

DOS O botão padrão em uma caixa de diálogo está focalizado; sua aparência não se altera. É
selecionado quando você pressiona CTRL+ENTER.
WINDOWS O botão padrão em uma caixa de diálogo pode alterar a aparência quando você
move entre controles. Pode estar escurecido ou estar focalizado (é cercado por uma borda em
negrito) para indicar que é o padrão atual.
É selecionado quando você pressiona ENTER. Pressionando sempre ENTER realiza-se a ação de
botão padrão.

Para uma ilustração de como o botão padrão altera a aparência em uma caixa de diálogo, emita SET
KEYCOMP TO WINDOWS, escolha Abrir do menu Arquivo e, em seguida, pressione TAB para
se mover através da caixa de diálogo Abrir.

Teclas de acesso
DOS Uma tecla de acesso para um controle é uma tecla única. Se você não estiver em um
controle que tem teclado (uma caixa de combinação ou uma caixa de listagem), poderá pressionar a
tecla de acesso para selecioná-lo.
WINDOWS Uma tecla de acesso para um controle pode ser uma tecla única ou uma combinação
de teclas. Se o controle atual tiver teclado (uma caixa de combinação ou uma caixa de listagem),
você poderá pressionar ALT mais a tecla de acesso para selecionar o controle. Para selecionar
outros controles, você pode pressionar a tecla de acesso ou ALT mais a tecla de acesso.

Caixas de combinação

DOS Quando uma caixa de combinação está focalizada, você pode abri-la pressionando ENTER
ou BARRA DE ESPAÇO. O teclado em uma caixa de combinação não estará disponível até que a
caixa de combinação seja aberta.
WINDOWS Quando uma caixa de combinação está focalizada, você pode abri-la pressionando
BARRA DE ESPAÇO, ALT+SETA PARA CIMA ou ALT+SETA PARA BAIXO . O teclado em
uma caixa de combinação estará disponível quando a caixa de combinação estiver focalizada e
aberta.
Por exemplo, uma caixa de combinação selecionada contém uma lista de unidades de disco
disponíveis. Se as unidades de disco A, B e C estiverem disponíveis e a unidade de disco B estiver
exibido atualmente, você pode selecionar a unidade de disco C sem abrir a caixa de combinação
pressionando a C ou a tecla SETA PARA BAIXO . A unidade de disco C é selecionada e você
passa para o próximo controle.

Botões Opção

DOS Pressione a tecla TAB quando um grupo de botões de opção é selecionado para se mover
entre os botões de opção.
WINDOWS Pressione a tecla TAB quando um grupo de botões de opção é selecionado para se
mover dos botões de opção ao próximo controle.
Para se mover entre um conjunto de botões de opção, pressione as teclas SETA PARA CIMA e
SETA PARA BAIXO .

Janela Pesquisar

DOS Um campo não é selecionado na entrada dentro do campo.


WINDOWS Um campo é selecionado automaticamente na entrada dentro do campo.
SET LOCK, comando

Ativa ou desativa bloqueio automático do arquivo em certos comandos.

Sintaxe

SET LOCK ON | OFF

Argumentos

ON Especifica que os comandos listados abaixo automaticamente bloqueiam a tabela quando são
executados. Isto fornece acesso somente para leitura a outros usuários na rede e assegura que você
está utilizando os dados mais atuais.

OFF (Padrão) Ativa acesso compartilhado de tabelas com comandos listados abaixo. Utilize SET
LOCK OFF se você não precisa das informações mais atuais de uma tabela.

Comentários

O Visual FoxPro não coloca um bloqueio em um arquivo quando executa comandos que requerem
acesso somente para leitura para uma tabela. Estes comandos incluem:

Comandos

AVERAGE JOIN (ambos os arquivos)


CALCULATE LIST
COPY TO LABEL
COPY TO ARRAY REPORT
COUNT SORT
DISPLAY (com um escopo) SUM
INDEX TOTAL

Enquanto eles são executados, estes comandos não alteram o conteúdo de uma tabela e o acesso à
tabela é disponível para outros usuários na rede. Assim, a tabela pode ser alterada enquanto você
está executando um destes comandos. Por exemplo, você pode começar a imprimir um relatório
utilizando REPORT antes de outro usuário alterar um registro incluído no relatório. Seu relatório
agora contém informações desatualizadas.
SET LOCK é projetado para a sessão atual de dados.

SET LOGERRORS, comando

Determina se o Visual FoxPro envia as mensagens de erro de compilação para um arquivo de texto.

Sintaxe

SET LOGERRORS ON | OFF

Argumentos

ON (Padrão) Especifica que um arquivo de resumo de mensagem de erro de compilação será


criado com o mesmo nome do programa compilado e com uma extensão .ERR. Se um arquivo de
resumo com o mesmo nome já existir, ele será sobrescrito.

OFF Especifica que um arquivo de resumo de mensagem de erro de compilação não é criado
quando um programa é compilado.
Comentários

Utilize SET LOGERRORS para salvar as mensagens de erro de compilação para um arquivo de
texto quando os programas são compilados.

Se existir um arquivo de resumo com o mesmo nome do programa compilado e se o programa


compila sem erro, o arquivo de resumo será excluído.

SET MARGIN, comando

Define a margem esquerda da impressora e afeta todas as saídas direcionadas para a impressora.

Sintaxe

SET MARGIN TO nColunas

Argumentos

nColunas Especifica a margem esquerda em colunas. O padrão é 0 colunas; o máximo é 256.

Comentários

Se você utilizar SET MARGIN para ajustar a margem esquerda, o valor especificado com SET
MARGIN será armazenado para a variável do sistema _PLOFFSET. Você pode também definir a
margem esquerda ao armazenar um valor diretamente para _PLOFFSET.

O valor da variável do sistema _LMARGIN também afeta a definição de margem esquerda.

Importante A definição da margem esquerda especificada em SET MARGIN não afeta relatórios
criados com o Criador de relatórios e assim executados com REPORT. Embora _PLOFFSET seja
ajustada durante a execução de um relatório criado com o Criador de relatórios, a mesma é
redefinida para seu valor original após executado o relatório. A definição de Margem esquerda na
caixa de diálogo Configuração de página do Criador de relatórios determina o deslocamento a partir
da borda esquerda do papel. Selecione Configuração de página no menu Arquivo para exibir a caixa
de diálogo Configuração de página quando o Criador de relatórios estiver aberto.
SET MARK TO, comando

Especifica um delimitador para a exibição de expressões de data.

Sintaxe

SET MARK TO [cDelimitador]

Argumentos

cDelimitador Especifica um caractere a ser utilizado como o delimitador de data.

Comentários

SET MARK TO especifica o caractere que separa o mês, dia e ano em datas exibidas.

Utilize SET MARK TO sem cDelimitador para redefinir o delimitador para barra padrão ( / ).

SET MARK TO é projetado para a sessão de dados atual.


SET MEMOWIDTH, comando

Especifica a largura exibida dos campos Memo e expressões de caractere.

Sintaxe

SET MEMOWIDTH TO nColunas

Argumentos

nColunas Especifica uma largura entre 8 e 1024 colunas. A largura padrão para saída é de 50
colunas. Se você emitir SET COMPATIBLE ON ou SET COMPATIBLE DB4, a largura padrão
será alterada para 80 colunas. Se você especificar um valor para nColunas maior que 1024, a largura
será definida para 1024.

Comentários

SET MEMOWIDTH especifica a largura da saída enviada para a janela principal do Visual FoxPro
ou para uma janela definida pelo usuário por comandos, como ? | ??, DISPLAY ou LIST. Afeta a
largura da saída de campos Memo e expressões de caractere maiores que 1024 caracteres. Também
afeta os valores retornados pelas funções ATCLINE( ), ATLINE( ), MEMLINE( ) e MLINE( ).

Observe que para ? e ?? a largura exibida não irá exceder 256 caracteres.

Se a saída for direcionada para a janela principal do Visual FoxPro, a largura da saída será
determinada pela fonte para a janela principal do Visual FoxPro. Se a saída for direcionada para
uma janela definida pelo usuário, a largura da mesma será determinada pela fonte para a janela
definida pelo usuário.

SET MEMOWIDTH é projetado para a sessão de dados atual.


SET MESSAGE, comando

Define uma mensagem a ser exibida na janela principal do Visual FoxPro ou na barra de status
gráfico ou especifica a localização das mensagens para as barras de menus definidas pelo usuário e
comandos de menu.

Sintaxe

SET MESSAGE TO [cTextoMensagem]


– ou –
SET MESSAGE TO [nLinha [LEFT | CENTER | RIGHT]]
– ou –
SET MESSAGE WINDOW [NomeJanela]

Argumentos

TO [cTextoMensagem] Especifica a mensagem a ser exibida.

TO [nLinha [LEFT | CENTER | RIGHT]] Especifica a localização das mensagens na janela


principal do Visual FoxPro. NLinha especifica a linha em que as mensagens são exibidas. Se
nLinha for 0, nenhuma mensagem será exibida.

LEFT, CENTER e RIGHT especificam a localização da tela horizontal de mensagens.

O Visual FoxPro ignora uma localização de mensagem especificada com SET MESSAGE, quando
a barra de status gráfico é exibida.

WINDOW [NomeJanela] Especifica a janela na qual as mensagens são exibidas. Para remover
uma mensagem da janela e exibi-la na tela, emita SET MESSAGE WINDOW.

Comentários

SET MESSAGE permite que você crie uma mensagem. Também permite que seja especificado
onde as mensagens criadas com DEFINE BAR, DEFINE MENU, DEFINE PAD ou DEFINE
POPUP serão exibidas.
Por padrão, as mensagens serão colocadas na última linha da janela principal do Visual FoxPro, se a
barra de status com base em caractere for exibida. Se a barra de status gráfico for exibida, as
mensagens serão colocadas na barra de status.

A linha de SET MESSAGE será redefinida para a última linha da janela principal do Visual
FoxPro, sempre que SET DISPLAY for emitido.

SET MESSAGE TO sem argumentos coloca as mensagens na barra de status gráfico.

SET MULTILOCKS, comando

Determina se você pode bloquear múltiplos registros com a utilização de LOCK( ) ou RLOCK( ).

Sintaxe

SET MULTILOCKS ON | OFF

Argumentos

ON Permite que você tente bloquear um conjunto de registros. Inclui um conjunto de números de
registro em LOCK( ) ou RLOCK( ) para tentar bloquear múltiplos registros.

OFF (Padrão) Permite que você tente bloquear um único registro com LOCK( ) ou RLOCK( ).

Comentários

Quando uma tabela estiver aberta para utilização compartilhada em uma rede, você pode tentar
bloquear mais do que um registro em um arquivo de tabela. A definição de SET MULTILOCKS
determina se você pode tentar bloquear tanto um único registro quanto um conjunto de registros. Os
registros podem ser bloqueados com a função LOCK( ) ou RLOCK( ).
Comutando SET MULTILOCKS de ON (ativado) para OFF (desativado) ou de OFF para ON emite
de forma implícita UNLOCK ALL — todos os bloqueios de registro em todas as áreas de trabalho
são liberados.

SET MULTILOCKS é projetado para a sessão de dados atual.

MULTILOCKS deve estar ON antes que a utilização do buffer de tabela ou linha possa ser ativada
com CURSORSETPROP( ). Consulte CURSORSETPROP( ) para obter informações adicionais
sobre a utilização do buffer de tabela e linha.

Se você selecionar a caixa de verificação Ativar utilização do buffer de dados na caixa de diálogo
Propriedades da área de trabalho (que é exibida quando você seleciona o botão Propriedades na
janela Sessão de dados), MULTILOCKS será automaticamente definido a ON para a sessão de
dados atual. Entretanto, ao limpar a caixa de verificação Ativar utilização do buffer de dados não irá
definir MULTILOCKS a OFF para a sessão de dados atual.

Para obter maiores informações sobre como bloquear o arquivo e registro e sobre compartilhamento
de tabelas em uma rede, consulte as funções LOCK( ) e RLOCK( ) e o capítulo 17, “Programando
para acesso compartilhado”, no Guia do Desenvolvedor.

SET NEAR, comando

Determina onde o ponteiro do registro estará posicionado, depois que FIND ou SEEK não
conseguir procurar por um registro.

Sintaxe

SET NEAR ON | OFF

Argumentos

ON Posiciona o ponteiro do registro no registro mais próximo correspondente, caso uma busca de
registro utilizando FIND ou SEEK não seja bem sucedida. Com esta definição, RECNO( ) retorna o
número de registro do registro mais próximo correspondente, FOUND( ) retorna falso (.F.) e EOF( )
retorna falso (.F.).
OFF (Padrão) Posiciona o ponteiro do registro ao final da tabela caso uma busca de registro,
utilizando FIND ou SEEK, não seja bem sucedida. Com esta definição, RECNO( ) retorna o
número de registros na tabela mais 1, FOUND( ) retorna falso (.F.) e EOF( ) retorna verdadeiro
(.T.).

Comentários

Uma busca não é bem sucedida quando nenhum registro atinge os critérios de busca.

A emissão de RECNO( ), com um argumento 0, retornará o número de registro do registro mais


próximo correspondente, caso uma busca não seja bem sucedida, independente da definição de SET
NEAR.

SET NEAR é projetado para a sessão de dados atual.

SET NOTIFY, comando

Ativa e desativa a exibição de determinadas mensagens do sistema.

Sintaxe
SET NOTIFY ON | OFF

Argumentos

ON (Padrão) Ativa a exibição de determinadas mensagens do sistema.

OFF Desativa a exibição de determinadas mensagens do sistema.

Comentários

Os exemplos de mensagens do sistemas que são afetadas por SET NOTIFY são:

· “ Expressão válida” na caixa de diálogo Construtor de expressões.


· “ Execução cancelada”, que aparece quando a execução do programa é cancelada.

As mensagens do sistema são exibidas na barra de status gráfica (não nas baseadas em caracteres)
na parte inferior da janela principal do Visual FoxPro.
SET NULLDISPLAY, comando

Especifica o texto exibido para valores nulos.

Sintaxe

SET NULLDISPLAY TO [cTextoNulo]

Argumentos

cTextoNulo Especifica o texto que é exibido para valores nulos. Se cTextoNulo for omitido, o
texto do valor nulo padrão, .NULL., será recuperado e exibido para os valores nulos.

Comentários

Como padrão, o Visual FoxPro exibe .NULL. para valores nulos em objetos, janelas Pesquisar,
saída DISPLAY, saída LIST e assim por diante. Utilize SET NULLDISPLAY para trocar o texto do
valor nulo padrão por uma outra seqüência de caracteres. SET NULLDISPLAY troca o texto do
valor nulo padrão por todos os objetos para os quais a propriedade NullDisplay é uma seqüência
vazia.

Utilize a propriedade NullDisplay para trocar o texto do valor nulo padrão por uma outra seqüência
de caracteres de um objeto individual.

SET ODOMETER, comando

Especifica o intervalo entre relatórios do contador de registros dos comandos que processam
registros.

Sintaxe

SET ODOMETER TO [nRegistros]


Argumentos

TO [nRegistros] Especifica o intervalo entre relatórios em número de registros. O valor de


nRegistros pode variar de 1 a 32.767 registros. O valor padrão é 100 registros.

Comentários

Utilize SET ODOMETER para alterar o intervalo no qual os comandos exibem informações sobre o
número de registros processados.

Por exemplo, COPY TO exibe o número de registros que são copiados em um novo arquivo
enquanto o comando está sendo executado. O contador de registros pode ser desativado emitindo
SET TALK OFF.

SET OPTIMIZE, comando

Ativa e desativa a otimização Rushmore.

Sintaxe

SET OPTIMIZE ON | OFF

Argumentos

ON (Padrão) Ativa a otimização Rushmore.

OFF Desativa a otimização Rushmore.

Comentários

O Visual FoxPro utiliza uma tecnologia denominada Rushmore para otimizar a recuperação de
dados. Os comandos de tabela que suportam uma cláusula FOR utilizam a tecnologia Rushmore
para aprimorar seu desempenho. Quando um comando otimizável é emitido, Rushmore determina
que registros correspondem ao critério FOR. O comando é executado nos registros da tabela que
correspondem ao conjunto de registros Rushmore.

Em casos raros, você deve desativar a otimização Rushmore. Se um comando que se beneficia da
otimização Rushmore modificar chaves de índices de uma consulta, o conjunto de registros
Rushmore poderá ficar desatualizado. É possível desativar a otimização Rushmore para garantir que
você tenha as informações mais atuais da tabela.
Você pode utilizar SET OPTIMIZE para ativar ou desativar globalmente a tecnologia Rushmore.
Cada comando que utiliza Rushmore possui uma cláusula NOOPTIMIZE que pode ser incluída
para desativar a otimização Rushmore para o comando.

Para obter maiores informações, consulte “Conhecendo a tecnologia Rushmore” no capítulo 15,
“Otimizando aplicativos” no Guia do Desenvolvedor.

Estes são os comandos cujo desempenho é otimizado pela tecnologia Rushmore:

Comando

AVERAGE INDEX
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
[nNúmeroÍndice | NomeArquivoÍndiceIDX | [TAG] NomeMarca [OF NomeArquivoCDX]
[IN nÁreaTrabalho | cAliasTabela]
[ASCENDING | DESCENDING]]

Argumentos

nNúmeroÍndice Especifica o número da marca ou do arquivo de índice controlador.


nNúmeroÍndice refere-se aos arquivos de índice como estão relacionados em USE ou SET INDEX.
Arquivos .IDX abertos são numerados primeiro na ordem em que eles aparecem em USE ou SET
INDEX. As marcas no arquivo estrutural .CDX (caso exista alguma) são numeradas na ordem em
que foram criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes abertos são
numeradas na ordem em que foram criadas.

O exemplo abaixo ilustra como diferentes tipos de arquivo de índice e marcas são numerados. (Os
nomes dos arquivos são apenas ilustrativos e não existem necessariamente.) Uma tabela
denominada video.dbf é aberta com três índices (
title.idx, costs.cdx e rating.idx) na primeira Área de trabalho com este comando:

USE video INDEX title.idx, costs.cdx, rating.idx IN 1

A tabela video possui um arquivo de índice composto estrutural (video.cdx) com duas marcas,
NUMBERSOLD e YEARSOLD. O arquivo .CDX estrutural é aberto automaticamente quando a
tabela video é aberta.

Uma vez que os arquivos .IDX são numerados primeiro, emita SET ORDER TO 1 para tornar
title.idx o índice de controle e SET ORDER TO 2 para tornar rating.idx o índice de controle:

SET ORDER TO 1
Controlling index: C:\FOX30\TITLE.IDX
SET ORDER TO 2
Controlling index: C:\FOX30\RATING.IDX

As marcas em video.cdx são 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, são 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

nNúmeroÍndice também pode ser 0. Caso você emita SET ORDER TO 0, todos os arquivos de
índices permanecerão abertos e serão atualizados quando os registros forem adicionados, excluídos
ou modificados. Entretanto, os registros na tabela são exibidos e acessados na ordem de número de
registro e não em uma ordem indexada. Emitir SET ORDER TO sem argumentos adicionais é o
mesmo que emitir SET ORDER TO 0.
Se nNúmeroÍndice for maior que o número de arquivos .IDX e que as marcas de arquivos.CDX , o
Visual FoxPro gerará uma mensagem de erro.

NomeArquivoÍndiceIDX Especifica um arquivo .IDX como o arquivo de índice controlador.

[TAG] NomeMarca [OF NomeArquivoCDX] Especifica uma marca de um arquivo .CDX como a
marca controladora. O nome da marca pode ser um arquivo .CDX estrutural ou qualquer um
arquivo .CDX independente aberto.

Se houver nomes de marcas idênticos em arquivos .CDX independentes abertos, utilize OF


NomeArquivoCDX para especificar o arquivo .CDX que contém a marca.

Observação O arquivo .IDX tem precedência se houver nomes de marca e arquivo .IDX
duplicados.

IN nÁreaTrabalho | cAliasTabela Designa um arquivo ou marca de índice controlador para uma


tabela aberta em uma outra Área de trabalho que não a selecionada atualmente. nÁreaTrabalho
especifica o número da Área de trabalho e cAliasTabela especifica o alias para uma tabela.

ASCENDING | DESCENDING Exibe e permite acesso aos registros de tabela em ordem


ascendente ou descendente. A inclusão de ASCENDING ou DESCENDING não altera o arquivo de
índice ou marca de índice.

Comentários

Uma tabela pode ter diversos arquivos de índices abertos simultaneamente. Mas, apenas um arquivo
de índice simples (.IDX) (o arquivo de índice controlador) ou uma marca de um arquivo de índice
composto (.CDX) (a marca controladora) determina a ordem na qual os registros de uma tabela são
exibidos ou acessados. SET ORDER permite que você designe o arquivo ou marca de índice
controladores. Determinados comandos (SEEK, por exemplo) utilizam o arquivo de índice ou
marca controladores para pesquisar registros.

É possível abrir arquivos de índices com uma tabela incluindo a cláusula INDEX no comando USE.
Se uma tabela tiver um arquivo .CDX estruturado associado, este arquivo será aberto
automaticamente com a tabela. Após a tabela ter sido aberta, você pode abrir e fechar arquivos de
índices da tabela que utiliza SET INDEX.

Como padrão, SET ORDER designa o índice ou a marca controladores da tabela aberta na Área de
trabalho selecionada no momento.

SET PALETTE, comando

Especifica se a paleta de cores padrão do Visual FoxPro será utilizada.


Sintaxe

SET PALETTE ON | OFF

Argumentos

ON (Padrão) Restaura a paleta de cores padrão do Visual FoxPro.

OFF Substitui a paleta de cores padrão do Visual FoxPro pela paleta de cores dos gráficos .BMP e
dos objetos OLE.

Comentários

Os objetos OLE e os gráficos .BMP podem conter as paletas de cores que determinam como os
gráficos e objetos aparecem quando são exibidos. A paleta de cores do primeiro gráfico ou objeto
exibido é utilizada para todos os gráficos e objetos subseqüentes. Uma vez que a paleta de cores é
utilizada para todos os gráficos e objetos, as cores de alguns dos gráficos e objetos podem ser
alterados de uma forma inesperada.

A paleta de cores padrão do Visual FoxPro é designada para aprimorar a aparência da exibição dos
vários gráficos .BMP e objetos OLE.

SET PATH, comando

Especifica um caminho para pesquisas de arquivos.

Sintaxe

SET PATH TO [Caminho]

Argumentos

TO [Caminho] Especifica os diretórios que você deseja que o Visual FoxPro procure. Utilize
vírgula ou ponto-e- vírgula para separar os diretórios.

Observação O Visual FoxPro não reconhecerá o nome do caminho adequadamente se um nome de


disco ou de diretório contiver um ponto de exclamação (!).
Em todas as plataformas FoxPro, as funções que retornam as informações sobre o caminho, tais
como CURDIR( ), DBF( ) e SYS(2003), utilizam as convenções de nomenclatura de caminhos do
MS-DOS em seus valores de retorno.

Comentários

Emita SET PATH TO sem Caminho para restaurar o caminho ao diretório padrão. Utilize SET
DEFAULT para especificar o diretório padrão e CURDIR( ) para retornar o diretório padrão atual.

SET PATH não é projetado para a sessão de dados atual, as alterações feitas no caminho padrão
utilizando o comando SET PATH afetam todas as sessões de dados.

SET PDSETUP, comando

Carrega uma configuração do driver da impressora ou apaga uma configuração do driver da


impressora atual.

Sintaxe

SET PDSETUP TO [[cConfiguraçãoDriverImpressora [, Parâmetro1[, Parâmetro2 ...]]]


[WITH Parâmetro3 [, Parâmetro4 ...]]]
Argumentos

cConfiguraçãoDriverImpressora Especifica o nome da configuração do driver da impressora a ser


carregado.

Quando você carrega uma configuração do driver da impressora, o nome da configuração é


armazenado na variável do sistema _PDSETUP e em uma matriz da variável especial, _PDPARMS,
pode ser criada. (_PDPARMS é discutida em detalhes na cláusula WITH neste tópico.)

Se o nome da configuração do driver da impressora que você especificou com


cConfiguraçãoDriverImpressora não existir em seu arquivo de recursos, o aplicativo da
configuração do driver da impressora atual é executado de forma que você possa criar uma
configuração com este nome. Se o aplicativo de configuração do driver da impressora atual for
GENPD.APP, a caixa de diálogo Edição da configuração da impressora aparecerá para que você
possa criar a configuração.

Se o nome da configuração iniciar com um travessão (-), o programa _GENPD não será executado,
mas o nome após o travessão será armazenado em _PDSETUP.

Se SET PDSETUP TO for emitido sem cConfiguraçãoDriverImpressora, a configuração do driver


da impressora atual será apagada, a seqüência vazia será armazenada em _PDSETUP e a matriz
_PDPARMS será apagada da memória.

Parâmetro1 [, Parâmetro2 ...] Especifica qualquer número de parâmetros opcionais. Estes


parâmetros são passados para o aplicativo da interface de configuração da impressora e podem ser
de qualquer tipo (caractere, numérico, lógico e assim por diante). A primeira linha do aplicativo da
interface de configuração da sua impressora deve ser uma instrução LPARAMETERS ou
PARAMETERS para aceitar os parâmetros passados a partir do SET PDSETUP.

Se você estiver utilizando GENPD.APP, não inclua esses parâmetros opcionais. GENPD.APP não
aceita os parâmetros passados a partir do SET PDSETUP e, portanto, a inclusão deles irá gerar um
erro.

WITH Parâmetro3 [, Parâmetro4 ...] Cria uma matriz _PDPARMS especial de impressora. Cada
parâmetro especificado com Parâmetro3, Parâmetro4 e assim por diante torna-se um elemento em
_PDPARMS. O primeiro parâmetro (Parâmetro3) é armazenado no primeiro elemento de
_PDPARMS, o segundo parâmetro (Parâmetro4) é armazenado no segundo elemento e assim por
diante. Esses parâmetros podem ser de qualquer tipo (caractere, numérico, lógico e outros).

Se GENPD.APP está sendo utilizado, qualquer parâmetro que você incluir será sobrescrito pelo
aplicativo.

Comentários

No Visual FoxPro, uma configuração do driver da impressora é utilizada quando você imprime
relatórios baseados em caracteres no FoxPro para MS-DOS.
Uma configuração do driver da impressora consiste de uma combinação de definições, incluindo o
programa e as informações do driver da impressora, tais com orientação de página, tamanho de
fonte e estilo de fonte padrão, margens etc. As configurações do driver da impressora são
armazenadas no arquivo de recursos do FoxPro para MS-DOS, FOXUSER.DBF, e pode ser criadas
interativamente e receber um nome na caixa de diálogo Edição da configuração da impressora.

Uma configuração do driver da impressora também pode ser carregada ou apagada com a variável
do sistema _PDSETUP.

Quando você emite SET PDSETUP, o aplicativo da interface da configuração da impressora atual é
executado. O aplicativo da interface recebe o nome da configuração do driver da impressora
incluído em SET PDSETUP. O aplicativo de interface também pode ser especificado com a
variável do sistema _GENPD. O aplicativo da interface padrão é GENPD.APP, aplicativo da
interface da configuração da impressora incluído com o FoxPro for MS-DOS.

SET POINT, comando

Determina o caractere de casa decimal utilizado na exibição das expressões numéricas e monetárias.

Sintaxe

SET POINT TO [cCaractereCasaDecimal]

Argumentos

cCaractereCasa Decimal Especifica o caractere para a casa decimal.

Comentários

Utilize SET POINT para alterar o padrão da casa decimal que é o ponto. (.). Emita SET POINT TO
sem cCaractereCasa Decimal para redefinir o casa decimal para uma vírgula. Embora você possa
definir a casa decimal exibida como um outro caractere, deve utilizar a vírgula para indicar casa
decimal nos cálculos.

SET POINT é projetado para a sessão de dados atual.


SET POINT, exemplo do comando

gnX = 1.25
gcNewPoint = '_'
SET POINT TO gcNewPoint
? gnX
SET POINT TO && Redefina a casa decimal para uma vírgula(,).
? gnX

SET PRINTER, comando

Ativa ou desativa a saída para a impressora ou rotear a saída para um arquivo, porta ou impressora
de rede.

Sintaxe

SET PRINTER ON [PROMPT] | OFF


– or –
SET PRINTER FONT cNomeFonte [, cTamanhoFonte]
[STYLE cEstiloFonte]
– or –
SET PRINTER TO [NomeArquivo [ADDITIVE] | NomePorta]
– or –
SET PRINTER TO [DEFAULT | NAME NomeImpressoraWindows]
– or –
SET PRINTER TO NAME \\NomeServidor\NomeImpressora

Argumentos

ON [PROMPT] Ativa a saída para a impressora. A saída formatada com @ ... SAY não será
roteada para a impressora quando SET PRINTER estiver definido como ON. Utilize SET DEVICE
TO PRINTER para rotear a saída de @ ... SAY para a impressora.

É possível incluir PROMPT para exibir uma caixa de diálogo antes que a impressão seja iniciada.
Nessa caixa de diálogo, é possível ajustar os parâmetros da impressora. O driver de impressora
instalado atualmente determina que parâmetros da impressora podem ser ajustados.

OFF (Padrão) Desativa a saída para a impressora.

FONT cFonteNome [, cTamanhoFonte] Especifica a fonte padrão para a saída da impressora.


cFonteNome especifica o nome da fonte e cTamanhoFonte especifica o tamanho do ponto. Por
exemplo, o comando a seguir especifica a fonte Courier de 16 pontos como a fonte padrão da
impressora:

SET PRINTER FONT 'Courier', 16

Se a fonte especificada não estiver disponível, uma fonte com características semelhantes fará a
substituição.

STYLE cEstiloFonte Especifica o estilo padrão da fonte para a saída da impressora. Se a cláusula
STYLE for omitida, um estilo de fonte normal será utilizado.

Se o estilo da fonte especificado não estiver disponível, um estilo de fonte com características
semelhantes fará a substituição.

Os estilos de fonte que você pode especificar com cEstiloFonte são os seguintes:

Caractere Estilo de fonte

B Negrito
I Itálico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado

É possível incluir mais de um caractere para especificar um combinação de estilos de fonte. Por
exemplo, o comando abaixo especifica a fonte Courier Negrito Itálico de 16 pontos:

SET PRINTER FONT 'Courier', 16 STYLE 'BI'

TO [NomeArquivo [ADDITIVE] | NomePorta] Especifica um arquivo ou porta para aonde a saída


será direcionada.

No Visual FoxPro, em vez disso, utilize SET PRINTER TO NAME para especificar uma
impressora.

NomeArquivo especifica um nome de arquivo para o qual a saída será direcionada. Se ADDITIVE
for incluído, a saída será anexada ao conteúdo existente do arquivo. Se ADDITIVE for omitido, o
conteúdo existente do arquivo será sobrescrito.

NomePorta envia a saída para uma outra impressora local.

TO [DEFAULT | NAME NomeImpressoraWindows] Envia a saída de impressora para a


impressora padrão do Windows ou para uma impressora específica do Windows. Os nomes das
impressoras do Windows estão armazenados em WIN.INI.

É possível utilizar GETPRINTER( ) ou APRINTERS( ) para determinar os nomes das impressoras


instaladas atualmente. Por exemplo, o comando a seguir exibe a caixa de diálogo Configuração de
impressora do Windows e faz da impressora selecionada aquela para a qual a saída impressa será
direcionada:

SET PRINTER TO NAME GETPRINTER( )

TO NAME \\NomeServidor\NomeImpressora Aceita somente pelo Windows NT. Direciona a


saída da impressora para uma impressora de rede.

NomeServidor é o nome da rede atribuído ao seu servidor de impressão. Este nome é atribuído pelo
administrador da rede e deve ser exclusivo.

NomeImpressora é o nome atribuído à impressora e é também atribuído pelo administrador da rede.

Comentários
Utilize SET PRINTER TO com os argumentos especificados para direcionar a saída para um
arquivo, uma porta para uma outra impressora local ou uma impressora de rede.

Utilize SET PRINTER TO sem um argumento para redefinir a saída para o utilitário de impressora
padrão MS-DOS PRN.

Quando a saída é direcionada para uma impressora da rede, a saída é impressa ou reunida em um
spooler de impressão até que um novo comando SET PRINTER seja emitido. Para obter maiores
informações sobre a impressão em rede, consulte a documentação da rede.

SET READBORDER, comando

Determina se são colocadas bordas em torno das caixas de texto criadas com @ ... GET.

Sintaxe

SET READBORDER ON | OFF

Argumentos

ON Coloca uma borda de linha simples em torno de todas as caixas de texto criadas com
@ ... GET. Se SET READBORDER for definido como ON quando a primeira caixa de texto for
criada, todas as caixas de texto subseqüentes criadas no mesmo nível READ também terão bordas.

OFF (Padrão) Especifica que não será colocada uma borda em torno das caixas de texto criadas
com @ ... GET. Se SET READBORDER for definido como OFF quando a primeira caixa de texto
for criada, todas as caixas de texto subseqüentes criadas no mesmo nível READ não terão bordas.

Comentários

SET READBORDER especifica se devem ser colocadas bordas de linha única em torno das caixas
de texto criadas com @ ... GET.

SET READBORDER, exemplo do comando

No exemplo abaixo, as primeiras três caixas de texto criadas com @ ... GET têm bordas. A terceira
caixa de texto tem uma borda, embora SET READBORDER tenha sido SET como OFF antes de ter
sido criada. A quarta caixa de texto não tem borda, uma vez que READBORDER foi SET como
OFF e está incluída em um outro READ proveniente das três primeiras caixas de texto.

SET READBORDER ON
@ 2,2 GET gnW DEFAULT 1 && 1st READ
@ 4,2 GET gnX DEFAULT 1 && 1st 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 alterações feitas nos registros por outros
usuários da rede e com que freqüência isto é feito.

Sintaxe

SET REFRESH TO nSegundos1 [, nSegundos2]

Argumentos

TO nSegundos1 [, nSegundos2] Especifica se as atualizações são feitas e com que freqüência.


nSegundos1 especifica o número de segundos entre as atualizações na janela de edição de memo ou
na janela Pesquisar. nSegundos1 pode ter um valor entre 0 e 3.600; o valor padrão é 0 segundos.
Quando nSegundos1 for um valor diferente de zero e outros usuários alterarem os registros que
você está visualizando, aqueles registros serão atualizados quando o intervalo de atualização se
esgotar. Os registros que você está visualizando não serão atualizados se nSegundos1 for 0.

O Visual FoxPro armazena em buffer as partes das tabelas na memória da sua estação de trabalho.
nSegundos2 especifica com que freqüência esses buffers de dados locais são atualizados com os
dados atuais da rede. nSegundos2 é o número de segundos entre atualizações do buffer de dados.
Você pode especificar um valor entre 0 e 3.600; o valor padrão é 5. Os buffers nunca serão
atualizados se nSegundos2 for definido como 0. LOURDES
Se você especificar um valor para nSegundos1 diferente de 0 mas não incluir nSegundos2,
nSegundos2 é definido com o mesmo valor que nSegundos1. No entanto, nSegundos2 será definido
como 5 se você especificar 0 para nSegundos1 e não incluir nSegundos2.

O desempenho pode ser melhorado aumentando-se o valor de nSegundos2.

Comentários

Como as tabelas podem ser abertas para uso compartilhado em uma rede, é possível que os registros
que você está visualizando na janela Pesquisar estejam sendo editados por outros usuários na rede.

SET REFRESH afeta os registros exibidos na janela Pesquisar abertos com BROWSE, CHANGE
ou EDIT. Os campos Memo abertos para edição na janela Pesquisar também são atualizados.

SET REFRESH também pode ser atualizado para especificar com que freqüência os dados que
utilizam buffer localmente em sua estação de trabalho são atualizados.

SET RELATION OFF, comando

Interrompe um relacionamento estabelecido entre a tabela pai na Área de trabalho selecionada


atualmente e a tabela filho associada.

Sintaxe

SET RELATION OFF INTO nÁreaTrabalho | cAliasTabela

Argumentos

INTO nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho da tabela filho ou o


alias de tabela.
SET RELATION, comando

Estabelece um relacionamento entre duas tabelas abertas.

Sintaxe

SET RELATION TO
[eExpressão1 INTO nÁreaTrabalho1 | cAliasTabela1
[, eExpressão2 INTO nÁreaTrabalho2 | cAliasTabela2 ...]
[IN nÁreaTrabalho | cAliasTabela]
[ADDITIVE]]

Argumentos

eExpressão1 Especifica a expressão relacional que estabelece um relacionamento entre as tabelas


pai e filho. A expressão relacional é, geralmente, a expressão índice do índice de controle da tabela
filho.

O índice para a tabela filho pode ser um índice (.IDX ) de entrada única, um índice composto
(.CDX) estrutural de várias entradas ou um índice composto independente. Se o índice for
composto, especifique a marca de índice adequada para ordenar a tabela filho. SET ORDER pode
ser utilizado para especificar a marca de índice que ordena a tabela filho.

Por exemplo, considere as tabelas customer e orders descritas na sessão Comentários abaixo.
Suponha que a tabela filho orders tenha sido indexada ou ordenada no número do cliente com este
comando:

SET ORDER TO TAG cust_id

Para relacionar as tabelas customer e orders no número de cliente, selecione a Área de trabalho que
contém a tabela pai customer ou inclua a cláusula IN para especificar a Área de trabalho ou o alias
da tabela pai e emita SET RELATION, especificando a expressão de índice com a seguinte
expressão relacional:

SET RELATION TO cust_id INTO orders

A tabela filho deve ser indexada a menos que a expressão relacional seja numérica. O Visual
FoxPro exibe uma mensagem de erro se você emitir SET RELATION com uma expressão
relacional não-numérica e se a tabela filho não estiver ordenada com um índice.

Se eExpressão1 for numérica, ela é avaliada quando o ponteiro de registro na tabela pai for movido.
O ponteiro de registro na tabela filho é movido para o número do registro eExpression1.

INTO nÁreaTrabalho1 | cAliasTabela1 Especifica o número da Área de trabalho (


nÁreaTrabalho1) ou do alias de tabela (cAliasTabela1) da tabela filho.

eExpressão2 INTO nÁreaTrabalho2 | cAliasTabela2 ... Especifica uma expressão relacional


(eExpressã0o2) e uma tabela filho ou tabelas para estabelecer um relacionamento adicional entre a
tabela pai e as tabelas filho. A partir de um único comando SET RELATION, é possível criar
relações múltiplas entre uma única tabela pai e diversas tabelas filho. Anteceda cada relação por
uma vírgula.

nÁreaTrabalho2 especifica um número da Área de trabalho e cAliasTabela2 especifica um alias da


tabela para a tabela filho.

IN nÁreaTrabalho Especifica a Área de trabalho da tabela pai.

IN cAliasTabela Especifica o alias da tabela pai.

A cláusula IN permite que você crie um relacionamento sem primeiro selecionar a Área de trabalho
da tabela pai. Se nÁreaTrabalho e cAliasTabela forem omitidos, a tabela pai deverá ser aberta na
Área de trabalho atualmente selecionada.

ADDITIVE Conserva todos os relacionamentos existentes na Área de trabalho atual e cria um


relacionamento específico. Se você omitir ADDITIVE, quaisquer relacionamentos na Área de
trabalho atual serão interrompidos e o relacionamento especificado será criado.

Comentários

Antes de estabelecer um relacionamento, uma tabela (a tabela pai) precisa ser aberta e a outra tabela
(a tabela filho) precisa ser aberta em uma outra Área de trabalho.

As tabelas relacionadas possuem um campo comum. Por exemplo, vamos supor que uma tabela
chamada customer contenha as informações do cliente. Ela tem campos para nome, endereço e um
número de cliente exclusivo. Uma segunda tabela chamada orders contém as informações de ordem.
Também possui um campo para o número do cliente, juntamente com os campos para datas e
informações de expedição.
SET RELATION relaciona essas duas tabelas nos seus campos comum — o campo Número do
cliente. Para definir a relação, a tabela filho deve ser indexada no campo comum. Depois de
definida a relação, sempre que você mover o ponteiro do registro para um registro com um
determinado número de cliente na tabela pai customer, o ponteiro de registro na tabela filho orders
se move para o registro que tenha o mesmo número de cliente. Se não for encontrado um registro
correspondente na tabela filho, o ponteiro de registro na tabela filho é posicionado no final da
tabela.

Emita SET RELATION TO sem nenhum argumento para remover todos os relacionamentos na
Área de trabalho selecionada atualmente. SET RELATION OFF pode ser utilizado para remover
um relacionamento pai-filho específico.

SET REPROCESS, comando

Especifica quantas vezes e por quanto tempo o Visual FoxPro tenta bloquear um arquivo ou registro
após uma tentativa malsucedida de bloqueio.

Sintaxe

SET REPROCESS TO nTentativas [SECONDS] | TO AUTOMATIC

Argumentos
TO nTentativas [SECONDS] Especifica o número de vezes que o Visual FoxPro tenta bloquear
um registro ou um arquivo após uma tentativa malsucedida inicial. O valor padrão é 0, o valor
máximo é 32.000.

SECONDS especifica que o Visual FoxPro tenta bloquear um arquivo ou registro por nTentativas
segundos. Estará disponível somente quando nTentativas for maior que zero.

Por exemplo, se nTentativas for 30, o Visual FoxPro tentará bloquear um registro ou arquivo até 30
vezes. Se você incluir, também, SECONDS (SET REPROCESS TO 30 SECONDS), o Visual
FoxPro tenta bloquear continuamente um registro ou arquivo por até 30 segundos.

Uma mensagem do sistema (“Esperando pelo bloqueio ... “) aparece se SET STATUS estiver
definido como ON.

Se uma rotina ON ERROR estiver ativa e se as tentativas de bloquear um registro ou arquivo


através de um comando forem malsucedidas, a rotina ON ERROR será executada. No entanto, se
uma função tentar o bloqueio, uma rotina ON ERROR não será executada e a função retornará falso
(.F.).

Se a rotina ON ERROR não estiver ativa, um comando tentará bloquear o registro ou arquivo e o
bloqueio não puser ser efetuado, um alerta apropriado aparecerá (por exemplo, “Registro em uso
por outra pessoa”). Se uma função tentar fazer o bloqueio, o alerta não será exibido e a função
retornará falso (.F.).

Se nTentativas for 0 (o valor padrão) e você emitir um comando ou função que tentar bloquear um
registro ou arquivo, o Visual FoxPro tentará bloquear o registro ou arquivo indefinidamente. O
Visual FoxPro exibe a mensagem do sistema, “Tentando bloquear... Para cancelar, pressione
Cancel,” enquanto tenta bloquear o registro ou arquivo. O bloqueio será colocado e a mensagem do
sistema apagada se o registro ou arquivo se tornar disponível para bloqueio enquanto você aguarda.
Se uma função conseguir fazer o bloqueio, a função retornará verdadeiro (.T.).

Se você pressionar ESC em resposta à mensagem do sistema, aparecerá um alerta apropriado (por
exemplo, “Registro em uso por outra pessoa”). Se uma função conseguir fazer o bloqueio, o alerta
não será exibido e a função retornará falso (.F.).

Se a rotina ON ERROR estiver ativa e um comando estiver tentando bloquear o registro ou arquivo,
a rotina ON ERROR terá precedência sobre as tentativas adicionais de bloquear o registro ou
arquivo. A rotina ON ERROR será imediatamente executada. O Visual FoxPro não tentará
bloqueios de registros ou arquivos adicionais e não exibirá a mensagem do sistema.

Se nTentativas for –1, o Visual FoxPro tentará bloquear o registro ou arquivo indefinidamente.
Você não poderá cancelar as tentativas de bloqueio pressionando a tecla ESC e uma rotina ON
ERROR não será executada.

Definir nTentativas como -2 é o mesmo que utilizar a cláusula TO AUTOMATIC.

O Visual FoxPro exibe a mensagem do sistema “Esperando bloqueio ... ” somente se SET STATUS
estiver definido como ON.

Se outro usuário tiver colocado um bloqueio no registro ou arquivo que você está tentando
bloquear, você deverá esperar até que o usuário libere o bloqueio.
TO AUTOMATIC Especifica as tentativas do Visual FoxPro para bloquear o registro ou arquivo
indefinidamente (o mesmo que definir nTentativas como –2). Esta cláusula é semelhante a definir
nTentativas como -1, com a diferença que inclui o recurso de abandonar a tentativa de bloqueio de
um registro ou arquivo.

A mensagem do sistema “Tentando bloquear ... Pressione Escape para cancelar” aparece enquanto o
Visual FoxPro tenta bloquear o registro ou arquivo. O bloqueio será colocado e a mensagem do
sistema será apagada se o registro ou arquivo se tornar disponível para bloqueio enquanto você
aguarda. Se uma função for utilizada para colocar um bloqueio, a função retornará verdadeiro (.T.).

Se a rotina ON ERROR não estiver ativa e você pressionar ESC em resposta à mensagem do
sistema, aparecerá um alerta adequado (por exemplo, “Registro em uso por outra pessoa”). Se uma
função tentar fazer um bloqueio, o alerta não será exibido e a função retornará falso (.F.).

Se uma rotina ON ERROR estiver ativa e ESC for pressionado, a rotina ON ERROR será
executada. Se uma função tentar fazer um bloqueio, uma rotina ON ERROR não será executada e a
função retornará falso (.F.).

Para obter maiores informações sobre bloqueio de registros e arquivos e compartilhamento tabelas
em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado” no Guia do
Desenvolvedor.

Comentários

A primeira tentativa de bloquear um registro ou arquivo nem sempre é bem-sucedida.


Freqüentemente, um registro ou arquivo está bloqueado por outro usuário na rede. SET
REPROCESS determina se o Visual FoxPro fará tentativas adicionais para bloquear o registro ou
arquivo quando a tentativa inicial não for bem-sucedida. Você pode especificar, inclusive, quantas
vezes serão feitas tentativas adicionais e por quanto tempo. Uma rotina ON ERROR afeta a maneira
como as tentativas de bloqueio malsucedidas são manipuladas.

SET REPROCESS é projetado para a sessão de dados atual.

SET SAFETY, comando


Determina se o Visual FoxPro exibe uma caixa de diálogo antes de sobrescrever um arquivo
existente ou se regras de tabela ou de campo, valores padrão e mensagens de erro são avaliados
quando as alterações são feitas no Criador de tabelas ou com ALTER TABLE.

Sintaxe

SET SAFETY ON | OFF

Argumentos

ON (Padrão) Especifica que uma caixa de diálogo será exibida antes que você sobrescreva um
arquivo existente. A caixa de diálogo dá a você a opção de sobrescrever um arquivo existente.

Para o Criador de tabelas, especifica que regras de tabela ou campo, valores padrão e mensagens de
erro serão avaliados quando você salvar alterações em uma estrutura da tabela. A validação de
dados ocorre para regras de validação modificadas ou novas depois de você ter salvado as
alterações da estrutura de tabela. Se uma regra de validação contém uma função definida pelo
usuário (UDF, User Defined Function), a UDF não é avaliada e a regra de validação é ignorada.

Em ALTER TABLE, tabela ou regras de campo, valores padrões e mensagens de erro são avaliadas
quando ALTER TABLE altera a estrutura da tabela. A validação dos dados ocorre para as regras de
validação novas ou modificadas quando ALTER TABLE altera a estrutura da tabela. Se uma regra
de validação contém uma UDF (função definida pelo usuário), a UDF não é avaliada e a regra de
validação é ignorada.

OFF Especifica que uma caixa de diálogo não será exibida antes que um arquivo existente seja
sobrescrito.

Para o Criador de tabelas, especifica que regras de tabela ou de campo, valores padrão e mensagens
de erro não são avaliados quando as alterações são salvas em uma estrutura da tabela. Entretanto, a
validação de dados ocorre para as regras de validação novas ou modificadas depois de você salvar
as alterações da estrutura de tabela.

Em ALTER TABLE, regras de tabela de campo, valores padrão e mensagens de erro não são
avaliados quando ALTER TABLE altera a estrutura da tabela. A validação dos dados não ocorre
para regras de validação novas ou modificadas após ALTER TABLE alterar a estrutura da tabela.

Comentários

SET SAFETY é projetado para a sessão de dados atuais.


SET SECONDS, comando

Especifica se são exibidos segundos na parte reservada à em um valor DataHora.

Sintaxe

SET SECONDS ON | OFF

Argumentos

ON (Padrão) Especifica que os segundos são exibidos nos valores de DataHora.

OFF Especifica que os segundos não são exibidos nos valores de DataHora.

Comentários

SET SECONDS é projetado para a sessão de dados atuais.

SET SECONDS, exemplo do comando

O exemplo a seguir demonstra o efeito da definição de SET SECONDS sobre o valor de hora
retornado por DATETIME( ). Quando SET SECONDS for ON, o valor de hora será exibido com a
parte dos segundos. Quando SET SECONDS for OFF, o valor de hora será exibido sem a parte dos
segundos.

SET SECONDS 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, títulos ou item de menu para menus definidos pelo usuário ou
menu do sistema Visual FoxPro.

Sintaxe

SET SKIP OF MENU NomeBarraMenus1 lExpressão1


– Ou –
SET SKIP OF PAD NomeTituloMenu OF NomeBarraMenus2 lExpressão2
– Ou –
SET SKIP OF POPUP NomeMenu1 lExpressão3
– Ou –
SET SKIP OF BAR nNúmeroItemMenu | NomeItemSistema
OF NomeMenu2 lExpressão4

Argumentos

MENU NomeBarraMenus1 lExpressão1 Ativa ou desativa a barra de menus do sistema Visual


FoxPro ou a definida pelo usuário criada com DEFINE MENU. Por exemplo, a barra de menus do
sistema Visual FoxPro, _MSYSMENU, pode ser desativada com este comando:

SET SKIP OF MENU _MSYSMENU .T.

Pode ser ativada com este comando:

SET SKIP OF MENU _MSYSMENU .F.


PAD NomeTituloMenu OF NomeBarraMenus2 lExpressão2 Ativa ou desativa um título de menu
do sistema Visual FoxPro ou um título de menu definido pelo usuário criado com DEFINE PAD.
Por exemplo, o título de menu Editar do Visual FoxPro pode ser desativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .T.

O título de menu pode ser ativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .F.

POPUP NomeMenu1 lExpressão3 Ativa ou desativa um menu do sistema Visual FoxPro ou um


menu definido pelo usuário criado com DEFINE POPUP. Por exemplo, o menu Editar do Visual
FoxPro pode ser desativado com este comando:

SET SKIP OF POPUP _MEDIT .T.

O menu pode ser ativado com este comando:

SET SKIP OF POPUP _MEDIT .F.

BAR nNúmeroItemMenu | NomeItemSistema OF NomeMenu2 lExpressão4 Ativa ou desativa um


item de menu em um menu do sistema Visual FoxPro ou item de menu definido pelo usuário criado
com DEFINE BAR. Por exemplo, o comando Novo no menu Arquivo do Visual FoxPro pode ser
desativado com este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .T.

onde NomeItemSistema especifica o comando de menu _MFI_NEW, NomeMenu2 especifica o


menu _MFILE e lExpressão4 especifica a expressão lógica .T.. O comando de menu pode ser
ativado com este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .F.

Utilize nNúmeroItemMenu para especificar um item de menu criado com DEFINE BAR.
Comentários

Para obter uma listagem completa dos nomes internos dos componentes de menu do sistema Visual
FoxPro, consulte “Nomes do menu de sistema” Você pode também utilizar SYS(2013) para retornar
os nomes internos de menu do sistema.

Caso a expressão lógica lExpressão for avaliada em verdadeiro (.T.), o menu, sua barra, seu nome
ou item incluído em SET SKIP OF será desativado, aparecerá obscuro e não poderá ser selecionado.
Se lExpressão for avaliada em falso (.F.), o menu, barra, nome ou item de menu será ativado e
poderá ser selecionado.

SET SKIP, comando

Cria um relacionamento um-para-n entre tabelas.

Sintaxe
SET SKIP TO [AliasTabela1 [, AliasTabela2] ...]

Argumentos

TO AliasTabela1 [, AliasTabela2] ... Especifica os aliases de várias tabelas filho. São utilizados
para criar um relacionamento um-para-n com uma tabela pai. Utilize vírgulas para separar os
aliases. Em comandos que suportam um escopo (DISPLAY, LIST e assim por diante), os registros
na tabela pai são repetidos para cada registro correspondente na tabela filho.

Utilize SET SKIP TO sem argumentos adicionais para remover o relacionamento um-para-n da
tabela pai aberta na Área de trabalho selecionada no momento. Qualquer relacionamento um-para-
um permanecerá em efeito; eles podem ser removidos com SET RELATION TO.

Comentários

Utilizando SET RELATION, você poderá estabelecer relações entre tabelas abertas em diferentes
Áreas de trabalho. Quando o ponteiro de registro for movido na tabela pai, o ponteiro de registro na
tabela filho se moverá para o primeiro registro correspondente. A expressão relacional em SET
RELATION determina para onde o ponteiro de registro se moverá na tabela filho. Uma relação um-
para-um será criada — para cada registro na tabela pai, o ponteiro de registro se moverá para o
primeiro registro correspondente na tabela filho. Se um registro correspondente não puder ser
localizado na tabela filho, o ponteiro de registro na tabela filho se moverá para o final da tabela.

Freqüentemente, uma tabela filho irá conter vários registros que correspondem a um registro na
tabela pai. SET SKIP permite que você estabeleça um relacionamento um-para-n entre um registro
na tabela pai e vários na tabela filho. Quando você percorre a tabela pai, o ponteiro de registro
permanece no mesmo registro pai até que o ponteiro de registro se mova através de todos os
registros relacionados na tabela filho.

Em primeiro lugar, para estabelecer um relacionamento um-para-n, crie o relacionamento entre a


tabela pai e a tabela filho com SET RELATION. Em seguida, emita SET SKIP para criar um
relacionamento um-para-n.

SET SKIP, exemplo do comando

O exemplo a seguir localiza todas as ocorrências em três tabelas, onde os itens no primeiro campo
são os mesmos. Isto é realizado ao procurar a primeira tabela que contém uma relação com uma
segunda e qual tabela tem uma relação com uma terceira. A primeira tabela executa então SET
SKIP para as outras duas tabelas. Um SET SKIP na segunda tabela não tem efeito. Afeta somente a
tabela sendo procurada (substituída, etc.). No exemplo, oito correspondências são encontradas.

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 obtém dois pulos.
&& Caso contrário, apenas quatro grupos de três registros
&& seriam listados.
SCAN ALL && Haverá oito grupos de três: quatro a(s) e quatro b(s)
? Parent.Val, Child1.Val, Child2.Val
ENDSCAN
SET SPACE, comando

Determina se um espaço será exibido entre campos ou expressões quando o comando ? ou ?? é


utilizado.

Sintaxe

SET SPACE ON | OFF

Argumentos

ON (Padrão) Insere um espaço entre campos e expressões.

OFF Remove todos os espaços entre campos ou expressões e os executa juntamente.

SET SPACE, exemplo do comando

gcX = 'John'
gcY = 'Smith'
SET SPACE OFF
? gcX,gcY
SET SPACE ON
? gcX,gcY

SET STEP, comando

Abre a janela Rastrear e suspende a execução do programa para depuração.

Sintaxe

SET STEP ON

Argumentos

ON Abre a janela Rastrear e suspende a execução do programa.

Comentários

SET STEP é utilizado para depurar programas. Você pode inserir SET STEP ON em um programa
em um ponto desejado para executar comandos individuais.

Para obter informações sobre a janela Rastrear, consulte o tópico da “ Janela Rastrear” e o capítulo
14, “Testando e depurando aplicativos”, no Guia do desenvolvedor.

Você pode passar parâmetros a um programa e, em seguida, rastrear sua execução seguindo estes
passos:

1. Abra a janela Rastrear.


2. A partir do menu Programa da janela Rastrear, selecione Abrir e o programa a ser rastreado.
3. Defina um ponto de interrupção na primeira linha executável do programa.
4. Na janela Comando, EXECUTE o programa COM os parâmetros.
SET SYSFORMATS, comando

Especifica se as definições do sistema Visual FoxPro for Windows são atualizadas com as
definições atuais do Windows.

Sintaxe

SET SYSFORMATS ON | OFF

Argumentos

ON Especifica se as definições do sistema Visual FoxPro são atualizadas quando as definições do


sistema do Windows são alteradas. SET SYSFORMAT ON é idêntico a escolher a caixa de
verificação Utilizar as definições do sistema na guia International da caixa de diálogo Opções.
Observe que a emissão de SET SYSFORMAT ON altera a definição de SET DATE para SHORT.

As definições são utilizadas durante a sessão de dados atual ou se emitidas durante a sessão de
dados padrão, pela duração da sessão do Visual FoxPro.

OFF (Padrão) Especifica se as definições do sistema Visual FoxPro não são atualizadas quando as
definições do sistema do Windows são alteradas. As definições padrões do Visual FoxPro não são
restauradas.
Comentários

As definições do sistema do Windows são especificadas na opção Internacional do Painel de


controle do Windows.
Quando SET SYSFORMATS estiver ON (ativo), os seguintes comandos SET poderão ser
utilizados para anular as definições atuais do sistema. Entretanto, alterar as definições do sistema do
Windows quando SET SYSFORMATS estiver ON anulará estes comandos SET:

· SET CENTURY
· SET CURRENCY
· SET DATE
· SET DECIMALS
· SET HOURS
· SET MARK TO
· SET POINT

Quando o Visual FoxPro for inicializado, as definições do sistema Visual FoxPro serão as
definições padrões desses comandos SET. Para utilizar as definições do sistema do Windows
quando o Visual FoxPro é inicializado, coloque a seguinte linha no seu arquivo de configuração
CONFIG.FPW do Visual FoxPro:

SYSFORMATS = ON

SET SYSFORMATS é projetado para a sessão atual de dados.

SET SYSMENU, comando

Ativa ou desativa a barra de menus do sistema Visual FoxPro durante a execução do programa e
permite a sua reconfiguração.

Sintaxe

SET SYSMENU ON | OFF | AUTOMATIC


| TO [ListaMenu]
| TO [ListaTituloMenu]
| TO [DEFAULT] | SAVE | NOSAVE

Argumentos
ON Ativa a barra de menus principal do Visual FoxPro durante a execução do programa quando o
Visual FoxPro espera pela entrada do teclado durante os comandos BROWSE, READ e MODIFY
COMMAND.

OFF Desativa a barra de menus principal do Visual FoxPro durante a execução do programa.

AUTOMATIC Faz com que a barra de menus principal do Visual FoxPro se torne visível durante
a execução do programa. A barra de menus é acessível e os itens de menu são ativados e
desativados conforme apropriado pelo comando atual.

AUTOMATIC é a definição padrão.

TO [ListaMenu]
TO [ListaTituloMenu] Especifica um subconjunto de menus ou títulos de menu para a barra de
menus principal do Visual FoxPro. A lista de título de menu e menu pode conter qualquer
combinação de menus ou títulos de menu separados por vírgulas. Os nomes internos para os títulos
de menu e menus são listados em Nomes de menus do sistema.

Por exemplo, o seguinte comando remove todos os menus da barra de menus principal do Visual
FoxPro exceto os menus Arquivo e Janela:

SET SYSMENU TO _MFILE, _MWINDOW

Utilize RELEASE BAR para especificar os itens de menu disponíveis nos menus.

TO [DEFAULT] Restaura a barra se menus principal para a sua configuração padrão. Caso a barra
de menus principal ou seus menus tiverem sido modificados, emita SET SYSMENU TO
DEFAULT para restaurá-los. Você pode especificar uma configuração padrão com SET
SYSMENU SAVE.

SAVE Faça com que o sistema de menu atual se torne a configuração padrão. Caso o sistema de
menu tiver sido modificado antes da emissão de SET SYSMENU SAVE, você poderá restaurar a
configuração anterior ao emitir SET SYSMENU TO DEFAULT.

NOSAVE Redefine o sistema de menu para o menu do sistema Visual FoxPro padrão. Entretanto,
o menu do sistema Visual FoxPro padrão não será visualizado até que você emita SET SYSMENU
TO DEFAULT.

Comentários

SET SYSMENU controla a barra de menus principal do Visual FoxPro durante a execução do
programa e permite que você remova seletivamente os títulos de menu e menus do sistema de menu
principal do Visual FoxPro e restaure-os para o mesmo.

A emissão de SET SYSMENU TO sem argumentos adicionais desativa a barra de menus principal
do Visual FoxPro.
SET TALK, comando

Determina se o Visual FoxPro exibe os resultados dos comandos.

Sintaxe

SET TALK ON | OFF | WINDOW [NomeJanela] | NOWINDOW

Argumentos

ON (Padrão) Permite que a conversação seja enviada para a janela principal do Visual FoxPro,
para a janela de mensagens do sistema, para a barra de status gráfico ou para a janela definida pelo
usuário. Se SET TALK for definido a OFF e for então alterado para ON, a conversação será
direcionada para a mesma localização que foi enviada antes da emissão de SET TALK OFF.

OFF Evita que a conversação seja enviada para a janela principal do Visual FoxPro, para a janela
de mensagens do sistema, para a barra de status gráfico ou para a janela definida pelo usuário.
WINDOW [NomeJanela] NomeJanela especifica uma janela definida pelo usuário para a qual a
conversação é direcionada. Você deve criar a janela definida pelo usuário antes de direcionar a
conversação à mesma. A conversação será direcionada para a janela do sistema Visual FoxPro caso
a janela especificada não existir.

NOWINDOW Direciona a conversação para a janela principal do Visual FoxPro.

Comentários

Algumas tabelas que processam comandos retornam informações ou “conversação”, sobre o status
enquanto são executados. Estes comandos incluem:

Comandos

APPEND FROM PACK


AVERAGE REINDEX
CALCULATE REPLACE
COPY TO SELECT - SQL
COUNT SORT
DELETE SUM
INDEX TOTAL

A conversação pode ser direcionada para a janela principal do Visual FoxPro, para a barra de status
gráfico ou para a janela definida pelo usuário. A conversação pode também ser desativada.
SET TALK relatando o intervalo pode ser especificado com SET ODOMETER. O valor padrão
para SET ODOMETER é 100. Observe que a velocidade de execução poderá ser degradada quando
SET TALK for definido a ON, porque a janela principal do Visual FoxPro ou a janela definida pelo
usuário deverá ser freqüentemente atualizada. Caso você apenas necessite do número total de
registros processados por um comando, você poderá emitir SET TALK OFF e exibir a variável do
sistema _TALLY toda vez que o comando finalize a execução.

SET TALK é projetado para a sessão de dados atual.

SET TEXTMERGE DELIMITERS, comando

Especifica os delimitadores de mesclagem de textos.

Sintaxe

SET TEXTMERGE DELIMITERS


[TO cDelimitadorEsquerdo [, cDelimitadorDireito]]
Argumentos

TO cDelimitadorEsquerdo [, cDelimitadorDireito] Especifica os delimitadores. Se você especificar


apenas um delimitador com cDelimitadorEsquerdo, os delimitadores esquerdo e direito serão
definidos para cDelimitadorEsquerdo. Se você especificar os dois delimitadores com
cDelimitadorEsquerdo e cDelimitadorDireito, o delimitador esquerdo será definido para
cDelimitadorEsquerdo e o delimitador direito será definido para cDelimitadorDireito.

Comentários

Com SET TEXTMERGE DELIMITERS, você pode especificar um conjunto de delimitadores de


mesclagem de textos em vez dos delimitadores padrões, que correspondem a divisas (<< e >>). Os
delimitadores atuais podem ser exibidos com DISPLAY STATUS.

Se você emitir SET TEXTMERGE DELIMITERS sem qualquer argumento adicional, os


delimitadores padrões serão restaurados.

Para obter maiores informações sobre delimitadores de mesclagem de textos, consulte SET
TEXTMERGE.
SET TEXTMERGE, comando

Ativa ou desativa a avaliação de campos, variáveis, elementos de matriz, funções ou expressões que
são envolvidas por delimitadores de mesclagem de textos e permite que você especifique o
resultado de mesclagem de textos.

Sintaxe

SET TEXTMERGE
[ON | OFF]
[TO [NomeArquivo] [ADDITIVE]]
[WINDOW NomeJanela]
[SHOW | NOSHOW]

Argumentos

ON Especifica que todos os campos, variáveis, elementos de matriz, funções ou expressões


envolvidas por delimitadores de mesclagem de textos serão avaliadas e terão resultado quando
colocadas após \ ou \\ ou entre TEXT e ENDTEXT.

O seguinte exemplo de programa demonstra como o conteúdo da variável gcTodayDate e das


funções DATE( ) e TIME( ) será avaliado quando SET TEXTMERGE estiver definido a ON. A
variável gcTodayDate, DATE( ) e TIME( ) são avaliadas porque estão envolvidas por delimitadores
de mesclagem de textos e SET TEXTMERGE está definido a ON.

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 (Padrão) Especifica se todos os campos, variáveis, elementos de matriz, funções ou
expressões terão literalmente resultado, juntamente com delimitadores de mesclagem de textos
envolvendo-as. Observe a diferença de resultado quando SET TEXTMERGE estiver definido a
OFF no exemplo anterior:

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 padrão. Você
pode também direcionar o resultado a um arquivo de texto ao incluir NomeArquivo. Se um arquivo
com este nome não existir, um novo arquivo será criado. Se um arquivo com o mesmo nome já
existir e SET SAFETY estiver definido a ON, a opção de sobregravar o arquivo existente será dada.

O arquivo de texto será aberto como um arquivo de nível baixo e o seu tratamento de arquivo será
armazenado na variável de memória _TEXT. Você pode fechar o arquivo ao emitir SET
TEXTMERGE TO sem argumentos adicionais. Se o tratamento de arquivo de um outro arquivo
estiver anteriormente armazenado em _TEXT, o arquivo será fechado.

ADDITIVE Especifica se o resultado de \, \\ e TEXT ... ENDTEXT será anexado a uma palavra-
chave de arquivo existente.

Para obter maiores informações sobre como direcionar o resultado de mesclagem de textos a um
arquivo, consulte _TEXT.

WINDOW NomeJanela Especifica se o resultado de \, \\ e TEXT ... ENDTEXT será direcionado


para uma janela definida pelo usuário em vez da janela principal do Visual FoxPro, que corresponde
ao padrão. NomeJanela especifica o nome da janela para a qual você deseja direcionar o resultado.
A janela deve ser criada com DEFINE WINDOW antes que o resultado possa ser enviado para a
mesma. A janela não precisa estar ativa ou visível.

SHOW | NOSHOW (Padrão) SHOW exibe o resultado de mesclagem de textos.

NOSHOW suprime a exibição do resultado de mesclagem de textos.


Como padrão, o resultado gerado por \, \\ e TEXT ... ENDTEXT será enviado para a janela
principal do Visual FoxPro ou para uma janela ativa definida pelo usuário.

Comentários

Os comandos \, \\ e TEXT ... ENDTEXT são utilizados para mesclar textos com os conteúdos das
tabelas, variáveis, elementos de matriz e os resultados de funções e expressões. Se um campo,
variável, elemento de matriz, função ou expressão estiver envolvida por delimitadores de
mesclagem de textos (como padrão, << e >>), a mesma poderá ser avaliada e mesclada com textos.
Esta capacidade de mesclagem de textos permite que você produza letras, programas e modelos que
criam programas.

SET TEXTMERGE determina como os campos, variáveis, elementos de matriz, funções ou


expressões envolvidas por delimitadores de textos serão avaliadas. Também permite que você
direcione um resultado de mesclagem de textos para a janela principal do Visual FoxPro, para uma
janela definida pelo usuário ou para um arquivo.

Os campos Memo podem ser utilizados para aninhar o texto mesclado. Se um campo Memo
contiver nomes de campos, variáveis, elementos de matriz, funções ou expressões envolvidas por
delimitadores de mesclagem de textos atuais, os mesmos serão avaliados e terão resultado com os
conteúdos do campo Memo. O nome do campo Memo deverá também ser envolvido por
delimitadores de mesclagem de textos.
SET TOPIC, comando

Especifica o tópico de Ajuda ou tópicos a serem abertos quando o sistema de Ajuda do Visual
FoxPro é solicitado.

Sintaxe

SET TOPIC TO [cNomeTopicoAjuda | lExpressao]

Argumentos

cNomeTopicoAjuda Especifica o nome do tópico de Ajuda que você deseja exibir.

lExpressao Uma expressão lógica que corresponde à base para que tópicos específicos ou tópicos
sejam abertos.

Comentários

Para obter maiores informações sobre como criar o seu próprio sistema de Ajuda, consulte a Parte 7,
“Criando arquivos de Ajuda”, no Guia do Desenvolvedor.

SET TYPEAHEAD, comando

Especifica o número máximo de caracteres que podem ser armazenados no buffer de teclado.

Sintaxe

SET TYPEAHEAD TO nCaracteres

Argumentos
nCaracteres Especifica o número máximo de caracteres a serem armazenados no buffer de teclado.

Nenhum caractere é mantido no buffer de teclado se você emitir SET TYPEAHEAD TO 0. Essa
instrução desativa INKEY( ) e ON KEY.

Comentários

O buffer de teclado pode armazenar até 32.000 caracteres até que eles estejam prontos para serem
processados. O valor padrão para SET TYPEAHEAD é 20.

SET UDFPARMS, comando

Especifica se o Visual FoxPro passa parâmetros para uma função definida pelo usuário (UDF) por
valor ou por referência.

Sintaxe

SET UDFPARMS TO VALUE | REFERENCE

Argumentos

TO VALUE Especifica que uma variável seja passada a uma função definida pelo usuário por
valor. Quando uma variável é passada por valor, o valor da variável pode ser alterado na função
definida pelo usuário, mas o valor original da variável no programa de chamada não é alterado.

TO REFERENCE Especifica que uma variável seja passada a uma função definida pelo usuário
por referência. Quando uma variável é passada por referência e a função definida pelo usuário altera
o valor da variável passada, o valor original da variável no programa de chamada também é
alterado.

Comentários

Como padrão, as variáveis são passadas para uma função definida pelo usuário por valor. (Variáveis
passadas para procedimentos com DO ... WITH são passadas por referência.)
Você pode forçar que os parâmetros sejam passados a uma UDF por valor ou referência,
independente da definição de SET UDFPARMS. Coloca uma variável entre parênteses para forçar
que uma variável seja passada por valor. Inicie a variável com um símbolo @ para forçar a variável
a ser passada por referência.

Dica Matrizes inteiras podem ser passadas a um procedimento ou a uma função definida pelo
usuário. A matriz inteira é passada se SET UDFPARMS TO REFERENCE for emitida ou se o
nome da matriz for iniciado por @. O primeiro elemento da matriz é passado por valor se SET
UDFPARMS TO VALUE for emitida ou se o nome da matriz estiver entre parênteses. Os
elementos da matriz são sempre passados por valor.

SET UDFPARMS, exemplo do comando

O exemplo a seguir ilustra a diferença entre as variáveis que foram passadas por valor ou por
referência.

*** Passa variável por valor ***


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 variável por referência ***


WAIT 'Pressiona uma tecla para passar por referência' 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 número ***


FUNCTION plusone
PARAMETER gnZ
gnZ = gnZ + 1
RETURN gnZ
*** Fim da UDF ***
O exemplo a seguir mostra variáveis passadas por valor e por referência através do uso dos
parênteses e @, respectivamente:

*** Passa a variável por valor ***


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 variável por referência ***


WAIT 'Pressione uma tecla para passar por referência' 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 número ***

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 são mantidos em um arquivo
de índice.

Sintaxe

SET UNIQUE ON | OFF

Argumentos

ON Especifica que qualquer registro com um valor de tecla de índice duplicado não será incluído
em um arquivo de índice. Somente o primeiro registro com o valor de tecla de índice original será
incluído no arquivo de índice.

OFF (Padrão) Especifica que os registros com valores de teclas de índices duplicados serão
incluídos no arquivo de índice.

Comentários

Um arquivo de índice mantém a definição SET UNIQUE quando REINDEX é emitido. Para obter
maiores informações, consulte “ INDEX” e “REINDEX”.

SET UNIQUE é esperado para a sessão de dados atual.

SET( ), função

Retorna o status dos diversos comandos SET.

Sintaxe

SET(cSETComando [, 1 | 2])

Tipos de retorno

Caractere, Numérico

Argumentos
cSETComando Uma expressão de caracteres que especifica o comando SET para o qual você
deseja que sejam retornadas informações. A definição atual do comando especificado é retornada
como uma seqüência numérica ou de caracteres.

1 | 2 Especifica que serão retornadas informações adicionais sobre o comando SET.

A inclusão desse argumento não retorna informações adicionais para todos os comandos SET,
somente para aqueles listados com 1 e 2 na tabela a seguir.

Comando SET Valor retornado

ALTERNATE ON ou 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 cSímboloMonetário
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 eExpressão2, eExpressão3
KEY, 1 eExpressão2
KEY, 2 eExpressão3
MESSAGE nLinha
MESSAGE, 1 cTextoMensagem
MOUSE ON ou OFF
MOUSE, 1 nSensibilidade
PRINTER ON or OFF
PRINTER, 2 Nome da impressora padrão
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 cNomeTópicoAjuda | lExpressão
TOPIC, 1 nIDContexto
Comentários

A função SET( ) reconhece a abreviação de quatro caracteres para todas as palavras-chave SET do
Visual FoxPro. Por exemplo, STAT e PRIN podem ser utilizadas para SET STATUS e SET
PRINTER, respectivamente.
A função SET( ) é idêntica a SYS(2001).

SETFLDSTATE( ), função

Atribui um valor de campo ou de estado de exclusão a um campo ou registro de uma tabela ou


cursor.

Sintaxe

SETFLDSTATE(cNomeCampo | nNúmeroCampo, nEstadoCampo


[, cAliasTabela | nÁreaTrabalho])

Tipos de retorno

Lógico
Argumentos

cNomeCampo | nNúmeroCampo Especifica o nome ou o número do campo para o qual o status de


edição ou exclusão está atribuído. O número do campo nNúmeroCampo corresponde à posição do
campo na estrutura do cursor local. DISPLAY STRUCTURE ou FIELD( ) pode ser utilizado para
determinar o número de um campo.

Para definir o status de exclusão para o registro, inclua 0 como o número do campo.

nEstadoCampo Especifica um valor para o campo ou status de exclusão. A tabela a seguir lista o
valor de campo ou de estado de exclusão e o status de edição ou exclusão correspondente.

NEstadoCampo Status de edição ou exclusão

1 Campo não foi editado ou o status de exclusão não foi alterado.


2 Campo foi editado ou o status de exclusão foi alterado.
3 Campo de um registro incluído não foi editado ou o status de exclusão não foi alterado para
o registro incluído.
4 Campo de um registro incluído foi editado ou o status de exclusão foi alterado para o
registro incluído.

cAliasTabela Especifica o alias de tabela incluído foi editado ou o status de exclusão foi alterado
para o registro incluído.
nÁreaTrabalho Especifica a Área de trabalho da tabela ou cursor em que o status de edição ou
exclusão é atribuído. O valor de campo ou de status de exclusão é atribuído à tabela ou ao cursor
aberto na Área de trabalho selecionada no momento. Isso ocorre quando SETFLDSTATE( ) é
emitido sem o argumento adicional cAliasTabela ou nÁreaTrabalho.

Comentários

O Visual FoxPro utiliza valores de estado de campo para determinar os campos de tabelas ou
cursores que são atualizados. SETFLDSTATE( ) permite que você controle os campos que o Visual
FoxPro tenta atualizar, independente dos campos que foram editados na tabela ou no cursor.

SETFLDSTATE( ), exemplo da função

O exemplo a seguir demonstra como é possível utilizar SETFLDSTATE( ) para alterar o status do
campo. MULTILOCKS é definido como ON, um requisito para utilização do buffer de tabela. A
tabela customer no banco de dados testdata é aberta e CURSORSETPROP( ) é, em seguida,
utilizado para definir o modo de utilização de buffer para utilização do buffer de tabela otimista (5).
GETFLDSTATE( ) é emitida para exibir um valor (1) correspondente ao estado não modificado do
campo cust_id antes de ser modificado. O campo cust_id é modificado com REPLACE e
GETFLDSTATE( ) é emitido novamente para exibir um valor (2) correspondente ao estado
modificado do campo cust_id.
SETFLDSTATE( ) é utilizado para alterar o status do campo cust_id de volta para 1 (não
modificado). GETFLDSTATE( ) é emitido novamente e exibe 1, correspondente ao estado do
campo cust_id atribuído por SETFLDSTATE( ). TABLEREVERT( ) é utilizado para retornar a
tabela ao seu estado original.

CLOSE DATABASES
SET MULTILOCKS ON && Deve estar ativo para a utilização 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('Utilização do buffer', 5, 'customer') && Ativa a utilização do buffer de
tabela

CLEAR
? GETFLDSTATE('cust_id') && Exibe 1, não modificado
REPLACE cust_id WITH '***' && Altera o conteúdo dos campos

? GETFLDSTATE('cust_id') && Retorna 2, campo modificado


= SETFLDSTATE('cust_id', 1) && Altera o status do campo
? GETFLDSTATE('cust_id') && Exibe 1, não modificado
= TABLEREVERT(.T.) && Descartar todas as alterações de tabela

SHOW MENU, comando

Exibe uma ou mais barras de menus definidas pelo usuário sem ativá-las.

Sintaxe

SHOW MENU NomeBarraMenus1 [, NomeBarraMenus2 ...] | ALL


[PAD NomeTítuloMenu]
[SAVE]

Argumentos

NomeBarraMenus1 [, NomeBarraMenus2 ...] Especifica o nome de uma ou mais barras de menus


para exibição.

ALL Exibe todas as barras de menus atualmente definidas.

PAD NomeTítuloMenu Especifica um título de menu a ser destacado em uma barra de menus.

SAVE Retém uma imagem das barras de menus especificadas sem ativá-las. Para limpar as
imagens das barras de menus, utilize CLEAR.
Comentários

As barras de menus são exibidas, mas não podem ser utilizadas. Antes de exibir as barras de menus,
é preciso criá-las com DEFINE MENU.

SHOW MENU, exemplo do comando

CLEAR
DEFINE MENU mnuExample BAR AT LINE 2
DEFINE PAD padConv OF mnuExample PROMPT '\<Conversões' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD padCard OF mnuExample PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
SHOW MENU mnuExample

SHOW POPUP, comando

Exibe um ou mais menus definidos com DEFINE POPUP sem ativá-los.

Sintaxe

SHOW POPUP NomeMenu1 [, NomeMenu2 ...] | ALL


[SAVE]

Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica o nome de um ou mais menus a serem exibidos.

ALL Exibe todos os menus definidos atualmente.


SAVE Retém uma imagem dos menus especificados, sem ativá-los. As imagens de menus podem
ser apagadas com CLEAR.

Comentários

Os menus são exibidos, mas não podem ser utilizados. Os menus devem primeiro ser criados com
DEFINE POPUP para que possam ser mostrados.

SHOW WINDOW, comando

Exibe uma ou mais janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro sem
ativá-las.

Sintaxe

SHOW WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL | SCREEN


[IN [WINDOW] NomeJanela3]
[REFRESH]
[TOP | BOTTOM | SAME]
[SAVE]

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome de uma ou mais janelas a serem exibidas.

ALL Exibe todas as janelas definidas pelo usuário.

SCREEN Exibe a janela principal do Visual FoxPro quando ela está oculta. Você também pode
escolher Screen, no menu Janela, para exibir a janela principal do Visual FoxPro. É possível ocultar
a janela principal do Visual FoxPro clicando na caixa de fechamento ou então emitindo
DEACTIVATE WINDOW SCREEN, HIDE WINDOW SCREEN ou RELEASE WINDOW
SCREEN.

IN [WINDOW] NomeJanela3 Exibe a janela dentro de uma janela pai especificada com
NomeJanela3. A janela não assume as características da janela pai. Uma janela exibida dentro de
uma janela pai não pode ser movida para fora desta. Se a janela pai for movida, a janela filho
também será.
Primeiramente, a janela pai especificada com NomeJanela3 deve ser criada com DEFINE
WINDOW.

IN SCREEN Exibe explicitamente a janela dentro da janela principal do Visual FoxPro em vez de
colocá-la dentro de outra janela. Como padrão, as janelas são colocadas na janela principal do
Visual FoxPro.

REFRESH Redesenha uma janela Pesquisar. Isto é útil em uma rede, para garantir que você
pesquise a versão mais recente de uma tabela. A Área de trabalho da tabela da janela Pesquisar é
selecionada.

As janelas de edição de memo são atualizadas quando outros usuários de uma rede fazem
alterações no campo Memo. SET REFRESH determina o intervalo entre as atualizações das janelas
de edição de memo. Consulte SET REFRESH para obter informações adicionais sobre como os
dados são atualizados nas tabelas abertas para uso compartilhado em uma rede.

TOP Coloca a janela especificada na frente de todas as outras janelas.

BOTTOM Coloca a janela especificada atrás de todas as outras janelas.

SAME Coloca a janela especificada de volta em uma pilha de janelas, na mesma posição que
ocupava antes de ser desativada. SAME atinge somente as janelas que já foram exibidas
anteriormente e, mais tarde, foram apagadas da janela principal do Visual FoxPro com
DEACTIVATE WINDOW.

SAVE Mantém uma imagem da janela, depois que esta é liberada, na janela principal do FoxPro ou
em outra janela. Normalmente, as janelas são removidas da janela principal do FoxPro após serem
liberadas. A imagem da janela pode ser apagada da janela principal do Visual FoxPro ou de uma
janela com CLEAR.

Comentários

SHOW WINDOW controla a exibição e a colocação das janelas na tela. Se uma janela está oculta
ou não foi ativada, SHOW WINDOW a exibirá sem ativá-la. Se uma ou mais janelas estiverem
sendo exibidas, SHOW WINDOW lhe permite alterar a ordem das janelas de frente para trás.

Você também pode exibir as janelas do sistema, tais como a janela Comando.

No Visual FoxPro, você pode utilizar SHOW WINDOW para exibir as barras de ferramentas do
Visual FoxPro. Utilize HIDE WINDOW para remover uma barra de ferramentas da janela do
FoxPro. As barras de ferramentas devem estar ativadas para que possam ser exibidas. A tabela a
seguir lista os nomes das barras de ferramentas do Visual FoxPro, para serem utilizados em SHOW
WINDOW e em HIDE WINDOW. O nome da barra de ferramentas deverá estar entre aspas.

Nomes de barras de ferramentas

Paleta de cores Layout Criador de relatórios


Criador de banco de dados Visualizar impressão Padrão
Controle de formulários Criador de consultas Criador de visualizações
Criador de formulários Controles de relatório

Para exibir uma janela de sistema, coloque o nome completo dessa janela entre aspas.
Você não pode especificar para onde a saída será direcionada nas janelas definidas pelo usuário
com SHOW WINDOW. Utilize ACTIVATE WINDOW para direcionar a saída para uma janela
definida pelo usuário criada com DEFINE WINDOW.

SHOW WINDOW, exemplo do comando

Neste exemplo, uma janela denominada wOutput1 será criada e exibida. Quando SHOW WINDOW
é utilizado para exibir a janela, a saída não poderá ser direcionada para a janela enquanto esta não
for ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;
CLOSE FLOAT GROW SHADOW ZOOM
SHOW WINDOW wOutput1

SIGN( ), função

Retorna um valor numérico de 1, –1 ou 0 se a expressão numérica especificada resultar em um valor


positivo, negativo ou 0.

Sintaxe

SIGN(nExpressão)

Tipos de retorno

Numérico
Argumentos

nExpressão Especifica a expressão numérica resultante da função SIGN( ). SIGN( ) retorna 1 se


nExpressão resulta em um número positivo, –1 se nExpressão resulta em um número negativo e 0
se nExpressão resultar em 0.

SIGN( ), exemplo da função

STORE 10 TO gnNum1
STORE -10 TO gnNum2
STORE 0 TO gnZero
CLEAR
? SIGN(gnNum1) && Exibe 1
? SIGN(gnNum2) && Exibe -1
? SIGN(gnZero) && Exibe 0

SIN( ), função

Retorna o seno de um ângulo.

Sintaxe

SIN(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica um ângulo cujo seno é retornado por SIN( ). nExpressão pode assumir
qualquer valor e o valor retornado por SIN( ) varia de –1 a 1.

Observação nExpressão é especificado em radianos. Utilize DTOR( ) para converter um ângulo de


graus para radianos. O número de casas decimais exibido por SIN( ) pode ser especificado com SET
DECIMALS.

SIN( ), exemplo da função

CLEAR
? SIN(0) && Exibe 0.00
? SIN(PI( )/2) && Exibe 1.00
? SIN(DTOR(90)) && Exibe 1.00
SIZE POPUP, comando

Altera o tamanho de um menu criado com DEFINE POPUP.

Sintaxe

SIZE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2

Argumentos

NomeMenu Especifica o nome do menu cujo tamanho você deseja alterar.

TO nLinha1, nColuna1 Altera o tamanho de um menu para um tamanho específico. nLinha1 e


nColuna1 especificam, respectivamente, as novas coordenadas de linha e de coluna do canto
inferior direito do menu.

BY nLinha2, nColuna2 Altera o tamanho de um menu com relação ao seu tamanho atual. nLinha2
e nColuna2 especificam a alteração de tamanho do menu em linhas e colunas com relação às
coordenadas atuais de linha e de coluna do canto inferior direito do menu.

Comentários

Se um menu definido pelo usuário tiver sido criado, seu tamanho poderá ser alterado; ele não
precisará estar ativado ou visível.
SIZE POPUP, exemplo do comando

Este exemplo cria um menu contendo arquivos com a extensão .PRG, bem como move, aumenta e
reduz o menu antes de fechá-lo.

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 é possível alterar o tamanho das janelas Comando, Depurar e Rastrear.

TO nLinha1, nColuna1 Altera o tamanho de uma janela para um tamanho específico. nLinha1 e
nColuna1 especificam, respectivamente, as novas coordenadas de linha e de coluna do canto
inferior direito da janela.

BY nLinha2, nColuna2 Altera o tamanho de uma janela com relação ao seu tamanho atual.
nLinha2 e nColuna2 especificam a alteração de tamanho da janela em linhas e colunas com relação
às coordenadas atuais de linha e de coluna do canto inferior direito da janela.

Comentários
Se uma janela definida pelo usuário tiver sido criada, seu tamanho poderá ser alterado; ela não
precisará estar ativada ou visível.

SKIP, comando

Move o ponteiro do registro para frente e para trás em uma tabela.

Sintaxe

SKIP
[nRegistros]
[IN nÁreaTrabalho | cAliasTabela]

Argumentos

nRegistros Especifica o número de registros que serão percorridos pelo ponteiro do registro.

A emissão de SKIP sem nRegistros avançará o ponteiro para o próximo registro. Se nRegistros
resultar em um número positivo, o ponteiro do registro se moverá em direção ao final dos registros
do arquivo nRegistros. Se nRegistros resultar em um número negativo, o ponteiro do registro se
moverá em direção ao começo dos registros do arquivo nRegistros.

Se o ponteiro do registro estiver posicionado sobre o último registro de uma tabela e SKIP for
executado sem nenhum argumento, um valor 1 maior que o número de registros na tabela será
retornado por RECNO( ) e EOF( ) retornará verdadeiro (.T.). Se o ponteiro do registro estiver
posicionado no primeiro registro de uma tabela e SKIP -1 for executado, RECNO( ) retornará 1 e
BOF( ) retornará verdadeiro (.T.).

IN nÁreaTrabalho | cAliasTabela Move o ponteiro do registro em uma tabela dentro de uma Área
de trabalho específica. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela
especifica um alias de tabela ou de Área de trabalho.

Comentários

Se a tabela tiver uma marca de índice de controle mestre ou um arquivo de índice, SKIP moverá o
ponteiro para o registro determinado pela seqüência de índice.

SKIP, exemplo do comando

CLOSE 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( ), função

Determina se um título de menu está ativado ou desativado com SET SKIP OF.

Sintaxe

SKPPAD(cNomeBarraMenus, cNomeTítuloMenu)
Tipos de retorno

Lógico

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus que contém o título de menu.

cNomeTítuloMenu Especifica o nome do título de menu cujo status (ativado ou desativado) é


retornado por SKPPAD( ).

Comentários

SKPPAD( ) retornará verdadeiro (.T.) se o título de menu estiver desativado e falso (.F.) se estiver
ativado.

SORT, comando

Classifica os registros na tabela atualmente selecionada e direciona a saída dos registros


classificados para uma nova tabela.

Sintaxe

SORT TO NomeTabela
ON NomeCampo1 [/A | /D] [/C]
[, NomeCampo2 [/A | /D] [/C] ...]
[ASCENDING | DESCENDING]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[FIELDS ListaNomesCampos
| FIELDS LIKE Estrutura
| FIELDS EXCEPT Estrutura]
[NOOPTIMIZE]

Argumentos

NomeTabela Especifica o nome da nova tabela que contém os registros classificados. O Visual
FoxPro assume uma extensão de nome de arquivo .DBF para as tabelas. Se o nome do arquivo
incluído não tiver uma extensão, .DBF será automaticamente atribuída.

ON NomeCampo1 Especifica na tabela atualmente selecionada o campo em que se baseia a


classificação. O tipo de dados e o conteúdo do campo determinarão a ordem dos registros na nova
tabela. Como padrão, a classificação é feita em ordem ascendente. Não é possível classificar por
campos memo ou do tipo geral.

O exemplo a seguir classifica uma tabela no campo cust_id. A tabela customer é aberta e
classificada, criando uma nova tabela denominada temp. Os registros em temp são ordenados pelo
campo cust_id.

CLOSE 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

É possível incluir nomes de campos adicionais (NomeCampo2, NomeCampo3) para incrementar a


ordenação da nova tabela. O primeiro campo NomeCampo1 será o campo de classificação primária,
o segundo campo NomeCampo2 será o campo de classificação secundária, e assim por diante.

[/A | /D] [/C] Para cada campo incluído na classificação, você poderá especificar uma ordem de
classificação ascendente ou descendente. /A especifica uma ordem ascendente para o campo. /D
especifica uma ordem descendente. /A ou /D podem ser incluídos em qualquer tipo de campo.

Como padrão, a ordem de classificação de campos dos campos de caractere considera maiúsculas e
minúsculas. Se você incluir a opção /C após o nome de um campo de caractere, as
maiúsculas/minúsculas serão ignoradas. É possível combinar a opção /C com /D ou /A. Por
exemplo, /AC ou /DC.

No exemplo abaixo, é criada uma nova tabela denominada clients. A tabela orders é classificada no
campo order_date em ordem ascendente e no campo freight em ordem descendente.

USE orders
SORT TO clients ON order_date/A,freight/D

ASCENDING Especifica uma ordem ascendente para todos os campos não seguidos por /D.

DESCENDING Especifica uma ordem descendente para todos os campos não seguidos por /A.

Se você omitir tanto ASCENDING quanto DESCENDING, como padrão a ordem de classificação
será ascendente.

Escopo Especifica um intervalo de registros a serem classificados. As cláusulas de escopo são:


ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para SORT é ALL (todos os registros).


FOR lExpressão1 Especifica que somente os registros na tabela atual para os quais a condição
lógica lExpressão1 resulta em verdadeiro (.T.) são incluídos na classificação. A inclusão de FOR
permitirá classificar os registros condicionalmente, filtrando os registros indesejados.

O comando SORT ... FOR pode ser otimizado por meio da tecnologia Rushmore se lExpressão1 for
uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na
cláusula FOR.

Uma discussão sobre as expressões que podem ser otimizadas por meio da tecnologia Rushmore
aparece no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição em que os registros da tabela atual serão incluídos
na classificação desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

FIELDS ListaNomesCampos Especifica os campos da tabela original a serem incluídos na nova


tabela que SORT criar. Se você omitir a cláusula FIELDS, todos os campos da tabela original serão
incluídos na nova tabela.

FIELDS LIKE Estrutura Especifica que os campos da tabela original correspondentes à estrutura
de campo Estrutura serão incluídos na nova tabela que SORT criar.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto aqueles correspondentes à
estrutura de campo Estrutura, serão incluídos na nova tabela que SORT criar.

A estrutura de campo Estrutura suporta caracteres curinga. Por exemplo, para especificar que todos
os campos iniciados pelas letras A e P serão incluídos na nova tabela, utilize:

SORT TO mytable ON myfield FIELDS LIKE A*,P*

As cláusulas LIKE e EXCEPT podem ser combinadas com a cláusula EXCEPT:

SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO*

NOOPTIMIZE Desativa a otimização Rushmore do comando SORT.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

Um ou mais campos especificados na tabela atual determinam a ordem em que os registros


aparecerão na nova tabela.

Importante Certifique-se de que você tem espaço em disco suficiente para a nova tabela e para os
arquivos de trabalho temporários criados durante a classificação. O espaço em disco necessário para
executar uma classificação pode ser até três vezes o tamanho da tabela fonte. O espaço em disco
disponível pode ser determinado com DISKSPACE( ) e SYS(2020). Se você ficar sem espaço em
disco durante uma classificação, o Visual FoxPro exibirá uma mensagem de erro, e os arquivos de
trabalho temporários serão apagados.

Campos do tipo caractere que contêm números e espaços não devem ser classificados na ordem
desejada. Campos numéricos são preenchidos da direita para a esquerda, com espaços vazios à
esquerda. De forma contrária, campos de caractere são preenchidos da esquerda para a direita, com
espaços vazios à direita.

Por exemplo, se dois registros em uma tabela contiverem um campo de caractere com 1724 em um
registro e 18 em outro e a tabela for classificada nesse campo em ordem ascendente, o registro com
1724 aparecerá antes do registro que contém 18. Isso ocorre porque o Visual FoxPro lê cada
caractere nos campos de caractere da esquerda para a direita e, como 17 (em 1724) é menor do que
18 (em 18), ele coloca 1724 primeiro. Para evitar esse problema, preencha sempre os números
baixos com zeros à esquerda (0018) ou estabeleça um campo numérico.

SOUNDEX( ), função

Retorna uma representação fonética da expressão de caracteres especificada.


Sintaxe

SOUNDEX(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres que resultam de SOUNDEX( ).

Comentários

SOUNDEX( ) retorna uma seqüência de quatro caracteres. Comparando os resultados que


SOUNDEX( ) retorna para duas expressões de caracteres, é possível determinar se duas expressões
são parecidas foneticamente, indicando que elas têm sons parecidos. Isso pode ser útil na procura de
registros duplicados em uma tabela.

SOUNDEX( ) não considera letras maiúsculas e minúsculas e, geralmente, ignora vogais.

SOUNDEX( ), exemplo da função

CLEAR
? SOUNDEX('Smith') = SOUNDEX('Smyth') && Exibe .T.
? SOUNDEX('Computador') && Exibe C513
SPACE( ), função

Retorna uma seqüência de caracteres composta por um número especificado de espaços.

Sintaxe

SPACE(nEspaços)

Tipos de retorno

Caractere

Argumentos

nEspaços Especifica o número de espaços que SPACE( ) retorna. O valor máximo de nEspaços é
limitado apenas pela memória no Visual FoxPro.

SROWS( ), função

Retorna o número de linhas disponíveis na janela principal do Visual FoxPro.

Sintaxe
SROWS( )

Tipos de retorno

Numérico

Comentários

No Visual FoxPro for Windows, o valor retornado por SROWS( ) depende do modo de visualização
atual. O modo de visualização pode ser alterado com SET DISPLAY.

SROWS( ), exemplo da função

CLEAR
? SROWS( )

STORE, comando

Armazena dados para um elemento de matriz, uma matriz ou uma \variável.

Sintaxe

STORE eExpressão TO ListaNomeVar | ListaNomeMatriz


– Ou –
NomeVar | NomeMatriz = eExpressão

Argumentos

eExpressão Especifica uma expressão cujo valor é armazenado na variável, matriz ou elemento de
matriz. Se a variável não existir, será criada e inicializada para eExpressão. Uma matriz deve ser
previamente definida com DIMENSION. STORE substitui o valor em uma variável, matriz ou
elemento de matriz existente com o novo valor.

ListaNomeVart Especifica uma lista de variáveis ou elementos de matriz na qual eExpressão é


armazenada. Separe os nomes ou elementos de matriz por vírgulas.

ListaNomeMatriz Especifica uma lista de nomes de matrizes existentes na qual eExpressão


é armazenada. Separe os nomes de matriz por vírgulas.

STORE inicializará cada elemento das matrizes para o valor especificado, se SET COMPATIBLE
estiver OFF. STORE armazenará o valor especificado em variáveis de memória dos nomes
especificados, se SET COMPATIBLE estiver ON, sobregravando qualquer matriz existente que
contenha estes nomes.

Comentários

Uma alternativa para STORE é o operador de atribuição de sinal de igual (=). A variável, matriz ou
elemento de matriz deve estar no lado esquerdo do sinal de mais e seu valor no lado direito.

As datas podem ser diretamente armazenadas em variáveis, matrizes ou elementos de matriz ao


utilizar chaves:

STORE {12/25/95} TO gdXMas

O número máximo de variáveis ou matrizes que se pode criar é listado na tabela de Capacidades do
sistema . O limite pode ser aumentado ou diminuído no seu arquivo de configuração do Visual
FoxPro. Para obter maiores informações sobre como configurar o Visual FoxPro, consulte o
capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

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( ), função

Retorna o equivalente de caractere de uma expressão numérica especificada.

Sintaxe

STR(nExpressão [, nComprimento [, nCasasDecimais]])

Tipos de retorno

Caractere

Argumentos

nExpressão Especifica a expressão numérica retornada por STR( ).

nComprimento Especifica o comprimento da seqüência de caracteres que STR( ) retorna. O


comprimento inclui um caractere para o ponto decimal e um caractere para cada dígito à direita do
ponto decimal.

STR( ) aumentará a seqüência de caracteres que retorna com espaços à esquerda se você especificar
um comprimento maior que o número de dígitos à esquerda do ponto decimal. STR( ) retornará uma
seqüência de asteriscos indicando a capacidade numérica se você especificar um comprimento
menor que o número de dígitos à esquerda do ponto decimal.
nCasasDecimais Especifica o número de casas decimais na seqüência de caracteres que STR( )
retorna. É necessário incluir nComprimento para especificar o número de casas decimais.

Se você especificar menos casas decimais das que estão em nExpressão, os dígitos extras serão
truncados.

STUFF( ), função

Retorna uma seqüência de caractere criada substituindo um número específico de caracteres em


uma expressão de caracteres com outra expressão de caracteres.

Sintaxe

STUFF(cExpressão, nIniciarSubstituição, nCaracteresSubstituídos, cSubstituição)

Tipos de retorno

Caractere
Argumentos

cExpressão Especifica a expressão de caracteres na qual ocorre a substituição.

nIniciarSubstituição Especifica a posição em cExpressão onde começa a substituição.

nCaracteresSubstituídos Especifica o número de caracteres a serem substituídos. Se


nCaracteresSubstituídos for 0, a seqüência de substituições cSubstituição será inserida em
cExpressão.

cSubstituição Especifica a expressão de caracteres de substituição. Se cSubstituição for a


seqüência vazia, o número de caracteres especificados por nCaracteresSubstituídos serão removidos
de cExpressão.

STUFF( ), exemplo da função

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( ), função
Retorna uma seqüência de caracteres criada para substituir um número específico de caracteres em
uma expressão de caracteres com outra expressão de caracteres.

Sintaxe

STUFFC(cExpressão, nIniciarSubstituição, nCaracteresSubstituídos, cSubstituição)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres na qual ocorre a substituição.

nIniciarSubstituição Especifica a posição de caractere em cExpressão onde começa a substituição.

nCaracteresSubstituídos Especifica o número de caracteres a serem substituídos. Se


nCaracteresSubstituídos for 0, a seqüência de substituição completa cSubstituição será inserida em
cExpressão.

cSubstituição Especifica a expressão de caracteres de substituição. Se cSubstituição é a seqüência


vazia, o número de caracteres especificados por nCaracteresSubstituídos são removidos de
cExpressão.

Comentários

STUFFC( ) é criado para expressões que contêm caracteres byte duplo. Se a expressão contiver
apenas caracteres de byte único, STUFFC( ) será equivalente a STUFF( ).

STUFFC( ) retorna uma seqüência de caracteres criada substituindo-se um número específico de


caracteres em uma expressão de caracteres por outra expressão de caracteres. As expressões de
caracteres podem consistir em alguma combinação de caracteres de byte único e byte duplo.
SUBSTR( ), função

Retorna uma seqüência de caracteres da expressão de caracteres ou campo de dados fornecido.

Sintaxe

SUBSTR(cExpressão, nIniciarPosição [, nCaracteresRetornados])

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres ou campo Memo a partir da qual a seqüência de


caracteres é retornada.

IniciarPosição Especifica a posição na expressão de caracteres ou campo Memo cExpressão a


partir da qual a seqüência de caracteres é retornada. O primeiro caractere de cExpressão tem a
posição 1.

Se TALK for SET ON e nIniciarPosição for maior que o número de caracteres em cExpressão, o
Visual FoxPro irá gerar uma mensagem de erro. Se TALK for SET OFF, a seqüência vazia será
retornada.

nCaracteresRetornados Especifica o número de caracteres a serem retornados de cExpressão. Se


você omitir nCaracteresRetornados, os caracteres serão retornados até que se chegue ao fim da
expressão de caracteres.

Comentários

SUBSTR( ) retorna uma seqüência de caracteres de uma expressão de caracteres ou de um campo


Memo, começando em uma posição especificada na expressão de caracteres ou no campo Memo e
continuando por um número especificado de caracteres.
SUBSTR( ) não retornará um valor na janela Depurar para um campo Memo quando este é emitido.
Para retornar um valor na janela Depurar, coloque o nome do campo Memo dentro de ALLTRIM( )
e coloque ALLTRIM( ) dentro de SUBSTR( ).

SUBSTR( ), exemplo da função

STORE 'abcdefghijklm' TO mystring


CLEAR
? SUBSTR(mystring, 1, 5) && Exibe abcde
? SUBSTR(mystring, 6) && Exibe fghijklm

SUBSTRC( ), função

Retorna uma seqüência de caracteres a partir da expressão de caracteres ou do campo Memo


fornecido.

Sintaxe

SUBSTRC(cExpressão, nIniciarPosição [, nCaracteresRetornados])

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres ou campo Memo a partir da qual a seqüência de


caracteres é retornada.

nIniciarPosição Especifica a posição da expressão de caracteres ou do campo Memo cExpressão


de onde a seqüência de caracteres é retornada. O primeiro caractere de cExpressão tem a posição 1.
Se TALK for definida como (ON) e nIniciarPosição for maior que o número de caracteres em
cExpressão, o Visual FoxPro irá gerar uma mensagem de erro. Se TALK for definida como (OFF),
é retornada a seqüência vazia.

nCaracteresRetornados Especifica o número de caracteres a serem retornados de cExpressão. Se


você omitir nCaracteresRetornados, os caracteres serão retornados até que o final da expressão de
caracteres seja atingido.

Comentários

SUBSTRC( ) é criado para expressões que contenham caracteres de byte duplo. Se a expressão
contiver apenas caracteres de byte único, SUBSTRC( ) será equivalente a SUBSTR( ).

SUBSTRC( ) retorna uma seqüência de caracteres a partir do campo Memo ou da expressão de


caracteres fornecida. A expressão de caracteres ou o campo Memo pode conter qualquer
combinação de caracteres de byte único e de byte duplo.

SUBSTRC( ) não retornará um valor para um campo Memo quando emitido na janela Depurar
. Para retornar um valor na janela Depurar, coloque o nome do campo Memo em ALLTRIM( ) e
coloque ALLTRIM( ) em SUBSTRC( ).

SUM, comando

Totaliza todos campos numéricos ou os especificados na tabela atualmente selecionada.

Sintaxe

SUM [eListaExpressão]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[TO ListaNomeVarMem | TO ARRAY NomeMatriz]
[NOOPTIMIZE]
Argumentos

eListaExpressão Especifica um ou mais campos ou expressões de campos a serem totalizados. Se


você omitir a lista de expressão de campos, todos os campos numéricos serão totalizados.

Escopo Especifica um intervalo de registros a ser incluído no total. As cláusulas de escopo são:
ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para SUM é registros ALL.

FOR lExpressão1 Especifica que apenas os registros para os quais a condição lógica lExpressão1
resulta em verdadeiro (.T.) são incluídos no total. A inclusão de FOR permite totalizar os registros
de modo condicional filtrando os registros indesejáveis.

Um comando SUM ... FOR terá otimização Rushmore se lExpressão1 for uma expressão
otimizável. Para melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações sobre a otimização Rushmore, consulte “ SET OPTIMIZE” e
“Utilizando a tecnologia Rushmore para acelerar o acesso a dados”, no capítulo 15, “Otimizando
aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros da tabela atual são incluídos
no total enquanto a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

TO ListaNomeVarMem Armazena cada total em uma variável. Se você especificar uma variável
em ListaNomeVarMem que não existe, o Visual FoxPro a criará automaticamente. Separe os nomes
das variáveis na lista com vírgulas.

TO ARRAY NomeMatriz Armazena os totais em uma matriz de variável. Se a matriz especificada


em SUM não existir, o Visual FoxPro a criará automaticamente. Se a matriz existir e for muito
pequena para conter todos os totais, o tamanho da matriz será aumentado automaticamente para
acomodar os totais.

NOOPTIMIZE Desativa a otimização Rushmore de SUM.

Para obter maiores informações, consulte “ SET OPTIMIZE” e “Utilizando a tecnologia Rushmore
para acelerar o acesso a dados”, no capítulo 15, “Otimizando aplicativos”, no Guia do
Desenvolvedor.

SUM, exemplo do comando

O exemplo a seguir exibe os totais dos campos In_stock e On_order na tabela products
, com uma soma de dois totais.

CLOSE 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 execução do programa e retorna ao Visual FoxPro interativo.

Sintaxe

SUSPEND

Comentários

Enquanto um programa é pausado, é possível executar comandos de intervenção, verificar os


valores de variável, abrir as janelas Rastrear e Depurar e assim por diante.

Todas as variáveis criadas enquanto o programa está pausado são PRIVATE.


Utilize RESUME para reiniciar a execução de um programa suspenso. A execução do programa
continua com a linha que segue a linha contendo SUSPEND.

CCO
OMMA
ANND
DOOSS SSY
YSS((??????))

SYS(0) - Informações do computador da rede

SYS(0) retorna as informações do computador da rede ao utilizar o Visual FoxPro em um ambiente


de rede.

Sintaxe

SYS(0)

Tipos de retorno

Caractere

Comentários

As informações do computador devem, em primeiro lugar, ser atribuídas pelo software da rede e a
shell da rede deve ser carregada.

Se as informações do computador não tiverem sido atribuídas ou a shell da rede não tiver sido
carregada, SYS(0) retornará uma seqüência de caracteres que consistirá de 15 espaços, um sinal de
número (#) seguido por um outro espaço e então 0. Consulte a sua documentação de rede para obter
maiores informações sobre como definir as informações do computador.

SYS(0) retornará 1 ao utilizar o Visual FoxPro em um ambiente independente.

SYS(0) retornará um nome de computador e um nome de usuário.

SYS(1) - Dia do sistema Juliano

Retorna a data atual do sistema como uma seqüência de caracteres de número de dia Juliano.

Sintaxe
SYS(1)

Tipos de retorno

Caractere

Comentários

O valor retornado por SYS(1) é válido nos E.U.A. Você pode obter versões do Visual FoxPro em
qualquer data do sistema após 14 de setembro de 1752 e antes de 31 de dezembro de 9999.

SYS(1) - Exemplo de data do sistema Juliano

? SYS(1)
? SYS(10,VAL(SYS(1)))

SYS(10) - Seqüência a partir do número de dia juliano

Converte um número de dia juliano para uma seqüência de caracteres.

Sintaxe

SYS(10, nNúmeroDiaJuliano)

Tipos de retorno

Caractere

Comentários

SYS(10) retorna uma data de tipo Caractere a partir de um número de dia juliano,
nNúmeroDiaJuliano.

SYS(10) - Exemplo de seqüência a partir do número de dia juliano

? SYS(1)
? SYS(10,VAL(SYS(1)))
SYS(100) - Definição da console

Retorna a definição atual de SET CONSOLE.

Sintaxe

SYS(100)

Tipos de retorno

Caractere

SYS(100) - Exemplo de definição da console

IF SYS(100) != 'ON'
SET CONSOLE ON
ENDIF

SYS(1001) - Memória do Visual FoxPro

Retorna a quantidade total de memória disponível para o gerenciador de memória do Visual


FoxPro.

Sintaxe
SYS(1001)

Tipos de retorno

Caractere

Comentários

No Visual FoxPro, SYS(1001) retorna o tamanho de reserva de memória virtual, que é


aproximadamente quatro vezes a quantidade de memória física.

SYS(101) - Definição do dispositivo

Retorna a definição atual de SET DEVICE.

Sintaxe

SYS(101)

Tipos de retorno

Caractere

SYS(101) - Exemplo de definição de dispositivo

IF SYS(101) != 'SCREEN'
SET DEVICE TO SCREEN
ENDIF
SYS(1016) - Uso da memória de objeto do usuário

Retorna a quantidade de memória sendo utilizada pelos objetos definidos.

Sintaxe

SYS(1016)

Tipos de retorno

Caractere

Comentários

Os objetos definidos pelo usuário incluem: janelas definidas pelo usuário, barras de menus, menus,
variáveis, matrizes, tabelas abertas, arquivos abertos com funções de arquivo de nível baixo e assim
por diante.

SYS(102) - Definição da impressora

Retorna a definição atual de SET PRINTER.

Sintaxe
SYS(102)

Tipos de retorno

Caractere

SYS(102) - Exemplo de definição de impressora

IF SYS(102) != 'OFF'
SET PRINTER OFF
ENDIF

SYS(1023) - Ativar modo de diagnóstico da Ajuda

Ativa o modo de diagnóstico da Ajuda, permitindo que você desvie HelpContextID passada para o
sistema de Ajuda do Visual FoxPro.

Sintaxe

SYS(1023)

Tipos de retorno

Caractere

Comentários

SYS(1023) é útil para depuração de um sistema de Ajuda personalizado em seu aplicativo.


SYS(1023) retorna a seqüência vazia.

Quando o modo de diagnóstico da Ajuda for ativado com SYS(1023), uma caixa de diálogo será
exibida sempre que você pressionar F1 ou emitir HELP. A caixa de diálogo exibe HelpContextID a
ser passada para o sistema de Ajuda do Visual FoxPro e será dada a opção de passar HelpContextID
ao sistema de Ajuda do Visual FoxPro.

Se você escolher Sim, HelpContextID será passada para o sistema de Ajuda do Visual FoxPro e o
tópico da Ajuda correspondente (se disponível) será exibido. Se você selecionar Não,
HelpContextID não será passada ao sistema de Ajuda do Visual FoxPro e o tópico da Ajuda
correspondente não será exibido.

Use SYS(1024) para desativar o modo de diagnóstico da Ajuda e restaurar o processamento do


sistema de Ajuda padrão do Visual FoxPro.

SYS(1024) - Desativar o modo de diagnóstico da Ajuda

Desativa o modo de diagnóstico da Ajuda ativado ao emitir SYS(1023).

Sintaxe

SYS(1024)
Tipos de retorno

Caractere

Comentários

Utilize SYS(1024) para desativar o modo de diagnóstico da Ajuda ativado com SYS(1023) e
restaurar o processamento do sistema de Ajuda padrão do Visual FoxPro. SYS(1023) é utilizada
para depurar um sistema de Ajuda personalizado em seu aplicativo.

SYS(1024) retorna a seqüência vazia.

SYS(103) - Definição da comunicação

Retorna a definição atual de SET TALK.

Sintaxe

SYS(103)

Tipos de retorno

Caractere

SYS(103) - Exemplo de definição de comunicação

IF SYS(103) != 'ON'
SET TALK ON
ENDIF
SYS(11) - Número de dia juliano

Converte uma expressão de data ou seqüência de caracteres em um formato de data para um número
de dia Juliano.

Sintaxe

SYS(11, dExpressão | tExpressão | cExpressão)

Tipos de retorno

Caractere

Comentários

SYS(11) retorna um número de dia juliano a partir de uma expressão de data, dExpressão, de uma
expressão de data e hora, tExpressão ou de uma expressão de caracteres, cExpressão em uma
formato de data. O número do dia será retornado como uma seqüência de caracteres.

SYS(11) - Exemplo de número de dia juliano

? SYS(11, {10/31/95})
? SYS(11,'10/31/95')

SYS(12) - Memória disponível em bytes

Retorna a quantidade de memória abaixo de 640K disponível para executar um programa externo.

Sintaxe

SYS(12)
Tipos de retorno

Caractere

Comentários

No Visual FoxPro, SYS(12) sempre retorna 655.360.

SYS(12) é semelhante a MEMORY( ), com duas exceções:

· SYS(12) retorna a quantidade de memória disponível em bytes. MEMORY( ) retorna a


memória disponível em kilobytes.
· SYS(12) retorna uma seqüência de caracteres. MEMORY( ) retorna um valor numérico.

SYS(13) - Status da impressora

Retorna o status da impressora.

Sintaxe

SYS(13)

Tipos de retorno

Caractere

Comentários

OFFLINE será retornado se a impressora não estiver preparada. READY será retornado se a
impressora estiver preparada.

Se a impressora estiver conectada a uma porta COM, SYS(13) retornará READY se a impressora
retornar Limpar para enviar dados ou Conjunto de dados preparado.

Se a impressora estiver conectada a uma porta paralela, SYS(13) retornará OFFLINE se a


impressora retornar Sem papel, Erro de I/O, Tempo limite, Impressora ocupada ou Impressora não
selecionada.
SYS(13) - Exemplo de status da impressora

IF SYS(13) = 'OFFLINE'
WAIT WINDOW 'A impressora está off-line'
ENDIF

SYS(14) - Expressão de índice

Retorna a expressão de índice de um arquivo de índice .IDX de entrada única aberto ou expressões
de índice para marcas em arquivos de índice .CDX compostos.

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

nNúmeroÍndice Especifica qual expressão de índice será retornada das marcas ou arquivos de
índice abertos. SYS(14) retornará expressões de índice das marcas e arquivos de índice abertos na
seguinte ordem conforme nNúmeroÍndice aumenta de 1 para o número total de arquivos de entrada
única abertos e marcas de índice composto independente e composto estrutural:

1. As expressões de índice de arquivos de índice de entrada única (se estiverem abertos) são
retornados em primeiro lugar. A ordem em que os arquivos de índice de entrada única são incluídos
em USE ou SET INDEX determina a ordem em que as expressões de índice são retornadas.
2. As expressões de índice para cada marca no índice composto estrutural (se presente) são
retornadas em seguida. As expressões de índice são retornadas de marcas na ordem em que as
mesmas foram criadas no índice estrutural.

3. As expressões de índice para cada marca em quaisquer índices compostos independentes


abertos são retornadas por último. As expressões de índice são retornadas a partir das marcas na
ordem em que foram criadas em índices compostos independentes.

A seqüência vazia será retornada se nNúmeroÍndice for maior que o número total de arquivos de
entrada única abertos e marcas de índice composto independente e composto estrutural.

nÁreaTrabalho | cAliasTabela Especifica um número da área de trabalho ou alias da área de


trabalho. Se você omitir nÁreaTrabalho e cAliasTabela, as expressões de índice serão retornadas de
arquivos de índice abertos na área de trabalho atual. Se uma tabela não contiver o alias especificado,
o Visual FoxPro irá gerar uma mensagem de erro.

Comentários
Uma expressão de índice é especificada quando uma marca ou arquivo de índice for criado com
INDEX. A expressão de índice determina como uma tabela será exibida e acessada quando uma
marca ou arquivo de índice for utilizado para solicitar a tabela.

Para obter maiores informações sobre expressões de índice e como criar marcas e arquivos de
índice, consulte INDEX. SYS(14) é semelhante à função KEY( ).

USE e SET INDEX suportam uma lista de nome de arquivo de índice que lhe permite abrir
arquivos de índice em uma tabela. Qualquer combinação de arquivos de índice de entrada única,
nomes de arquivo de índice composto independente ou composto estrutural, pode ser incluída na
lista de arquivo de índice.
SYS(1500) - Ativar um item de menu do sistema

Ativa um item de menu do sistema Visual FoxPro.

Sintaxe

SYS(1500, cNomeItemSistema, cNomeMenu)

Tipos de retorno

Caractere

Argumentos

cNomeItemSistema Especifica o nome do item de menu do sistema Visual FoxPro a ser ativado.

cNomeMenu Especifica o nome do submenu ou menu do sistema Visual FoxPro que contém o
item de menu.

Comentários

Consulte Nomes do menu de sistema para obter uma lista de nomes de item de menu e menus do
Visual FoxPro. Você pode também utilizar SYS(2013) - Seqüência de nomes do menu do sistema
para exibir uma lista de nomes de item de menu e menus do Visual FoxPro.

Os itens de menu definidos pelo usuário e os itens de menu do sistema desativados não podem ser
ativados com SYS(1500).

SYS(1500) retorna a seqüência vazia.

SYS(1500) - Exemplo de Ativar um item de menu do sistema

O exemplo a seguir utiliza SYS(1500) para colar um comando em um arquivo de programa.


_CLIPTEXT = "MESSAGEBOX('TEST')" && Comando a ser 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 execução

Retorna o nome de arquivo do programa sendo executado.

Sintaxe

SYS(16 [, nNívelPrograma])

Tipos de retorno

Caractere

Argumentos

nNívelPrograma Indica a partir de quantos níveis anteriores o nome do programa é carregado. Este
valor pode variar de 1 para a profundidade em que os programas são aninhados.

Se nNívelPrograma for 0 ou 1, SYS(16) retornará o nome do programa principal (o primeiro


programa executado). O nome do programa atualmente executado será retornado se
nNívelPrograma for omitido. A seqüência vazia será retornada se nNívelPrograma for maior que a
profundidade de aninhamento do programa.
Comentários

Esta opção é útil para recuperação de erros. SYS(16) é semelhante a PROGRAM( ). Entretanto,
SYS(16) retorna um caminho com o nome do programa; enquanto que PROGRAM( ) retorna
apenas o nome do programa.

Se um procedimento ou função estiver sendo executada, SYS(16) retornará o nome do arquivo


contendo o procedimento ou função depois do nome da função ou procedimento.

Quando o programa em execução for parte de um aplicativo (.APP), SYS(16) retornará o nome do
programa — o caminho não será retornado com o nome do programa.

SYS(16) - Exemplo do nome de arquivo do programa em execução

O aninhamento do programa é retornado no breve exemplo de programa a seguir:

STORE 1 TO 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

Comentários

Esta função retorna o tipo da unidade de processamento central sendo utilizada: 80386, 80486 e
assim por diante.

Observação Para obter maiores informações sobre o tipo do processador, você pode solicitar a
função FxGestalt( ) na biblioteca Foxtools.

SYS(17) - Exemplo de processador em uso

? 'Processador em uso: ', SYS(17)

SYS(2) - Segundos desde a meia-noite

Retorna o número de segundos decorridos desde a meia-noite.

Sintaxe

SYS(2)

Tipos de retorno

Caractere

SYS(2) - Exemplo de segundos desde meia-noite

? TIME( )
? SYS(2)
SYS(2000) - correspondência curinga de nome do arquivo

Retorna o nome do primeiro arquivo que corresponde a uma estrutura de nome de arquivo.

Sintaxe

SYS(2000, Estrutura [, 1])

Tipos de retorno

Caractere

Argumentos

Estrutura Especifica a estrutura do nome de arquivo. A estrutura do arquivo não pode conter os
curingas ? e *.

1 Retorna o nome do próximo arquivo correspondente.

Comentários

A seqüência vazia será retornada se um arquivo correspondente não for localizado.

SYS(2000) - exemplo da correspondência de curinga de nome de arquivo

? SYS(2000,'FOX.*')
? SYS(2000,'FOX.*',1)
SYS(2001) - SET ... status do comando

Retorna o status dos comandos SET especificados.

Sintaxe

SYS(2001, cSETComando [, 1 | 2])

Tipos de retorno

Caractere

Argumentos

cSETComando Especifica o comando SET cujo status é retornado por SYS(2001).

1 | 2 Alguns comandos SET possuem duas ou mais definições; por exemplo, SET PRINTER ON,
SET PRINTER OFF e SET PRINTER TO FileName. Utilize SYS(2001) sem 1 ou 2 para retornar a
definição da chave ON ou OFF. Utilize SYS(2001) com 1 ou 2 para retornar as definições
adicionais. Consulte “SET( )” para obter comandos SET para o qual informações adicionais são
retornadas quando 1 ou 2 está incluído.

Comentários

SYS(2001) é idêntico a SET( ).


SYS(2001) - SET ... exemplo do status de comando

? SYS(2001,'PRINTER')
? SYS(2001,'PRINTER',1)

SYS(2002) - ativar ou desativar ponto de inserção

Ativa ou desativa o ponto de inserção.

Sintaxe

SYS(2002 [, 1])

Tipos de retorno

Nenhum
Comentários

SYS(2002) desativa o ponto de inserção. SYS(2002, 1) ativa o ponto de inserção. Para obter
maiores informações sobre ativação e desativação do ponto de inserção, consulte “ SET CURSOR”.

SYS(2003) - diretório atual

Retorna o nome do diretório atual na unidade padrão.

Sintaxe

SYS(2003)

Tipos de retorno

Caractere

Comentários

Você pode utilizar SYS(5) para determinar a unidade atual.


SYS(2004) - diretório inicial do Visual FoxPro

Retorna o nome do diretório a partir do qual o Visual FoxPro foi iniciado.

Sintaxe

SYS(2004)

Tipos de retorno

Caractere

Comentários

SYS(2004) retorna o local do arquivo .ESL em um aplicativo em tempo de execução distribuído do


Visual FoxPro.

SYS(2004) - exemplo do diretório inicial do Visual FoxPro

? 'diretório inicial do Visual FoxPro: ', SYS(2004)

SYS(2006) - placa de vídeo atual

Retorna o tipo de monitor e placa de vídeo que você está utilizando.

Sintaxe

SYS(2006)

Tipos de retorno
Caracter

SYS(2006) - exemplo da placa de vídeo atual

? 'monitor/placa de vídeo atual: ', SYS(2006)

SYS(2007) - Valor da soma de verificação

Retorna o valor da soma de verificação de uma expressão de caracteres.

Sintaxe

SYS(2007, cExpressão)

Tipos de retorno

Caractere

Comentários

Uma soma de verificação pode ser utilizada para testar a validade dos dados ou para comparar duas
expressões de caracteres.

cExpressão Especifica a expressão de caracteres para a qual SYS(2007) retorna um valor da soma
de verificação.
SYS(2010) - Definições do arquivo CONFIG.SYS

Retorna a definição de arquivos em CONFIG.SYS.

Sintaxe

SYS(2010)

Tipos de retorno

Caractere

Comentários

No FoxPro para MS-DOS, SYS(2010) retorna a definição de arquivos como uma seqüência de
caracteres em seu arquivo de configuração CONFIG.SYS.

No Visual FoxPro, SYS(2010) sempre retorna 255.

Muitos arquivos CONFIG.SYS contêm uma linha que especifica o número máximo de arquivos que
podem ser abertos ao mesmo tempo no MS-DOS. Esta linha geralmente lê FILES=NNN, onde
NNN é um número. SYS(2010) retorna este número.

Um arquivo de configuração CONFIG.SYS não precisa ter uma definição de arquivos; além disso,
você não precisa ter um arquivo CONFIG.SYS. SYS(2010) retorna a definição de arquivos padrão
do MS-DOS em cada caso.

O número retornado por SYS(2010) não é o número de arquivos que você pode abrir no Visual
FoxPro, FoxPro para Windows e FoxPro para MS-DOS. MS-DOS abre arquivos para seu próprio
uso. O Visual FoxPro e o FoxPro para Windows também abrem seu próprio uso interno e o número
desses arquivos abertos pode variar ao longo de uma sessão do FoxPro. A definição de arquivos em
seu arquivo CONFIG.SYS deve ser um pouco maior que o número de arquivos que você gostaria de
abrir no Visual FoxPro.

Para obter maiores informações sobre o arquivo de configuração CONFIG.SYS, consulte seu
manual do MS-DOS.
SYS(2011) - Status de bloqueio atual

Retorna o status de bloqueio de registro ou tabela para a Área de trabalho atual.

Sintaxe

SYS(2011)

Tipos de retorno

Caracter

Comentários

Ao contrário das funções FLOCK( ), LOCK( ) e RLOCK( ), SYS(2011) não tenta bloquear a tabela
ou o registro.

A seqüência de registros retornada por SYS(2011) é idêntica à mensagem exibida na barra de status
(Exclusivo, Registro desbloqueado, Registro bloqueado...).

SYS(2011) retorna Exclusivo apenas na estação de trabalho que abriu exclusivamente a tabela e
Registro desbloqueado apenas na estação de trabalho que aplicou o bloqueio do registro.

SYS(2012) - Tamanho do bloco do campo Memo


Retorna o tamanho do bloco do campo Memo para uma tabela.

Sintaxe

SYS(2012 [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho ou alias da tabela para a


tabela para a qual o tamanho de bloco do campo Memo é retornado. nÁreaTrabalho especifica um
número da Área de trabalho e cAliasTabela especifica um alias de tabela. Se você não especificar
uma Área de trabalho ou alias, SYS(2012) retornará o tamanho do bloco do campo Memo da tabela
aberta na Área de trabalho selecionada atualmente.

SYS(2012) retornará 0 se uma tabela não estiver aberta na Área de trabalho especificada ou a tabela
não tiver um campo Memo.

Comentários

Para obter maiores informações sobre como especificar o tamanho do bloco do campo Memo para
uma tabela, consulte “ SET BLOCKSIZE”.
SYS(2013) - Seqüência de nomes do menu do sistema

Retorna uma seqüência de caracteres delimitada por espaço que contém os nomes internos do
sistema de menus do Visual FoxPro.

Sintaxe

SYS(2013)

Tipos de retorno

Caractere

Comentários
SYS(2013) facilita a utilização da barra de menus e dos menus de sistema do Visual FoxPro. A
seqüência de caracteres retornada contém o nome da barra de menus de sistema, seus títulos de
menu e o nome de cada item nos menus.

SYS(2013) retorna os nomes dos títulos de menu e os itens de menu em cada plataforma do FoxPro.
Consulte “Nomes do menu de sistema” para uma lista de títulos de menu e itens de menu para uma
plataforma específica do FoxPro.

SYS(2014) - Caminho mínimo

Retorna o caminho mínimo relativo ao diretório atual ou especificado para um arquivo especificado.

Sintaxe

SYS(2014, cNomeArquivo [, Caminho])

Tipos de retorno

Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo para o qual SYS(2014) retorna o caminho mínimo.
Se você omitir Caminho, SYS(2014) retornará o caminho mínimo entre o arquivo e o diretório
atual. Você pode alterar o diretório atual com SET DEFAULT.

Caminho Especifica um diretório para o qual SYS(2014) retorna o caminho mínimo entre o
diretório especificado e o arquivo especificado com cNomeArquivo.

Path Specifies a folder for which SYS(2014) returns the minimum path between the specified
folder and the file specified with cFileName.

Comentários

SYS(2014) pode ser utilizada com FULLPATH( ) para tornar os aplicativos portáteis. Isto é,
quando fornecidas a localização do programa atual e a localização de outros arquivos utilizados
pelo programa, FULLPATH( ) e SYS(2014) alcançam os caminhos apropriados para esses
arquivos. Uma vez que os caminhos dos arquivos são determinados, os arquivos podem ser
acessados pelo programa.

SYS(2018) - Parâmetro da mensagem de erro

Retorna o parâmetro da mensagem de erro para o erro mais recente.

Sintaxe

SYS(2018)

Tipos de retorno

Caractere

Comentários

Certas mensagens de erro retornam informações adicionais sobre a causa do erro. Por exemplo, se
você fizer referência a uma variável que não existe, o nome da variável será incluído na mensagem
de erro. SYS(2018) retorna essa informação adicional, denominada parâmetro de mensagem de
erro. Os nomes de variáveis e arquivos são tipos comuns de parâmetros de mensagem de erro.
Suponha que você tente executar um programa denominado REPORTS, mas o programa não existe.
O texto da mensagem de erro exibida é:

File REPORTS does not exist.

REPORTS é o parâmetro da mensagem de erro e é retornado por SYS(2018):

? SYS(2018)
SYS(2019) - Nome e localização do arquivo de configuração

Retorna o nome e a localização do arquivo de configuração do Visual FoxPro.

Sintaxe

SYS(2019)

Tipos de retorno

Caractere

Comentários

O arquivo de configuração é denominado CONFIG.FPW.

Se um arquivo de configuração não puder ser localizado, SYS(2019) retornará uma seqüência vazia.

O arquivo de configuração do Visual FoxPro é localizado tipicamente no diretório onde o Visual


FoxPro é inicializado, mas pode ser localizado em qualquer lugar. O Visual FoxPro primeiro o
procura no diretório de inicialização.

Se o arquivo de configuração não for localizado no diretório de inicialização, o caminho do MS-


DOS será, em seguida, procurado. Duas opções permitem relatar o Visual FoxPro onde seu arquivo
de configuração é localizado e seu nome:

· Você pode criar uma variável ambiental do MS-DOS denominada FOXPROWCFG com o
comando MS-DOS SET e pode armazenar a localização e o nome de seu arquivo de configuração
em FOXPROCFG. No FoxPro para MS-DOS, a variável ambiental do MS-DOS é denominada
FOXPROCFG.
· Quando você inicia o Visual FoxPro, pode também utilizar a chave -C para designar um
arquivo de configuração. Inclua a localização e o nome do arquivo de configuração imediatamente
após -C.

Para obter informações adicionais sobre o arquivo de configuração do Visual FoxPro, consulte o
capítulo 3, “Configurando o Visual FoxPro”, no Guia de instalação e índice principal.
SYS(2020) - Tamanho padrão de disco

Retorna o tamanho total em bytes do disco padrão.

Sintaxe

SYS(2020)

Tipos de retorno

Caractere

Comentários

O disco padrão pode ser especificado com SET DEFAULT.


SYS(2021) - Expressão de índice filtrada

Retorna a expressão de filtragem para um arquivo de índice de entrada única aberto (.IDX) ou
expressões de filtragem para marcas em arquivos de índice composto (.CDX).

Sintaxe

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

Tipos de retorno

Caractere

Argumentos

nNúmeroÍndice A expressão numérica nNúmeroÍndice especifica a qual expressão de filtragem


retornar a partir dos arquivos de índice abertos. SYS(2021) retorna expressões de filtragem a partir
de arquivos de índice abertos na seguinte ordem como nNúmeroÍndice aumenta de 1 até o número
total de arquivos .IDX de entrada única abertos e marcas de índice composto independente e
composto estrutural:

1. Expressões de filtragem de arquivos .IDX de entrada único (se algum estiver aberto) são
retornadas primeiro. A ordem na qual os arquivos .IDX de entrada única são incluídos em USE ou
SET INDEX determina a ordem na qual as expressões de filtragem são retornadas.
2. As expressões de filtragem para cada marca no arquivo .CDX estrutural (se houver algum )
são retornadas em seguida. As expressões de filtragem são retornadas a partir das marcas na ordem
em que estas foram criadas no índice estrutural.

3. As expressões de filtragem para cada marca em qualquer dos arquivos .CDX independentes
abertos são retornadas por último. As expressões de filtragem são retornadas a partir das marcas na
ordem em que estas foram criadas nos índices compostos independentes.

A seqüência vazia é retornada se nNúmeroÍndice for maior que o número total de arquivos .IDX de
entrada única abertos e marcas de arquivo .CDX independentes e estruturais.

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

cAliasTabela Especifica um alias de tabela para uma tabela aberta em outra Área de trabalho. Se
uma tabela não tiver o alias especificado, o Visual FoxPro exibirá uma mensagem de erro.
Comentários

Você pode criar índices filtrados no Visual FoxPro. Se incluir a cláusula FOR opcional em INDEX,
o arquivo de índice agirá como um filtro na tabela. Somente os registros que correspondem à
expressão de filtragem lExpressão na cláusula FOR estão disponíveis para exibição e acesso. As
chaves de índice são criadas no arquivo de índice somente para esses registros.

A seqüência vazia será retornada se um índice ou marca de índice for criada sem uma cláusula
FOR.

Tanto USE como SET INDEX suportam uma lista de nome de arquivo de índice que permite abrir
arquivos de índice para uma tabela. Qualquer combinação de nomes de arquivo .IDX de entrada
única, nomes de arquivo .CDX estrutural e nomes de arquivo .CDX independente pode ser incluída
na lista de nome de arquivo de índice.

SYS(2021) retorna expressões de filtragem a partir de arquivos de índice abertos na Área de


trabalho atual a menos que você inclua uma Área de trabalho específica ou um alias.

SYS(2022) - Tamanho do grupo no disco

Retorna o tamanho do grupo em bytes de um disco especificado.

Sintaxe

SYS(2022 [, cNomeDisco])
Tipos de retorno

Caractere

Argumentos

cNomeDisco Especifica uma letra da unidade de disco (A, B, C, ...) para um disco que não o disco
padrão atual.

SYS(2023) - caminho temporário

Retorna o caminho no qual o Visual FoxPro armazena seus arquivos temporários.

Sintaxe

SYS(2023)

Tipos de retorno

Caractere

Comentários

É possível especificar o caminho no qual arquivos temporários são armazenados incluindo o item de
configuração TMPFILES especial; em seu arquivo de configuração do Visual FoxPro.

Para obter informações adicionais sobre o item de configuração TMPFILES especial, consulte o
capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.
SYS(2029) - Tipo de tabela

Retorna um valor correspondente ao tipo de tabela.

Sintaxe

SYS(2029 [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

nÁreaTrabalho Especifica a Área de trabalho na qual a tabela é aberta.

cAliasTabela Especifica o alias da tabela. Se você omitir nÁreaTrabalho e cAliasTabela,


SYS(2029) retornará um valor para a tabela aberta na Área de trabalho selecionada no momento.

Comentários

A tabela a seguir lista os valores retornados por SYS(2029) e o tipo de tabela correspondente:

Valor de retorno Tipo de tabela

0 Nenhuma tabela aberta


3 Versões 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 Versões anteriores do FoxPro com um campo Memo
SYS(2029) - Exemplo do tipo de tabela

O exemplo a seguir abre a tabela customer no banco de dados testdata.

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

CLEAR
DO CASE
CASE SYS(2029) = '3'
? 'Versões anteriores do FoxPro'
CASE SYS(2029) = '48'
? 'Tabela do Visual FoxPro'
CASE SYS(2029) = '67'
? 'Tabela do dBASE IV SQL, sem campos Memo'
CASE SYS(2029) = '99'
? 'Tabela do sistema do dBASE IV SQL com um campo Memo'
CASE SYS(2029) = '131'

? 'Tabela do FoxBASE+ com um campo Memo'


CASE SYS(2029) = '139'
? 'Tabela do dBASE IV com um campo Memo'
CASE SYS(2029) = '203'
? 'Tabela do dBASE IV SQL com um campo Memo'
CASE SYS(2029) = '245'
? 'Versões anteriores do FoxPro com um campo Memo'
ENDCASE
SYS(21) - Controlando o número do índice

Retorna, como uma seqüência de caracteres, o número da posição de índice do arquivo de índice
.IDX ou marca de índice composto .CDX de controle principal para a área de trabalho atualmente
selecionada.

Sintaxe

SYS(21)

Tipos de retorno

Caractere

Comentários

O número da posição de índice será determinado pela ordem em que os arquivos de índice .IDX e
marcas de índice composto .CDX são especificadas em USE e SET INDEX.

Você pode usar SET INDEX, SET ORDER e USE para especificar qual arquivo de índice .IDX ou
marca de índice composto .CDX é a marca ou arquivo de índice de controle principal. Para obter
maiores informações sobre como especificar uma marca ou índice de controle principal, consulte
SET INDEX, SET ORDER e USE.

“0” será retornado caso não haja arquivo de índice .IDX ou marca de índice composto .CDX de
controle principal (por exemplo, SET ORDER TO é emitido para exibir e acessar a tabela na ordem
de registro natural).

SYS(22) - Controlando nome ou marca de índice

Retorna o nome do arquivo de índice .IDX ou marca de índice composto .CDX de controle
principal para uma tabela.

Sintaxe

SYS(22 [, nÁreaTrabalho])

Tipos de retorno
Caractere

Comentários

Você pode usar SET INDEX, SET ORDER e USE para especificar qual marca de índice composto
.CDX ou arquivo de índice .IDX é a marca ou arquivo de índice de controle principal. Para obter
maiores informações sobre como especificar uma marca ou índice de controle principal, consulte
SET INDEX, SET ORDER e USE.

A seqüência vazia será retornada caso não haja um arquivo de índice .IDX ou marca de índice
composto .CDX de controle principal (por exemplo, SET ORDER TO é emitido para exibir e
acessar a tabela na ordem de registro natural).

nÁreaTrabalho Especifica o número da área de trabalho da tabela para a qual SYS(22) retorna o
nome do arquivo de índice .IDX ou marca de índice composto .CDX de controle principal.

SYS(23) - Utilização de memória EMS do FoxPro

Retorna a quantidade de memória EMS (em segmentos de 16K) que está sendo atualmente utilizada
pela versão Padrão (16 bits) do FoxPro para MS-DOS.

Sintaxe

SYS(23)

Tipos de retorno

Caractere

Comentários

0 será retornado se nenhuma memória EMS estiver em uso.

SYS(23) sempre retorna 0 na versão Estendida (32 bits) do FoxPro para MS-DOS e do Visual
FoxPro.
SYS(24) - Limite de memória EMS

Retorna a definição limite EMS em seu arquivo de configuração do FoxPro para MS-DOS.

Sintaxe

SYS(24)

Tipos de retorno

Caractere

Comentários

SYS(24) retornará 0 na versão Padrão do FoxPro para MS-DOS se um limite EMS não estiver
incluído em seu arquivo de configuração.

SYS(24) sempre retorna 0 na versão Estendida (32 bits) do FoxPro para MS-DOS e Visual FoxPro.

Para obter informações completas sobre esta definição de configuração, consulte o capítulo 3, “
Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

SYS(3) - Nome de arquivo válido

Retorna um nome de arquivo válido que pode ser utilizado para criar arquivos temporários.

Sintaxe

SYS(3)

Tipos de retorno

Caractere

Comentários
SYS(3) pode retornar um nome não exclusivo quando emitida com sucesso em um computador
veloz. Utilize SUBSTR(SYS(2015), 3, 10) para criar um nome de arquivo válido e exclusivo de oito
caracteres.

SYS(3050) - Definir tamanho do buffer de memória

Define o tamanho do buffer de memória 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 máximo do buffer de memória em bytes. Se você


especificar um valor para nTamanhoMemBuff menor que 256K bytes, o Visual FoxPro irá definir o
tamanho do buffer de memória para 256K bytes.

Especifica 0 para nTamanhoMemBuff para retornar o tamanho do buffer de memória ao valor de


inicialização do Visual FoxPro. Este valor depende da quantidade de memória do seu computador.
Se você omitir nTamanhoMemBuff, SYS(3050) retornará o tamanho do buffer de memória para o
buffer especificado com nTipo.
Comentários

SYS(3050) permite otimizar o desempenho do Visual FoxPro ajustando a quantidade da memória


que o Visual FoxPro atribui para os buffers de primeiro plano e de segundo plano. O buffer de
memória de primeiro plano é a memória disponível para Visual FoxPro quando operado em
primeiro plano como o aplicativo ativo no momento. O buffer de memória de segundo plano é a
memória disponível para Visual FoxPro o qual opera no segundo plano quando outro aplicativo é o
de primeiro plano.

SYS(3050) retorna um valor numérico como uma seqüência de caracteres que indica a quantidade
máxima de memória que o Visual FoxPro atribui para os buffers de primeiro ou de segundo plano.

SYS(3051) - Definir o intervalo de tentativa de bloqueio

Especifica o tempo em milissegundos que o Visual FoxPro espera antes de tentar bloquear um
arquivo de índice, memo, tabela ou registro após uma tentativa de bloqueio malsucedida.

Sintaxe

SYS(3051, [nEsperarMilissegundos])

Tipos de retorno

Caractere

Argumentos

nEsperarMilissegundos Especifica o tempo de espera em milissegundos; pode ser um valor de 100


a 1000 milissegundos.
Especifica 0 para nEsperarMilissegundos para retornar o intervalo de tempo da tentativa de
bloqueio para o valor de inicialização padrão do Visual FoxPro (333 milissegundos). Se você omitir
nEsperarMilissegundos, SYS(3051) retorna o intervalo de tempo da tentativa de bloqueio.

Comentários

SYS(3051) retorna um valor numérico como uma seqüência de caracteres que indica o intervalo de
tempo da tentativa de bloqueio.

SYS(3052) - Substituir bloqueio de SET REPROCESS

Especifica se o Visual FoxPro utiliza a definição SET REPROCESS quando tenta bloquear um
arquivo de índice ou memo.

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 definição SET REPROCESS para


tentativas de bloqueio malsucedidas de arquivos de índice e memo.

Especifica verdadeiro (.T.) para utilizar a definição SET REPROCESS quando o Visual FoxPro
tenta bloquear arquivos especificados com nTipoArquivo. Especifica falso (.F.), o padrão, para
substituir a definição SET REPROCESS quando do Visual FoxPro tenta bloquear arquivos
especificados com nTipoArquivo. Ao definir como falso, o Visual FoxPro espera indefinidamente
por bloqueios nos arquivos especificados; esta opção é a mesma de comportamento de bloqueio nas
versões anteriores do FoxPro.

Se você omitir lHonorReprocess, SYS(3052) retornará a definição atual para o arquivo especificado
com nTipoArquivo.
Comentários

SYS(3052) fornece controle adicional sobre o bloqueio do arquivo no Visual FoxPro. É melhor
definir lHonorReprocess como verdadeiro (.T.) a fim de reduzir o risco de contenção de bloqueio do
arquivo se seu aplicativo utilizar processamento de transação.
SYS(3052) retorna um valor numérico de 0 como uma seqüência de caracteres (correspondendo a
falso (.F.)) ou 1 (correspondendo a verdadeiro (.T.)). Se lHonorReprocess é incluído em
SYS(3052), o valor retornado será idêntico ao valor lógico especificado para lHonorReprocess. Se
você omitir lHonorReprocess, o valor retornado será a definição atual para o tipo de arquivo
especificado com nTipoArquivo.

SYS(5) - Volume ou unidade de disco padrão

Retorna o volume ou a unidade de disco padrão atual do Visual FoxPro.

Sintaxe

SYS(5)

Tipos de retorno

Caractere

Comentários

Esta função retorna a unidade de disco padrão atual do Visual FoxPro. Utilize SET DEFAULT para
especificar um volume ou unidade de disco padrão.

SYS(5) - Exemplo de volume ou unidade de disco padrão

IF _DOS OR _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

Comentários

Esta função retorna a definição atual de SET PRINTER TO.

SYS(6) - Exemplo de dispositivo de impressora atual

? SYS(6)
SET PRINTER TO output.txt
? SYS(6)

SYS(7) - Arquivo de formato atual

Retorna o nome do arquivo de formato atual.

Sintaxe

SYS(7 [, nÁreaTrabalho])
Tipos de retorno

Caractere

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho para a qual SYS(7) retorna o nome do
arquivo de formato. O nome do arquivo de formato para a área de trabalho atual será retornado se
você omitir nÁreaTrabalho.

Comentários

Um arquivo de formato é aberto com SET FORMAT. A seqüência vazia será retornada se um
arquivo de formato não estiver aberto na área de trabalho especificada.

SYS(9) - Número serial do Visual FoxPro

Retorna o número serial do seu Visual FoxPro.

Sintaxe

SYS(9)

Tipos de retorno

Caractere
TABLEREVERT( ), função

Ignora as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer e restaura os
dados de OLDVAL( ) para cursores remotos e os valores atuais do disco para tabelas e cursores
locais.

Sintaxe

TABLEREVERT([lTodasLinhas [, cAliasTabela | nÁreaTrabalho]])

Tipos de retorno

Numérico

Argumentos

lTodasLinhas Determina se todas as mudanças feitas na tabela ou no cursor serão ignoradas. Se


lTodasLinhas for verdadeiro (.T.), e a utilização do buffer de tabela estiver ativada, as alterações
feitas em todos os registros da tabela ou do cursor serão ignoradas. Se lTodasLinhas for falso (.F.) e
a utilização do buffer de tabela estiver ativada, somente as alterações feitas no registro atual da
tabela ou do cursor serão ignoradas.

Se a utilização do buffer de linha estiver ativada, o valor de lTodasLinhas será ignorado, e as


alterações feitas no registro atual da tabela ou do cursor serão ignoradas.

O valor padrão de lTodasLinhas é falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor cujas alterações serão ignoradas.

NÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor cujas alterações serão


ignoradas.

Comentários

A função TABLEREVERT( ) retornará o número de registros cujas alterações foram ignoradas.


Observação Em uma rede, os dados presentes atualmente no disco poderão diferir dos dados
contidos no disco quando a tabela e o cursor foram criados. Outros usuários da rede podem ter
alterado os dados depois que a tabela foi aberta ou depois que o cursor foi criado.

A função TABLEREVERT( ) não pode ignorar as alterações feitas em uma tabela ou cursor onde a
utilização do buffer de linha não esteja ativada. Se você emitir TABLEREVERT( ), e a utilização
do buffer de linha ou de tabela não estiver ativada, o Visual FoxPro irá gerar uma mensagem de
erro. Utilize a função CURSORSETPROP( ) para ativar ou desativar a utilização do buffer de linha
ou de tabela.

As alterações serão ignoradas na tabela ou cursor aberto na Área de trabalho selecionada


atualmente, se TABLEREVERT( ) for emitida sem os argumentos opcionais cAliasTabela ou
nÁreaTrabalho.

A função TABLEREVERT( ) não retorna um ponteiro de registro a sua posição original.

TABLEREVERT( ), exemplo da função

O exemplo abaixo demonstra como a função TABLEREVERT( ) pode ser utilizada para ignorar as
alterações feitas a uma tabela com utilização de buffer. MULTILOCKS é definido como ON, um
requisito de utilização do buffer de tabela. A tabela customer no banco de dados testdata é aberta e
CURSORSETPROP( ) será utilizado para definir o modo de utilização de buffer para utilização de
buffer de tabela otimista (5).
O valor do campo cust_id é exibido e o campo cust_id é modificado com REPLACE. O novo valor
do campo cust_id será então exibido. TABLEREVERT( ) é utilizado para retornar a tabela ao seu
estado original (TABLEUPDATE( ) poderia ser emitida para gravar fisicamente alterações). O
valor revertido do campo cust_id será, então, exibido.

CLOSE DATABASES
SET MULTILOCKS ON && Deve estar ativado para a utilização 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('Utilização de buffer', 5, 'customer') && Ativa a utilização do buffer de
tabela

CLEAR
? 'Valor original de cust_id: '
?? cust_id && Exibe o valor atual de cust_id
REPLACE cust_id WITH '***' && Altera o conteúdo do campo

? 'Novo valor de cust_id: '


?? cust_id && Exibe o novo valor de cust_id
= TABLEREVERT(.T.) && Ignora todas as alterações na tabela
? 'Valor revertido de cust_id: '
?? cust_id && Exibe o valor revertido de cust_id
TABLEUPDATE( ), função

Grava fisicamente as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer.

Sintaxe

TABLEUPDATE([nLinhas [, lForçar]] [, cAliasTabela | nÁreaTrabalho]


[, cMatrizErro])

Tipos de retorno

Lógico

Argumentos
nLinhas Especifica se as alterações feitas na tabela ou no cursor serão gravadas fisicamente.Se
nLinhas for 0 e a utilização do buffer de tabela ou de linha estiver ativo, apenas as alterações feitas
no registro atual da tabela ou do cursor serão gravadas fisicamente.

Se nLinhas for 1 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os
registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 1 e a utilização do buffer
de linha estiver ativo, apenas as alterações feitas no registro atual da tabela ou do cursor serão
gravadas fisicamente.

Se nLinhas for 2 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os
registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 2 e a utilização do buffer
de linha estiver ativo, apenas as alterações feitas no registro atual na tabela ou no cursor serão
gravadas fisicamente.

Ao contrário do que acontece com os valores 0 e 1 para nLinha, um erro não ocorre quando uma
alteração não pode ser gravada fisicamente e o Visual FoxPro continua a processar qualquer registro
restante na tabela ou no cursor. Se cMatrizErro for incluída, uma matriz contendo informações de
erro será criada quando ocorrer um erro.

O valor padrão para nLinhas é 0.

lForçar Determina se as alterações feitas na tabela ou no cursor por outro usuário da rede serão
sobrescritas. Se lForçar for verdadeiro (.T.), quaisquer alterações feitas na tabela ou no cursor por
outro usuário da rede serão sobrescritas.

Se lForçar for falso (.F.), o Visual FoxPro gravará fisicamente as alterações na tabela ou no cursor,
começando com o primeiro registro até o fim da tabela ou do cursor. Se um registro modificado por
outro usuário da rede for encontrado, o Visual FoxPro irá gerar um erro.

Quando o Visual FoxPro gera o erro , este pode ser gerenciado através da rotina ON ERROR, e esta
rotina pode emitir a função TABLEUPDATE( ) com lForçar definido para verdadeiro (.T.) a fim de
gravar fisicamente as alterações feitas no registro. Opcionalmente, se uma transação estiver em
andamento, a rotina ON ERROR poderá gerenciar o erro e, em seguida, emitir ROLLBACK para
reverter a tabela ou o cursor para seu estado original.

O valor padrão para lForçar é falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor no qual as alterações são gravadas


fisicamente.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor no qual as alterações são


gravadas fisicamente.

cMatrizErro Especifica o nome de uma matriz criada quando nLinhas é 2 e altera um registro que
não pode ser gravado fisicamente. A matriz possui uma coluna simples contendo o número dos
registros para os quais as alterações não puderam ser gravadas fisicamente.

Comentários
A função TABLEUPDATE( ) retornará verdadeiro (.T.) se as alterações feitas em todos os registros
forem gravadas fisicamente; do contrário, TABLEUPDATE( ) retornará falso (.F.). Se você
especificar 0 ou 1 nLinha, o ponteiro do registro permanece em um registro onde as alterações não
puderam ser gravadas fisicamente e pode emitir AERROR( ) para determinar porque as alterações
não puderam ser gravadas.

A função TABLEUPDATE( ) não poderá gravar fisicamente as alterações feitas em uma tabela ou
cursor que não tenha a utilização do buffer de linha ou de tabela ativada. Se você emitir
TABLEUPDATE( ), e a utilização do buffer de linha não estiver ativada, o Visual FoxPro irá gerar
uma mensagem de erro. Entretanto, TABLEUPDATE( ) ainda poderá gravar fisicamente alterações
em uma tabela ou cursor que possua regras de validação. Utilize CURSORSETPROP( ) para ativar
ou desativar a utilização do buffer de linha ou de tabela.

As alterações são gravadas fisicamente na tabela ou no cursor aberto na Área de trabalho


atualmente selecionada se TABLEUPDATE( ) for emitida sem os argumentos opcionais
cAliasTabela ou nÁreaTrabalho.

TABLEUPDATE( ), exemplo da função

O exemplo abaixo demonstra como a função TABLEUPDATE( ) pode ser utilizada para gravar
alterações fisicamente em uma tabela com utilização de buffer. Uma tabela denominada employees
é criada e INSERT - SQL é utilizado para inserir o valor “Smith” no campo cLastName.
MULTILOCKS é definido como ON, um requisito de utilização do buffer de tabela.
CURSORSETPROP( ) é utilizado para definir o modo de utilização do buffer para utilização do
buffer de tabela otimista (5).

O valor original do campo cLastName (Smith) é exibido e então o campo cLastName é modificado
com REPLACE. O novo valor do campo cLastName (Jones) será exibido. TABLEUPDATE( ) é
utilizado para gravar alterações fisicamente na tabela (a função TABLEREVERT( ) poderia ser
emitida ao invés de ignorar as alterações). O valor atualizado do campo cLastName (Jones) é então
exibido.

CLOSE DATABASES
CREATE TABLE employee (cLastName C(10))
SET MULTILOCKS ON && Deve estar ativado para a utilização do buffer de tabela
= CURSORSETPROP('Utilização do buffer', 5, 'employee' ) && Ativa a utilização do buffer da
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 alterações fisicamente


? 'Valor atualizado de cLastName: '
?? cLastName && Exibe o valor atual de cLastName (Jones)

TAG( ), função

Retorna um nome de marca a partir de um arquivo de índice composto .CDX de várias entradas
aberto ou o nome de um arquivo de índice de entrada única .IDX aberto.

Sintaxe

TAG([NomeArquivoCDX] nNúmeroMarca [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de índice composto .CDX de várias entradas


a partir do qual TAG( ) retornará o nome da marca.

NNúmeroMarca Especifica um número correspondente à ordem na qual uma marca foi criada no
arquivo de índice composto. Por exemplo, se nNúmeroMarca for 1, TAG( ) retornará o nome da
primeira marca criada no arquivo de índice composto. Se nNúmeroMarca for 2, TAG( ) retornará o
nome da segunda marca criada, etc. TAG( ) retornará uma seqüência vazia quando nNúmeroMarca
exceder o número de nomes de marca.

Se você omitir NomeArquivoCDX, TAG( ) retornará nomes de marcas de arquivo de índice


composto e nomes de arquivo de índice de entrada única em uma ordem específica, conforme
indicado abaixo.

1. Nomes de arquivos de índice de entrada única são retornados de acordo com sua ordem na
cláusula INDEX de USE ou SET INDEX.
2. Nomes de marcas do arquivo de índice composto estrutural (caso exista um para a tabela)
são retornados.
3. Nomes de marcas de outros arquivos de índice composto abertos são retornados na ordem
em que as marcas foram criadas nos arquivos de índice composto e na ordem em que os arquivos de
índice composto são especificados na cláusula INDEX de USE ou SET INDEX.

nÁreaTrabalho | cAliasTabela Retorna nomes de marcas e nomes de arquivo de índice a partir de


arquivos abertos em outra Área de trabalho. nÁreaTrabalho especifica um número de Área de
trabalho e cAliasTabela especifica um alias de tabela. Como padrão, nomes de marca e de arquivo
de índice são retornados a partir de arquivos que estão na Área de trabalho atual.

Comentários

As marcas são entradas de índice em arquivos de índice composto .CDX de várias entradas criados
com INDEX.

Observação Os arquivos de índice composto .CDX de várias entradas e os arquivos de índice de


entrada única .IDX podem ser abertos para uma tabela com a cláusula INDEX de USE ou com SET
INDEX. Um arquivo de índice composto estrutural .CDX é automaticamente aberto com essa
tabela.

TAG( ), exemplo da função

O exemplo abaixo abre a tabela customer no banco de dados testdata. FOR ... ENDFOR é utilizado
para criar um loop no qual CDX( ) é utilizado para exibir o nome de cada índice estrutural.

CLOSE 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 não forem encontradas mais nenhuma tabulação
ENDIF
ENDFOR

TAN( ), função

Esta função trigonométrica retorna a tangente de um ângulo.

Sintaxe

TAN(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica o ângulo em radianos para o qual TAN( ) retorna a tangente. Para converter
um ângulo de graus para radianos, utilize DTOR( ). O número de casas decimais retornadas por
TAN( ) pode ser especificado com SET DECIMALS.

TAN( ), exemplo da função

CLEAR
? TAN(0) && Exibe 0.00
? TAN(PI( )/4) && Exibe 1.00
? TAN(PI( )*3/4) && Exibe -1.00
TEXT ... ENDTEXT, comando

Fornece as linhas de texto, os resultados de expressões e funções e o conteúdo das variáveis de


memória.

Sintaxe

TEXT
LinhasTexto
ENDTEXT

Argumentos

LinhasTexto Especifica o texto enviado para o dispositivo de saída atual. LinhasTexto pode
consistir em texto, variáveis de memória, elementos de matriz, expressões, funções ou qualquer
combinação desses itens.

Expressões, funções, variáveis de memória e elementos de matriz especificados com LinhasTexto


são avaliados apenas se SET TEXTMERGE estiver ativado (ON) e devem estar demarcados por
delimitadores especificados por SET TEXTMERGE DELIMITERS. Se SET TEXTMERGE estiver
desativado (OFF), expressões, funções, variáveis de memória e elementos de matriz serão
fornecidos como literais junto com seus delimitadores.

Por exemplo, a data de hoje será fornecida se SET TEXTMERGE estiver ativado (ON) e uma linha
de texto contiver <<DATE( )>>. Se SET TEXTMERGE estiver desativado (OFF), <<DATE( )>>
será fornecido literalmente.

Se você colocar comentários em TEXT e ENDTEXT ou após \ ou \\, os comentários também serão
fornecidos.

Comentários

Este comando de programação estruturada envia as linhas de texto colocadas entre TEXT e
ENDTEXT para a janela principal do Visual FoxPro, uma janela definida pelo usuário, uma
impressora, um arquivo de texto ou um arquivo de nível inferior.

TEXT envia as linhas de texto para o dispositivo de saída atual. Esse procedimento prossegue até
que uma instrução ENDTEXT seja encontrada ou até que o programa seja encerrado.

Como padrão, a saída de TEXT ... ENDTEXT é enviada para a janela principal do Visual FoxPro
ou para a janela ativa. Emita SET CONSOLE OFF para eliminar a saída da janela principal do
Visual FoxPro ou da janela ativa. Utilize SET PRINTER para enviar a saída para uma impressora
ou para um arquivo de texto.
A saída de TEXT ... ENDTEXT também pode ser enviada para um arquivo de nível inferior criado
ou aberto com FCREATE( ) ou FOPEN( ). Se um identificador de arquivo retornado por
FCREATE( ) ou FOPEN( ) for armazenado na variável de memória de sistema _TEXT, a saída será
direcionada para o arquivo de nível inferior correspondente.

TEXT ... ENDTEXT, exemplo do comando

O exemplo a seguir demonstra como SET TEXTMERGE, SET TEXTMERGE DELIMITERS,


TEXT ... ENDTEXT e a variável do sistema _TEXT podem ser utilizados.
Um arquivo de nível inferior chamado NAMES.TXT é criado e o identificador de arquivo é
armazenado na variável do sistema _TEXT. O programa será finalizado se NAMES.TXT não puder
ser criado. A tabela customer é aberta e os nomes dos 10 primeiros contatos são emitidos para
NAMES.TXT. O texto e os resultados das funções serão emitidos para o arquivo de texto.

O arquivo de texto que contém os nomes é aberto com MODIFY FILE.

CLEAR
CLOSE DATABASES
SET TALK OFF
SET TEXTMERGE ON && Ativa a incorporação de expressões e funções
STORE FCREATE('names.txt') TO _TEXT && Cria um arquivo de nível inferior
IF _TEXT = -1 && Não pode criar uma arquivo de nível inferior então saia do programa
WAIT WINDOW 'Não pode criar um arquivo de saída, pressione uma tecla para sair'
CANCEL
ENDIF

CLOSE 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( ), função

Retorna ao horário do sistema atual de 24 horas um formato de seqüência de 8 caracteres


(hh:mm:ss).

Sintaxe

TIME([nExpressão])

Tipos de retorno

Caractere

Argumentos

nExpressão O horário retornado inclui centésimos de um segundo se nExpressão for incluída. A


expressão numérica nExpressão pode assumir qualquer valor. Entretanto, a resolução máxima atual
é cerca de 1/18 segundos. Utilize SECONDS( ) para obter uma resolução maior.
TOTAL, comando

Calcula os totais dos campos numéricos na tabela selecionada atualmente.

Sintaxe

TOTAL TO NomeTabela
ON NomeCampo
[FIELDS ListaNomesCampos]
[Escopo]
[FOR lExpressão1]
[WHILE lExpressão2]
[NOOPTIMIZE]

Argumentos

NomeTabela Especifica o nome da tabela que conterá os totais. Se a tabela especificada não
existir, o Visual FoxPro irá criá-la. Se a tabela existir e SET SAFETY estiver ativada, o Visual
FoxPro irá perguntar se você deseja sobrescrevê-la. Se SET SAFETY estiver desativada, não será
feita nenhuma pergunta e a tabela de saída será sobrescrita.

NomeCampo Especifica o campo no qual os totais são agrupados. A tabela deve ser classificada de
acordo com esse campo, ou uma marca de índice ou índice aberto deve ter esse campo como sua
expressão-chave.

FIELDS ListaNomesCampos Especifica os campos a serem totalizados. Separe os nomes dos


campos na lista por vírgulas. Se você omitir a cláusula FIELDS, todos os campos numéricos serão
totalizados como padrão.

Escopo Especifica uma faixa de registros a serem totalizados. As cláusulas do escopo são as
seguintes: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

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

FOR lExpressão1 Especifica uma condição pela qual apenas os registros que satisfazem à
condição lógica lExpressão1 são incluídos nos totais.

Rushmore otimiza uma consulta criada com TOTAL ... FOR se lExpressão1 for uma expressão
otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia


Rushmore” no capítulo 15, “Otimizando aplicativos” no Guia do Desenvolvedor.
WHILE lExpressão2 Especifica uma condição pela qual os registros da tabela atual são incluídos
nos totais enquanto a expressão lógica lExpressão2 resulta em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimização Rushmore de TOTAL.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia


Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

A tabela na Área de trabalho selecionada atualmente deve ser classificada ou indexada. Um total
separado é calculado para cada conjunto de registros com um valor de campo comum ou valor-
chave de índice único. Os resultados são colocados em registros em uma segunda tabela. Um
registro é criado na segunda tabela para cada valor de campo comum ou valor-chave de índice
único.

Um estouro de capacidade numérica pode ocorrer se os campos numéricos na segunda tabela não
forem grandes o suficiente para conter os totais. O Visual FoxPro conserva as partes mais
significativas dos totais quando ocorre um estouro de capacidade numérica. Quando um campo é
pequeno demais para aceitar um total:

· As casas decimais são cortadas e a parte decimal restante do total é arredondada.


· Se o total ainda não couber, será utilizada a notação cientifica se o campo do total tiver sete
ou mais dígitos.
· Finalmente, os asteriscos substituem o conteúdo do campo.

TRANSFORM( ), função

Retorna uma seqüência de caracteres a partir de uma expressão em um formato determinado pelo
código do formato.
Sintaxe

TRANSFORM(eExpressão, cCódigosFormato)

Tipos de retorno

Caractere

Argumentos

eExpressão Especifica o caractere, moeda, data ou expressão numérica a ser formatada.

cCódigosFormato Especifica um ou mais códigos de formatos que determinam como a expressão é


formatada. A tabela a seguir traz uma lista dos códigos de formato disponíveis.

Códigos de formato Descrição

@C CR é incluído para valores monetários positivos ou valores numéricos para indicar um


crédito.
@D Valores de data e data e hora são convertidos para o formato SET DATE atual.
@E Valores de data e data e hora são convertidos para o formato de data BRITISH.
@T Espaços à direita e à esquerda são removidos dos valores de caracteres.
@X DB é incluído para valores monetários negativos ou valores numéricos para indicar um
débito.
@Z Se for 0, os valores numéricos ou monetários serão convertidos em espaços.
@( Coloca valores numéricos ou monetários negativos em parênteses.
@^ Converte valores numéricos ou monetários em notação cientifica.
@0 Converte valores numéricos ou monetários em seus equivalentes hexadecimais. O valor
numérico ou monetário deverá ser positivo e menor que 4,294,967,296.
! Transforma dados de caracteres em letras maiúsculas.
$ Adiciona o símbolo atual de moeda especificado por SET CURRENCY aos valores
numéricos ou monetários. Pelo padrão, o símbolo é colocado imediatamente antes ou depois do
valor. Entretanto, o símbolo de moeda e sua posição (especificada em SET CURRENCY), o
caractere separador (especificado em SET SEPARATOR) e o caractere decimal (especificado em
SET POINT) podem ser alterados.
X Especifica a largura dos valores dos caracteres. Por exemplo, se cCódigosFormato for
‘XX’, 2 caracteres serão retornados.
Y Converte valores lógicos verdadeiros (.T.) e falsos (.F.) em Y e N, respectivamente.
! Converte caracteres em letras minúsculas para letras maiúsculas.
. Especifica a posição do ponto decimal nos valores numéricos ou monetários.
, Separa dígitos para a esquerda do ponto decimal nos valores decimais ou monetários.

TRANSFORM( ), exemplo da função

STORE 12.34 TO gnPrice


CLEAR
? TRANSFORM(gnPrice, '$$$$.99') && Exibe $12.34
TRIM( ), função

Retorna a expressão de caracteres especificada com todos espaços à direita removidos.

Sintaxe

TRIM(cExpressão)

Tipos de retorno

Caractere

Argumentos
cExpressão Especifica a expressão de caracteres a partir da qual TRIM( ) remove todos os espaços
à direita.

Comentários

TRIM( ) é idêntica à RTRIM( ).

TRIM( ), exemplo da função

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
? 'O contato para '+ TRIM(company) + ' é ' + contact
TTOC( ), função

Converte a expressão de data e hora para um valor de caractere de um formato especificado.

Sintaxe

TTOC(tExpressão [, 1 | 2])

Tipos de retorno

Caractere

Argumentos

tExpressão Especifica uma expressão de data e hora a partir da qual TTOC( ) retorna um valor de
caractere. Se tExpressão contiver apenas uma hora, o Visual FoxPro adicionará a data padrão
30/12/1899 a tExpressão. Se tExpressão contiver apenas uma data, o Visual FoxPro adicionará a
hora padrão de meia-noite (12:00:00 A.M.) a tExpressão.

1 Especifica que TTOC( ) retorna uma seqüência de caracteres em um formato apropriado para
indexação. A seqüência de caracteres possui o formato de 14 caracteres aaaa:mm:dd:hh:mm:ss, que
não é afetado pelas definições atuais de SET CENTURY ou SET SECONDS.

2 Especifica que TTOC( ) retorna uma seqüência de caracteres consistindo de apenas uma parte da
expressão de data e hora. As definições de SET SECONDS e SET DATE especificam se os
segundos, na expressão de hora, serão incluídos na seqüência de caracteres. Observe que se SET
DATE estiver definido como LONG (longo) ou SHORT (curto), o formato da seqüência de
caracteres será determinado pelo formato da definição de hora do Painel de controle.

TTOC( ), exemplo da função

O exemplo a seguir cria uma variável do tipo DataHora denominada gtDtime. TYPE( ) exibe T,
indicando que a variável é do tipo DataHora. TTOC( ) é utilizado para converter a variável em uma
do tipo caractere e TYPE( ) agora exibirá C, indicando que a variável é do tipo caractere após a
conversão.

STORE DATETIME( ) TO gtDtime && Cria uma variável de memória do tipo 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( ), função

Retorna um valor de Data a partir de uma expressão de data e hora.

Sintaxe

TTOD(tExpressão)

Tipos de retorno

Data

Argumentos

tExpressão Especifica uma expressão de data e hora a partir da qual TTOD( ) retorna um valor de
data. tExpressão deve resultar em uma expressão de data e hora válida. Se tExpressão contiver
apenas uma hora, o Visual FoxPro adicionará a data padrão de 30/12/1899 ao argumento tExpressão
e retornará essa data padrão.

TTOD( ), exemplo da função

O exemplo a seguir cria uma variável do tipo DataHora denominada gtDtime. TYPE( ) exibe T,
indicando que a variável é do tipo DataHora. TTOD( ) é utilizado para converter a variável em uma
do tipo data e TYPE( ) agora exibirá D, indicando que a variável é do tipo data após a conversão.

STORE DATETIME( ) TO gtDtime && Cria uma variável de memória do tipo 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( ), função

Retorna o comprimento de uma expressão de caracteres em relação à largura de caractere média de


uma fonte.

Sintaxe

TXTWIDTH(cExpressão [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica uma expressão de caracteres para a qual TXTWIDTH( ) retorna o


comprimento. Se você incluir apenas cExpressão, o comprimento da expressão de caracteres é
retornado para a fonte atual da janela principal do Visual FoxPro ou da janela de saída ativa. Uma
fonte não proporcional sempre retorna um valor igual ao número de caracteres em cExpressão.

Inclui os argumentos opcionais cNomeFonte, nTamanhoFonte e cEstiloFonte para determinar o


comprimento de uma expressão de caracteres com uma fonte específica, um tamanho de fonte em
pontos ou um estilo de fonte.
cNomeFonte Especifica o nome da fonte. Inclui cNomeFonte para retornar o comprimento de uma
expressão de caracteres com uma fonte específica.

nTamanhoFonte Especifica um número que corresponde ao tamanho da fonte em pontos. Inclui


nTamanhoFonte para retornar o comprimento de uma expressão de caracteres com um tamanho em
pontos específico.

cEstiloFonte Especifica um estilo especial de fonte para a expressão de caracteres. cEstiloFonte é


um código de estilo de fonte especificado por um caractere ou conjunto de caracteres. O estilo
normal da fonte será utilizado se cEstiloFonte não for incluído.

A seguir, é apresentada uma tabela com os caracteres para cada estilo de fonte:

Caractere Estilo da fonte

B Negrito
I Itálico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Você pode incluir mais de um caractere para especificar uma combinação de estilos de fontes. Por
exemplo, BI especifica um estilo de fonte Negrito e Itálico.
O comando a seguir exibe uma mensagem em fonte Courier normal de 24 pontos, centralizada
horizontalmente na janela principal do Visual FoxPro:

@ 25,(WCOLS( )-TXTWIDTH('Olá!','Courier ',24)* ;


FONTMETRIC(6,'Courier ',24)/FONTMETRIC(6))/2 ;
SAY 'Olá!' FONT 'Courier ',24

Comentários

TXTWIDTH( ) retorna o número de caracteres ocupado por uma expressão de caracteres


cExpressão, com base na largura média de caractere de uma fonte especificada (a largura média de
caractere de uma fonte é denominada foxel). Utilize FONTMETRIC(6) para determinar a largura
média de caractere de uma fonte.

Se você não incluir uma fonte em TXTWIDTH( ), o valor retornado por TXTWIDTH( ) será
determinado pela fonte atual da janela principal do Visual FoxPro, uma vez que a saída é
direcionada para a janela principal do Visual FoxPro quando TXTWIDTH( ) é emitida. Se a saída
estiver sendo direcionada para uma janela definida pelo usuário, o valor retornado é determinado
pela fonte atual da janela.
TYPE( ), função

Avalia uma expressão e retorna o tipo de dados do seu conteúdo.

Sintaxe

TYPE(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão a ser avaliada, que pode ser uma variável, um campo, um
campo Memo ou qualquer outra expressão. A expressão deverá ser passada como uma seqüência de
caracteres, com aspas nos nomes de variáveis de memória, campos e assim por diante. Se não forem
colocadas aspas na expressão, a função TYPE( ) retornará “U” (expressão indefinida).

Comentários

A tabela a seguir lista os valores de caracteres que TYPE( ) retorna e seus correspondentes tipos de
dados:

Tipo de dados Caractere retornado

Caractere C
Numérico (também flutuante, duplo e inteiro) N
Moeda Y
Data D
Data e hora T
Lógico L
Memo M
Objeto O
Geral G
Tipo indefinido de expressão U

TYPE( ), exemplo da função

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
nTest = 1.01
cTest = "Seqüência"

CLEAR
? TYPE('customer.contact') && Exibe C
? TYPE('(12 * 3) + 4') && Exibe N
? TYPE('DATE( )') && Exibe D
? TYPE('.F. OR .T.') && Exibe L
? TYPE('ANSWER=42') && Exibe U
? TYPE('$19.99') && Exibe Y
? TYPE('nTest') && Exibe N

? TYPE('cTest') && Exibe C

TYPE, comando

Exibe o conteúdo de um arquivo.

Sintaxe

TYPE NomeArquivo1
[AUTO]
[WRAP]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo2]
[NUMBER]

Argumentos
NomeArquivo1 Especifica o nome do arquivo a ser exibido. O nome deve incluir uma extensão de
arquivo.

AUTO Ativa o recuo automático. Quando você inclui WRAP, TYPE recua, automaticamente,
textos com quebras de linha de cada parágrafo com o mesmo valor de recuo da primeira linha do
parágrafo. Por exemplo:

· Linhas quebradas são alinhadas com a tabulação quando um parágrafo inicia com uma
tabulação.
· Linhas quebradas são alinhadas com a tabulação quando um parágrafo inicia com um
número (ou outro texto) seguido de uma tabulação e texto.
· Linhas quebradas são recuadas com o mesmo valor de recuo da primeira linha quando a
primeira linha de um parágrafo é recuada com espaços.

WRAP Ativa a quebra de texto de modo que uma palavra muito grande para caber no final de uma
linha seja automaticamente movida para a próxima linha.

TO PRINTER [PROMPT] Direciona a saída para a impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo de impressão
antes de a impressão ser iniciada. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo2 Direciona a saída para o arquivo especificado com NomeArquivo2.

NUMBER Coloca os números das linhas no início de cada linha na saída.

Comentários

TYPE exibe o conteúdo dos arquivos. Essa exibição pode ser direcionada para a janela principal do
Visual FoxPro, uma janela ativa definida pelo usuário, para uma impressora ou por outro arquivo.

Quando SET HEADINGS está ON, o Visual FoxPro insere uma alimentação de linha, o caminho e
o nome do arquivo, bem como a data no início da saída produzida com TYPE. Se SET HEADINGS
estiver OFF, essas informações não serão incluídas.

No FoxPro para MS-DOS, se a configuração do driver de uma impressora for carregada e você
direcionar a saída de TYPE para um arquivo ou uma impressora, TYPE exibirá o conteúdo do
arquivo utilizando as definições da configuração do driver de impressora.
UNLOCK, comando

Libera um bloqueio de registro, bloqueios de múltiplos registros ou um bloqueio de arquivo de uma


tabela, ou libera todos os bloqueios de registros e arquivos de todas as tabelas abertas.

Sintaxe
UNLOCK
[RECORD nNúmeroRegistro]
[IN nÁreaTrabalho | cAliasTabela]
[ALL]

Argumentos

RECORD nNúmeroRegistro Libera o bloqueio do registro em um registro de número


nNúmeroRegistro. Você pode especificar 0 para nNúmeroRegistro para desbloquear o cabeçalho de
tabela com LOCK(0) ou RLOCK(0).

A emissão de UNLOCK RECORD nNúmeroRegistro para um registro em uma tabela com um


bloqueio de arquivo libera o bloqueio.

IN nÁreaTrabalho | cAliasTabela Libera um bloqueio (ou bloqueios) de registro ou um bloqueio


de arquivo de uma tabela em uma determinada Área de trabalho. nÁreaTrabalho especifica o
número da Área de trabalho e cAliasTabela especifica o alias da tabela. Se você não incluir
nÁreaTrabalho ou cAliasTabela, UNLOCK irá liberar um bloqueio (ou bloqueios) de registro ou
um bloqueio de arquivo da tabela na Área de trabalho selecionada no momento.

ALL Libera todos os bloqueios de registros e de arquivos em todas as áreas de trabalho.

Para obter maiores informações sobre o bloqueio de registros e de arquivos e o compartilhamento


de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado,” no Guia
do Desenvolvedor.

Comentários

Os bloqueios de registros e de arquivos só podem ser removidos de uma tabela pelo usuário que os
executou. UNLOCK não consegue desbloquear uma tabela aberta para uso exclusivo.

Um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo será liberado de uma tabela na
Área de trabalho atual se você emitir UNLOCK sem argumentos adicionais.

Caso tenham sido estabelecidas relações entre tabelas, a liberação de um bloqueio (ou bloqueios) de
registro ou de um bloqueio de arquivo de uma das tabelas não desbloqueará os registros ou arquivos
relacionados. É preciso liberar os bloqueios de registros ou de arquivos explicitamente em cada
arquivo relacionado. Você pode liberar todos os bloqueios em quaisquer tabelas relacionadas
emitindo UNLOCK ALL (isso também libera bloqueios em arquivos não-relacionados).

UNLOCK, exemplo do comando

CLOSE DATABASES
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList && Bloqueia registros de 1 até 4
gcOldExc = SET('EXCLUSIVE') && Salva a definição 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 definição original EXCLUSIVE

UPPER( ), função

Retorna a expressão de caracteres especificada em maiúscula.

Sintaxe

UPPER(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica que expressão de caracteres UPPER( ) converte em maiúscula.

Comentários
Cada letra minúscula (a – z) na expressão de caracteres é convertida em maiúscula (A – Z) na
seqüência retornada. Todos os outros caracteres permanecem inalterados.

UPPER( ), exemplo da função

CLEAR
? UPPER('abcdefgh') && Exibe ABCDEFGH

USE, comando

Abre uma tabela e seus arquivos de índice associados, ou uma visualização SQL.

Sintaxe

USE [[NomeBancoDados.]Tabela | NomeVisualizaçãoSQL | ?]


[IN nÁreaTrabalho | cAliasTabela]
[ONLINE]
[ADMIN]
[AGAIN]
[NOREQUERY [nNúmeroSessãoDados]]
[NODATA]
[INDEX ListaArquivosNÍndice | ?
[ORDER [nNúmeroNÍndice | NomeArquivoIDX
| [TAG] NomeMarca [OF NomeArquivoCDX]
[ASCENDING | DESCENDING]]]]
[ALIAS cAliasTabela]
[EXCLUSIVE]
[SHARED]
[NOUPDATE]

Argumentos

[NomeBancoDados.]NomeTabela Especifica o nome da tabela a ser aberta. Como os espaços são


significativos nos nomes de arquivos do Windows 95, Windows NT e no Macintosh, evite utilizar
espaços desnecessários em NomeTabela.

Para abrir uma tabela que não está no banco de dados atual, qualifique o nome da tabela com o
nome do banco de dados, utilizando um ponto (.) para separar os nomes das tabelas e do banco de
dados. Se você não qualificar uma tabela com um nome de banco de dados, o Visual FoxPro poderá
abrir tabelas apenas no banco de dados atual.

NomeVisualizaçãoSQL Especifica o nome de uma visualização SQL a ser aberta no banco de


dados atual. Uma visualização SQL é criada com CREATE SQL VIEW. NomeVisualizaçãoSQL
também pode ser o nome de uma visualização off-line criada com CREATEOFFLINE( ).
? Exibe a caixa de diálogo Usar, na qual você pode escolher uma tabela a ser aberta.

IN nÁreaTrabalho Especifica a Área de trabalho na qual a tabela é aberta. Você pode fechar uma
tabela em uma Área de trabalho específica emitindo USE com a cláusula IN e o número da Área de
trabalho.

A cláusula IN suporta 0 como uma Área de trabalho. Ao incluir 0, é aberta uma tabela na Área de
trabalho disponível de menor número. Por exemplo, se houver tabelas abertas nas áreas de trabalho
de 1 a 10, o seguinte comando abrirá a tabela customer na Área de trabalho 11:

USE customer IN 0

IN cAliasTabela Especifica que uma tabela será aberta na Área de trabalho de uma tabela que está
aberta atualmente. O alias da tabela aberta é especificado com cAliasTabela.

Se você omitir nÁreaTrabalho e cAliasTabela, a tabela será aberta na Área de trabalho selecionada
atualmente.

ONLINE Abre uma visualização off-line com CREATEOFFLINE( ).Especifica o nome da


visualização off-line em NomeVisualizaçãoSQL. Utilize TABLEUPDATE( ) para atualizar os
dados no servidor.

A visualização off-line deve ser aberta de forma exclusiva. Inclua a cláusula EXCLUSIVE em USE
ou SET EXCLUSIVE para ON antes de abrir a visualização off-line com USE.

ADMIN Abre uma visualização off-line criada com CREATEOFFLINE( ), mas não atualiza os
dados no servidor com as alterações feitas na visualização off-line. Ao abrir uma visualização off-
line com a palavra-chave ADMIN permite fazer alterações na visualização off-line sem atualizar os
dados no servidor.

AGAIN Para abrir uma tabela simultaneamente em diversas áreas de trabalho, você pode adotar
um dos procedimentos a seguir:

· Selecione outra Área de trabalho e emita USE com o nome da tabela e a cláusula AGAIN.
· Emita USE com o nome da tabela e com a cláusula AGAIN, e especifique uma Área de
trabalho diferente com a cláusula IN.

Quando você abre uma tabela novamente em outra Área de trabalho, a tabela na nova Área de
trabalho assume os atributos da tabela da Área de trabalho original. Por exemplo, se uma tabela for
aberta com acesso exclusivo ou somente para leitura e for aberta novamente em outra Área de
trabalho, ela será aberta com acesso exclusivo ou somente para leitura na nova Área de trabalho.

Arquivos de índice abertos para a tabela original estarão disponíveis para a tabela que você abrir
novamente se você não abrir índices ao abrir a tabela. A ordem do índice está definida com 0 nas
áreas de trabalho em que a tabela é aberta novamente.

Você pode abrir índices que não foram abertos na tabela original. Isto define a ordem do índice
como 0 para a tabela original.

A tabela aberta novamente utiliza o alias padrão da Área de trabalho. Você pode incluir um alias
sempre que abrir uma tabela em diversas áreas de trabalho, desde que os aliases sejam exclusivos.
No Visual FoxPro, no FoxPro para Windows, a abertura de uma tabela novamente em outra Área de
trabalho não utiliza um identificador de arquivo adicional.

NOREQUERY [nNúmeroSessãoDados] Especifica que os dados de uma visualização SQL remota


não são transferidos novamente. NOREQUERY está disponível somente para visualizações SQL e
é utilizado normalmente quando você abre uma visualização SQL novamente incluindo a cláusula
AGAIN. A inclusão da cláusula NOREQUERY aumenta o desempenho de grandes conjuntos de
dados, pois os dados não precisam ser transferidos novamente.

nNúmeroSessãoDados pode ser incluído para especificar que os dados de uma visualização SQL
remota em uma sessão de dados específica não são descarregados novamente. Se
nNúmeroSessãoDados for omitido, os dados não serão descarregados para a visualização aberta na
sessão de dados atual.

Para obter informações adicionais sobre a cláusula NOREQUERY, consulte o capítulo 8, “Criando
visualizações”, no Guia do Desenvolvedor.

NODATA Especifica que só a estrutura da visualização SQL é descarregada. Os dados da


visualização SQL não são descarregados. NODATA é o método mais rápido para determinar a
estrutura de uma visualização SQL.

Para obter informações adicionais sobre a cláusula NODATA, consulte o capítulo 8, “Criando
visualizações”, no Guia do Desenvolvedor.

INDEX ListaArquivosNÍndice Especifica um conjunto de índices a ser aberto com a tabela. Se


uma tabela tiver um arquivo de índice composto estrutural, o arquivo de índice será
automaticamente aberto com a tabela.

ListaArquivosNÍndice pode conter qualquer combinação de nomes de entrada única .IDX e


arquivos de índice compostos .CDX. Não é preciso incluir extensões de nomes de arquivo para
arquivos de índice, a não ser que um arquivo .IDX e um arquivo de índice .CDX na lista de
arquivos de índice tenham o mesmo nome.

O primeiro arquivo de índice definido na lista de arquivos de índice é o arquivo de índice de


controle mestre, que controla como os registros da tabela são acessados e exibidos. Contudo, se o
primeiro arquivo de índice for um arquivo de índice composto .CDX, os registros da tabela serão
exibidos e acessados na ordem física dos registros.

INDEX ? Exibe a caixa de diálogo Abrir com uma lista de arquivos de índice disponíveis para
escolha.

ORDER [nNúmeroNÍndice] Especifica um arquivo de índice mestre de entrada única .IDX de


controle ou uma marca de arquivo de índice composto .CDX diferente do primeiro arquivo ou
marca de índice especificados em ListaArquivosNÍndice.

Os arquivos de índice .IDX são numerados primeiro, na ordem em que aparecem na lista de
arquivos de índice. As marcas no arquivo de índice composto estrutural (se houver) são, então,
numeradas na ordem em que foram criadas. Por fim, as marcas em qualquer arquivo de índice
composto independente também são numeradas nesta ordem. SET ORDER pode ser utilizado
também para especificar o arquivo ou marca de índice de controle. Consulte ” SET ORDER” para
obter maiores explicações sobre a numeração de arquivos e marcas de índice.

Se nNúmeroNÍndice for 0, os registros na tabela serão exibidos e acessados na ordem física dos
registros e os índices permanecerão abertos. A inclusão de ORDER 0 permite que arquivos de
índice abertos sejam atualizados durante a apresentação do arquivo pela ordem do número do
registro. A inclusão de ORDER sem nNúmeroNÍndice é idêntica à inclusão de ORDER 0.

ORDER [NomeArquivoIDX] Especifica um arquivo de índice de entrada única .IDX como o


arquivo de índice de controle mestre.

ORDER [TAG NomeMarca] [OF NomeArquivoCDX] Especifica uma marca de controle mestre
em um arquivo de índice composto .CDX.O nome da marca pode ser de um arquivo de índice
composto estrutural ou qualquer arquivo de índice composto aberto. Se nomes de marcas idênticos
existirem em arquivos de índice composto abertos, inclua OF NomeArquivoCDX e especifique o
nome do arquivo de índice composto que contém a marca desejada.

ASCENDING Especifica que os registros da tabela são acessados e exibidos em ordem


ascendente.

DESCENDING Especifica que os registros da tabela são acessados e exibidos em ordem


descendente.

A inclusão de ASCENDING ou DESCENDING não altera o arquivo ou marca de índice; altera


somente a ordem em que os registros são exibidos e acessados.

ALIAS cAliasTabela Cria um alias para a tabela. Você pode se referir a uma tabela pelo seu alias
em comandos ou funções que exijam ou suportem um alias.

Quando uma tabela é aberta, recebe automaticamente um alias, que será o nome da tabela se ALIAS
não for incluído. Você pode criar um alias diferente para a tabela incluindo ALIAS e um novo alias.
No Visual FoxPro, um alias pode conter até 254 letras, dígitos ou caracteres de sublinhado e precisa
começar com uma letra ou um caractere de sublinhado. Em outras versões do FoxPro, um alias pode
conter até 10 letras, dígitos ou caracteres de sublinhado e precisa começar com uma letra ou
caractere de sublinhado.

Um alias padrão será automaticamente atribuído à tabela se você utilizar AGAIN para abrir uma
tabela única simultaneamente em diversas áreas de trabalho e não especificar um alias ao abrir a
tabela em cada Área de trabalho.

Um alias padrão também será atribuído se ocorrer um conflito. Por exemplo:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
ACTIVATE WINDOW View && Abre a janela Sessão 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 informações
sobre o uso exclusivo de tabelas, consulte ” SET EXCLUSIVE”.
SHARED Abre uma tabela para uso compartilhado em uma rede. SHARED permite que você abra
uma tabela para uso compartilhado mesmo quando EXCLUSIVE está ativado.

NOUPDATE Impede que sejam feitas alterações na tabela e em sua estrutura.

Comentários

Se USE for emitido sem um nome de tabela e um arquivo de tabela estiver aberto na Área de
trabalho selecionada no momento, a tabela será fechada. Além disso, uma tabela é fechada quando
outra tabela é aberta na mesma Área de trabalho. Não é possível ter mais de uma tabela aberta em
uma Área de trabalho ao mesmo tempo.

USE, exemplo do comando

O exemplo a seguir abre três tabelas em três áreas de trabalho diferentes. A janela Sessão de dados
é aberta para mostrar onde as tabelas são abertas e para mostrar o alias para cada tabela.

CLOSE 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( ), função

Determina se uma tabela é aberta em uma Área de trabalho especificada.

Sintaxe

USED([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico
Argumentos

nÁreaTrabalho | cAliasTabela Especifica a Área de trabalho da tabela. nÁreaTrabalho especifica o


número da Área de trabalho e cAliasTabela especifica o alias da tabela. Se você não incluir
nÁreaTrabalho ou cAliasTabela, será verificado se existe uma tabela aberta na Área de trabalho
selecionada no momento.

Caso você inclua um alias de tabela, USED( ) retornará verdadeiro se uma tabela com o alias
especificado estiver aberta em uma das áreas de trabalho.

Comentários

Se uma tabela estiver aberta em uma determinada Área de trabalho, USED( ) retornará verdadeiro
(.T.); caso contrário, USED( ) retornará falso (.F.).

USED( ), exemplo da função

CLOSE 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( ), função
Retorna um valor numérico de uma expressão de caracteres composta de números.

Sintaxe

VAL(cExpressão)

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica uma expressão de caracteres composta de no máximo 16 números. O


arredondamento ocorre se mais que 16 números forem incluídos em cExpressão.

Comentários

VAL( ) retorna os números na expressão de caracteres, da esquerda para a direita, até que um
caractere não-numérico seja encontrado (os brancos à esquerda são ignorados). VAL( ) retornará 0
se o primeiro caractere da expressão de caracteres não for um número, um sinal de mais (+) ou um
sinal de menos (-).

VAL( ) pode ser utilizada para converter as seqüências de caracteres retornadas pelas funções
SYS( ) do Visual FoxPro para valores numéricos.

VAL( ), exemplo da função

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 localizações 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 diálogo que permitem localizar tabelas e índices que não estejam nas
localizações contidas no banco de dados. VALIDATE DATABASE RECOVER deve ser emitido
na janela Comando. A emissão de VALIDATE DATABASE RECOVER em um programa gera
uma mensagem de erro.

NOCONSOLE Suprime a saída de mensagens de erro para a janela principal do Visual FoxPro ou
para a janela ativa definida pelo usuário.

TO PRINTER [PROMPT] Direciona a saída de mensagens de erro de VALIDATE DATABASE


para uma impressora.

PROMPT exibe uma caixa de diálogo Imprimir antes do início da impressão. Coloque a palavra-
chave PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a saída das mensagens de erro para o arquivo especificado em
NomeArquivo. Se o arquivo já existir e SET SAFETY estiver (ON), será perguntado se você deseja
sobrescrever o arquivo.

Comentários

VALIDATE DATABASE assegura que o banco de dados contenha as localizações apropriadas de


tabelas e índices, que as tabelas no banco de dados contenham os campos apropriados e que existam
marcas de índice no banco de dados.
VALIDATE DATABASE opera no banco de dados atual. O banco de dados deve ser aberto para
uso exclusivo, incluindo-se a palavra-chave EXCLUSIVE quando você emitir OPEN DATABASE.

VALIDATE DATABASE, exemplo do comando

O exemplo a seguir abre o banco de dados testdata e utiliza VALIDATE DATABASE para garantir
que as localizações das tabelas e dos índices no banco de dados estejam corretas.

CLOSE 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( ), função

Retorna as informações sobre a versão do Visual FoxPro que está sendo utilizada.

Sintaxe

VERSION(nExpressão)

Tipos de retorno

Caractere, Numérico

Argumentos

nExpressão Especifica que VERSION( ) deve retornar informações adicionais sobre o Visual
FoxPro. Se você omitir nExpressão, VERSION( ) retornará o número da versão do Visual FoxPro.

A tabela a seguir lista os valores para nExpressão e as informações adicionais retornadas sobre o
Visual FoxPro.

NExpressão Informações adicionais retornadas sobre o Visual FoxPro

1 Data e número de série do Visual FoxPro.


2 Tipo da versão do Visual FoxPro:
0 - Versão em tempo de execução
1 - Standard Edition (versões anteriores)
2 - Professional Edition (versões anteriores)
3 Idioma do Visual FoxPro. Os dois valores de caracteres a seguir indicam o idioma para o
qual o Visual FoxPro foi traduzido:
00 - Inglês
33 - Francês
34 - Espanhol
39 - Italiano
42 - Tcheco
48 - Polonês
49 - Alemão
55 - Português
82 - Coreano
86 - Chinês simplificado
88 - Chinês tradicional

Comentários

Utilize VERSION( ) para executar condicionalmente trechos de código específicos da versão.


VERSION( ), VERSION(1) e VERSION(3) retornam seqüências de caracteres; VERSION(2)
retorna um valor numérico.

VERSION( ), exemplo da função

CLEAR
? VERSION( )

SYS( ), visão geral das funções

Retorna as informações do sistema Visual FoxPro.

Sintaxe

SYS( )

Tipos de retorno

Caractere
Comentários

As funções SYS( ) do Visual FoxPro retornam valores de caractere que contêm informações úteis
do sistema. A seguinte tabela mostra o que cada função SYS( ) retorna:

Função Informações retornadas

SYS(0) Informações do computador da rede


SYS(1) Data do sistema Juliano
SYS(2) Segundos desde a meia-noite
SYS(3) Nome de arquivo válido
SYS(5) Volume ou unidade de disco padrão
SYS(6) Dispositivo de impressora atual
SYS(7) Arquivo de formato atual
SYS(9) Número serial do Visual FoxPro
SYS(10) Seqüência a partir do número de dia Juliano
SYS(11) Número de dia Juliano
SYS(12) Memória disponível em bytes
SYS(13) Status da impressora
SYS(14) Expressão de índice
SYS(15) Conversão de caracteres
SYS(16) Nome de arquivo do programa em execução
SYS(17) Processador em uso
SYS(18) Controle atual
SYS(20) Transforma texto em alemão
SYS(21) Controlando o número do índice
SYS(22) Controlando o nome ou marca de índice
SYS(23) Utilização de memória EMS do FoxPro
SYS(24) Limite de memória EMS
SYS(100) Definição do console
SYS(101) Definição do dispositivo
SYS(102) Definição da impressora
SYS(103) Definição da comunicação
SYS(1001) Memória do Visual FoxPro
SYS(1016) Uso da memória de objeto do usuário
SYS(1023) Ativar modo de diagnóstico da Ajuda.
SYS(1024) Desativar modo de diagnóstico da Ajuda.
SYS(1037) Caixa de diálogo Configurar página
SYS(1269) Informações sobre propriedades
SYS(1270) Localização do objeto
SYS(1271) Arquivo .SCX do objeto
SYS(1272) Hierarquia do objeto
SYS(1500) Ativar um item do menu
SYS(2000) Correspondência de curinga no nome de arquivo
SYS(2001) Status do comando SET
SYS(2002) Ativar ou desativar o ponto de inserção
SYS(2003) Diretório atual
SYS(2004) Diretório inicial do Visual FoxPro
SYS(2005) Arquivo de recursos atual
SYS(2006) Placa gráfica atual
SYS(2007) Valor da soma de verificação
SYS(2010) Definições do arquivo CONFIG.SYS
SYS(2011) Status de bloqueio atual
SYS(2012) Tamanho de bloco de campo Memo
SYS(2013) Seqüência de nomes de menu do sistema
SYS(2014) Caminho mínimo
SYS(2015) Nome do procedimento exclusivo
SYS(2016) Nome de SHOW GETS WINDOW
SYS(2017) Exibir tela de inicialização
SYS(2018) Parâmetro de mensagem de erro
SYS(2019) Nome e localização do arquivo de configuração
SYS(2020) Tamanho de disco padrão
SYS(2021) Expressão de índice filtrada
SYS(2022) Tamanho do grupo (bloco) no disco
SYS(2023) Caminho temporário
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 memória
SYS(3051) Definir intervalo de repetição de bloqueio
SYS(3052) Substituir bloqueio de SET REPROCESS
SYS(3053) Identificador de ambiente do ODBC

WAIT, comando

Exibe uma mensagem e interrompe a execução do Visual FoxPro até que o usuário pressione uma
tecla ou clique o mouse.

Sintaxe

WAIT
[cTextoMensagem]
[TO NomeVarMem]
[WINDOW [AT nLinha, nColuna]]
[NOWAIT]
[CLEAR | NOCLEAR]
[TIMEOUT nSegundos]

Argumentos

cTextoMensagem Especifica uma mensagem personalizada a ser exibida. Se você omitir


cTextoMensagem, o Visual FoxPro exibirá a mensagem padrão. Se cTextoMensagem for a
seqüência vazia (""), nenhuma mensagem será exibida e o Visual FoxPro aguardará que uma tecla
seja pressionada antes de continuar a execução do programa.

TO NomeVarMem Salva a tecla pressionada em uma variável de memória ou em um elemento de


matriz. Se a variável de memória ou um elemento de matriz especificado por você com
NomeVarMem não existir, ele será criado. A seqüência vazia será armazenada em NomeVarMem
se você pressionar ENTER, uma tecla que não possa ser impressa, uma combinação de teclas ou
clicar o mouse.

WINDOW Exibe a mensagem em uma janela de mensagem do sistema localizada na extremidade


superior direita da janela principal do Visual FoxPro. A janela pode ser temporariamente ocultada
ao pressionar a tecla CTRL ou SHIFT.

AT nLinha, nColuna No Visual FoxPro especifica a posição da janela de mensagem na tela.

NOWAIT Continua a execução do programa imediatamente após a exibição da mensagem. O


programa não espera a remoção da mensagem da janela principal do Visual FoxPro, mas prossegue
com a execução na linha do programa imediatamente após a linha do programa contendo WAIT
NOWAIT. Se você omitir NOWAIT, a execução do programa será interrompida até que a
mensagem seja removida da janela principal do Visual FoxPro, pressionando uma tecla ou clicando
o mouse.

CLEAR Remove uma janela do sistema Visual FoxPro ou uma janela de mensagem WAIT
encontrada na janela principal do Visual FoxPro em um programa. Por exemplo, quando você emite
SET TALK WINDOW, a comunicação de indexação ou classificação, entre outras, é direcionada a
uma janela do sistema do Visual FoxPro. A janela poderá ser removida interativamente se você
pressionar uma tecla ou mover o mouse. Emita WAIT CLEAR para remover a janela de um
programa.

NOCLEAR Especifica que a janela de uma mensagem WAIT permanece na janela principal do
Visual FoxPro até que WAIT CLEAR ou outro comando WAIT WINDOW seja emitido, ou uma
mensagem do sistema Visual FoxPro seja exibida.

TIMEOUT nSegundos Especifica quantos segundos podem decorrer sem uma entrada do teclado
ou do mouse antes da conclusão do WAIT. nSegundos especifica o número de segundos (frações de
segundos são permitidas) decorridos. Se TIMEOUT não for a última cláusula de WAIT, o Visual
FoxPro irá gerar uma mensagem de erro de sintaxe.

Comentários
Se uma mensagem WAIT for exibida no Visual FoxPro para Windows, o pressionamento das teclas
SHIFT ou CTRL farão com que todas as janelas incluindo a mensagem WAIT sejam ocultadas.

WFONT( ), função

Retorna o nome, o tamanho ou o estilo da fonte atual para uma janela do Visual FoxPro para
Windows.

Sintaxe

WFONT(nAtributoFonte [, NomeJanela])

Tipos de retorno

Caractere e Numérico

Argumentos

nAtributoFonte Especifica o atributo de fonte que você deseja retornar.

Se nAtributoFonte for 1, WFONT( ) retornará o nome da fonte atual para a janela ativa ou
especificada.
Se nAtributoFonte for 2, WFONT( ) retornará o tamanho da fonte.

Se nAtributoFonte for 3, WFONT( ) retornará um código que identifica o estilo da fonte.

O código de estilo da fonte é um caractere ou um conjunto de caracteres que corresponde ao estilo


de fonte atual. Por exemplo, o estilo de fonte atual é negrito itálico quando WFONT(3) retorna BI.

A tabela a seguir lista os códigos para cada estilo de fonte:

Caractere Estilo de fonte

B Negrito
I Itálico
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 também incluir o nome de uma
barra de ferramentas. Inclua a seqüência vazia para retornar a fonte atual, o tamanho da fonte ou o
estilo desta a partir da janela principal do Visual FoxPro.

NomeJanela pode ser o nome de uma janela definida pelo usuário e criada com DEFINE WINDOW
ou uma janela para edição de textos e memos.
Você pode também incluir o nome de uma janela do sistema (Visualizar, Rastrear, Depurar etc.).
WFONT( ) pode retornar somente atributos de fonte para uma janela do sistema que tenha sido
aberta e esteja visível ou oculta no momento. Se a janela do sistema especificada por você estiver
fechada, o Visual FoxPro irá gerar uma mensagem de erro.

Se você omitir NomeJanela, WFONT( ) retornará a fonte atual, o tamanho da fonte ou o estilo desta
para a janela de saída ativa.

WFONT( ), exemplo da função

O exemplo a seguir cria uma janela definida pelo usuário definida wFontChar. A janela é ativada e
as características de suas fontes são exibidas na janela. As características de fonte são exibidas na
janela principal do Visual FoxPro.

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
?
?
?
? 'Características de fonte da janela wFontChar'
?
?
? WFONT(1,''), WFONT(2,''), WFONT(3,'') && Janela principal do Visual FoxPro
?
? 'Características de fonte da janela principal do Visual FoxPro'

WAIT WINDOW
RELEASE WINDOW wFontChar
CLEAR

WITH ... ENDWITH, comando

Especifica várias propriedades para um objeto.

Sintaxe

WITH NomeObjeto
[.cInstruções]
ENDWITH

Argumentos

NomeObjeto Especifica o nome do objeto. NomeObjeto pode ser o nome do objeto ou uma
referência a ele.

.cInstruções cInstruções pode consistir em qualquer número de comandos do Visual FoxPro


utilizados para especificar propriedades de NomeObjeto. Coloque um ponto antes de cInstruções
para indicar que se trata de uma propriedade de NomeObjeto.

Comentários
WITH ... ENDWITH fornece um modo conveniente de especificar diversas propriedades para um
único objeto. Observe que também é possível executar métodos a partir de uma estrutura
WITH ... ENDWITH.

WITH ... ENDWITH, exemplo do comando

O exemplo a seguir cria um nome de classe personalizado Employee. Depois que a classe Employee
tiver sido criada com CREATEOBJECT( ), WITH ... ENDWITH será utilizado para definir
múltiplas propriedades para a classe. Em seguida, os valores das propriedades são exibidos.

moemployee = CREATEOBJECT('employee')

WITH moemployee
.First_Name = 'Fernando'
.Last_Name = 'Pinheiro'
.Address = 'Avenida Brasil 16'
.HireDate = {02/16/95}
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( ), função

Retorna o título atribuído à janela ativa ou especificada.

Sintaxe

WTITLE([NomeJanela])
Tipos de retorno

Caractere

Argumentos

NomeJanela Especifica uma janela cujo título é retornado por WTITLE( ). O título atribuído à
janela com a cláusula TITLE é retornado quando você inclui o nome de uma janela definida pelo
usuário e criada com DEFINE WINDOW.

Quando BROWSE WINDOW for emitido para abrir uma janela Pesquisar em uma janela definida
pelo usuário, WTITLE( ) retornará o título da janela definida pelo usuário se a janela Pesquisar não
possuir um título. Se possuir, WTITLE( ) retornará o título da própria janela Pesquisar.

É possível, também, utilizar a seqüência vazia em NomeJanela para especificar a janela principal do
Visual FoxPro.

Comentários

WTITLE( ) pode ser utilizada para retornar um título de janela, que aparecerá na borda superior da
mesma. O título será retornado para a janela ativa se você omitir NomeJanela. WTITLE( ) retornará
a seqüência vazia se a janela Depurar, Rastrear ou Comando estiver ativa ou a saída estiver sendo
direcionada para a janela principal do Visual FoxPro.

Nomes e títulos de janelas Os nomes são atribuídos às janelas definidas pelo usuário, janelas do
sistema, barras de ferramentas (no Visual FoxPro) e janelas Pesquisar da seguinte forma:

As janelas definidas pelo usuário recebem nomes quando são criadas com DEFINE WINDOW. Há
uma diferença entre nomes e títulos de janelas definidas pelo usuário. Como padrão, as janelas
definidas pelo usuário não possuem títulos. Se a cláusula TITLE for incluída na hora da criação da
janela, o título especificado aparecerá na borda superior da janela, mas não será seu nome.

Como padrão, cada janela do sistema, que faz parte da interface do Visual FoxPro, obtém o seu
nome a partir do título da janela. Os exemplos de janelas do sistema incluem a janela Comando, a
janela Sessão de dados e a janela Rastrear. No Visual FoxPro, cada barra de ferramentas obtém o
seu nome a partir do título da barra de ferramentas.

As janelas de programa e edição e as janelas Criador de relatórios e Criador de etiquetas obtêm os


seus nomes a partir do nome do arquivo que está sendo criado ou modificado.

Uma janela Pesquisar obtém o seu nome a partir do título da janela. O nome e o título da janela
Pesquisar são atribuídos por meio de uma das três formas a seguir: pela atribuição do título padrão
do alias da tabela, pelo título da janela (se existir algum) ou pelo título da Pesquisa (se existir
algum).

Como padrão, o nome da janela Pesquisar é o alias da tabela.


Para especificar os nomes de janelas do sistema e de barras de ferramentas em comandos e funções,
coloque o nome completo da janela ou da barra de ferramentas entre aspas. Por exemplo, para
ocultar a barra de ferramentas controles de relatório no Visual FoxPro, emita o comando a seguir:

HIDE WINDOW "Controles de relatório "

Observações adicionais sobre nomes de janelas Se você não tiver certeza quanto ao nome atribuído
a uma janela, verifique o menu Janela. Todos os nomes de janelas são listados na parte inferior
deste menu.

Haverá duas janelas se você emitir BROWSE WINDOW NomeJanela. A janela Pesquisar é
separada e possui os atributos da janela definida pelo usuário que foi especificada. Se uma janela
estiver ativa quando BROWSE for emitido e você não incluir a cláusula WINDOW, a janela
Pesquisar terá os atributos da janela ativa. Você poderá substituir este comportamento incluindo
NORMAL em BROWSE.

É possível incluir nomes de janelas que contêm espaços em comandos e funções que aceitam nomes
de janelas, tais como MOVE WINDOW, DEACTIVATE WINDOW e WONTOP( ); basta
especificar a parte do nome da janela que começa com o primeiro caractere diferente de espaço,
continuando até o último ser encontrado.

Por exemplo, uma janela Pesquisar com o nome Entrada de fatura pode ser movida com o comando
abaixo:

MOVE WINDOW invoice BY 1,1

Os nomes de janelas definidas pelo usuário não podem conter espaços, mas os nomes das janelas
Pesquisar e do sistema podem.
YEAR( ), função

Retorna o ano de uma data específica ou de uma expressão de data e hora.

Sintaxe

YEAR(dExpressão | tExpressão)

Tipos de retorno

Numérico

Argumentos

dExpressão Especifica a expressão de data a partir da qual YEAR( ) retorna o ano. dExpressão
pode ser uma função que retorna uma data, uma variável de memória do tipo Data, um elemento de
matriz ou campo. Também pode ser uma seqüência literal, como {06/06/95}.

tExpressão Especifica a expressão data e hora a partir da qual YEAR( ) retorna o ano.

Comentários

YEAR( ) sempre retorna o ano com o século. A definição de CENTURY (ON ou OFF) não afeta o
valor retornado.

YEAR( ), exemplo da função

CLEAR
? YEAR(DATE( ))
ZAP, comando

Remove todos os registros de uma tabela, deixando apenas sua estrutura.

Sintaxe

ZAP
[IN nÁreaTrabalho | cAliasTabela]

Argumentos

IN nÁreaTrabalho Especifica a Área de trabalho da tabela na qual todos os registros serão


removidos.

IN cAliasTabela Especifica o alias da tabela na qual todos os registros serão removidos.

Se nÁreaTrabalho e cAliasTabela forem omitidos, todos os registros serão removidos da tabela na


Área de trabalho selecionada atualmente.

Comentários
A emissão de ZAP é equivalente a emissão de DELETE ALL seguida por PACK, mas o comando
ZAP é muito mais rápido.

Se SET SAFETY estiver ativado (ON), o Visual FoxPro pergunta se você deseja remover todos os
registros da tabela atual.

A emissão de ZAP não provoca a ocorrência do disparador de exclusão. Para obter maiores
informações sobre disparadores em uma tabela, consulte “CREATE TRIGGER”.

Importante Os registros excluídos da tabela atual não poderão ser reintegrados.

ZOOM WINDOW, comando

Altera o tamanho e a posição da janela definida pelo usuário ou da janela do sistema do Visual
FoxPro.

Sintaxe

ZOOM WINDOW NomeJanela MIN | MAX | NORM


[AT nLinha1, nColuna1 | FROM AT nLinha1, nColuna1
[SIZE AT nLinha2, nColuna2 | TO nLinha2, nColuna2]]
Argumentos

NomeJanela Especifica o nome da janela cujo nome você deseja alterar.

MIN Reduz a janela ao tamanho mínimo.

No Visual FoxPro para Windows, a janela é reduzida a um ícone.

Todas as janelas do sistema podem ser reduzidas a um tamanho mínimo no Visual FoxPro para
Windows. As janelas do sistema do Visual FoxPro devem ser abertas na janela principal do Visual
FoxPro ou na janela definida pelo usuário antes que elas possam ser minimizadas.

Uma janela definida pelo usuário pode ser minimizada após sua definição. Ela não deve ser ativada
antes de sua alteração de tamanho.

MAX Expande uma janela para preencher a janela principal do Visual FoxPro window, a Área de
trabalho do Windows ou a janela definida pelo usuário. Se uma janela filho for colocada em uma
janela pai e a janela filho for maximizada, ela preenche a janela pai. Se qualquer uma das cláusulas
adicionais de ZOOM WINDOW (AT, SIZE, TO ou FROM) forem incluídas com MAX, MAX será
ignorado.

Apenas as janelas definidas pelo usuário com ZOOM podem ser expandidas ao tamanho máximo.

NORM Retorna uma janela ao seu tamanho original após ter sido minimizada ou maximizada.
NORM pode também ser utilizado para mover uma janela sem alterar seu tamanho. Utilize ZOOM
WINDOW NORM sem qualquer cláusula adicional para retornar uma janela minimizada ou
maximizada ao seu tamanho e localização original.

AT nLinha1, nColuna1 | FROM nLinha2, nColuna2 É possível especificar a localização de uma


janela incluindo a cláusula AT ou FROM.

ZOOM WINDOW NomeJanela NORM AT AT nLinha1, nColuna1 restaura uma janela minimizada
ou maximizada ao seu tamanho original e a posiciona em um local específico. As coordenadas AT
nLinha1, nColuna1 especificam onde o canto esquerdo superior da janela será posicionado. A
localização da janela também pode ser alterada com MOVE WINDOW.

No Visual FoxPro for Windows, se NORM for incluído, o canto superior esquerdo da janela será
colocado na janela principal do Visual FoxPro no local especificado com AT nLinha1, nColuna1.
Se MIN for incluído, AT e FROM são ignorados e a janela é exibida como um ícone na parte mais
inferior da janela principal do Visual FoxPro. Se MAX for incluído, AT e FROM são ignorados e a
janela será expandida para preencher a janela principal do Visual FoxPro.

No Visual FoxPro para Windows, se a janela for criada com a cláusula IN DESKTOP, o canto
superior esquerdo da janela é colocado na Área de trabalho do Windows no local especificado com
AT nLinha1, nColuna1. Se MIN for incluído, AT e FROM são ignorados e a janela será exibida
como um ícone na parte mais inferior da Área de trabalho do Windows. Se MAX for incluído, AT e
FROM são ignorados e a janela é expandida para preencher a Área de trabalho do Windows.
SIZE AT nLinha2, nColuna2 | TO nLinha2, nColuna2 Também é possível especificar o tamanho
de uma janela incluindo SIZE ou TO. Se SIZE for incluído, o tamanho da janela será composto pela
altura das linhas nLinha2 e pela largura das colunas nColuna2. Se a cláusula TO for incluída, o
canto superior esquerdo da janela permanece em sua posição atual e o canto inferior direito da
janela é colocado na posição especificada com nLinha2, nColuna2.

Comentários

No Visual FoxPro para Windows, as janelas podem ser reduzidas ao tamanho mínimo, aumentadas
para preencher toda a janela principal do Visual FoxPro ou dimensionada em qualquer parte entre
elas.

Se uma janela definida pelo usuário for criada com DEFINE WINDOW e com a cláusula IN
DESKTOP no Visual Área de trabalho.

No Visual FoxPro for Windows, as visualizações das janelas podem ser alteradas diretamente do
tamanho mínimo ao máximo ou vice-versa.

Quando a visualização de uma janela é aumentada ou diminuída, é possível especificar onde colocar
a janela redimensionada na janela do Visual FoxPro ou na janela definida pelo usuário.

Para aumentar a visualização de uma janela do sistema, coloque o nome inteiro da janela do sistema
entre aspas simples. Por exemplo, para maximizar a janela Comando, utilize o comando a seguir:

ZOOM WINDOW 'janela Comando' MAX

Você pode utilizar ZOOM WINDOW para redimensionar todas as janelas do sistema exceto as
janelas Arquivista, Calculadora e Jogo.

ZOOM WINDOW, Exemplo do comando

No exemplo abaixo, a janela Pesquisar é aberta para a tabela customer. A janela Pesquisar é
minimizada. A janela Pesquisar retorna ao seu tamanho padrão. Ela então será novamente
minimizada em um local específico. A janela Pesquisar é aumentada para um tamanho especifico e
é maximizada.

CLEAR 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 ;
'Cláusula MIN - Esta janela irá estabelecer o tempo limite. Por favor, espere.'
ENDIF

ZOOM WINDOW customer NORM


WAIT WINDOW TIMEOUT 3 ;
'Cláusula 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 ;
'Cláusula MIN AT 10,10 - Esta janela irá estabelecer o tempo limite. Por favor,
espere.'
ENDIF

ZOOM WINDOW customer NORM AT 1,1 SIZE 22,25


WAIT WINDOW TIMEOUT 3 ;
'Cláusulas NORM & SIZE - Esta janela irá estabelecer o tempo limite. Por favor.'
ZOOM WINDOW customer NORM FROM 10,10 TO 22,70
WAIT WINDOW TIMEOUT 3 ;

'Cláusulas NORM & TO - Esta janela irá estabelecer o tempo limite.'


ZOOM WINDOW customer MAX
WAIT WINDOW TIMEOUT 3 'Cláusula MAX - Esta janela irá estabelecer o tempo limite. Por
favor, espere.'
CLEAR ALL

APENDICE PRÁTICO

Bloco de comandos, que traz o formulário de CORES na tela, e conforme a cor selecionada, retorna
com os valores de RGB

Pequena rotina

ncor=getcolor()
Permite voce escolher uma 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
RESOLUÇÃO DE VIDEO EM USO

Nhorizontal=sysmetric(1)
Nvertical =sysmetric(2)
Esta apostila vai receber diversos anexos de programadores..
Acesse nossa página WWW.VISUALSCREEN.HPG.COM.BR e faça o download a medida que
estes anexos forem disponibilizados
(Copiar e colar ao final deste .DOC)

Você também pode gostar