Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Sintaxe
Argumentos
/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
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.
/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
! /N CONTROL COLOR
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.
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
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:
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.
Comentários
&&, comando
Sintaxe
&& [Comentários]
Argumentos
Comentários Indica que o texto que se segue é um comentário em uma linha. Por exemplo:
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
Sintaxe
* [Comentários]
Argumentos
* 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.
Limpa uma parte da janela principal do Visual FoxPro ou de uma janela definida pelo usuário.
Sintaxe
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.
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
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
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.
\ | \\, comando
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
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
Sintaxe
Argumentos
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
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.
ACOS( ), função
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.
Comentários
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.
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
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.
· 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:
Utilize HIDE WINDOW ou RELEASE WINDOW para remover uma janela do sistema da janela
principal do Visual FoxPro ou de uma janela pai.
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.
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
Sintaxe
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.
O banco de dados ao qual a tabela está sendo adicionada não pode estar envolvido em uma
transação.
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
Tipos de retorno
Numérico
Argumentos
Para obter maiores informações sobre como fazer referência a elementos em uma matriz, consulte ”
DIMENSION”.
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.
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
ADIR( ), função
Coloca informações sobre arquivos em uma matriz e, em seguida, retorna o número de arquivos.
Sintaxe
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.
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.
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.
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')
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
Sintaxe
Tipos de retorno
Numérico
Argumentos
NomeMatriz Especifica o nome da matriz cujo número do elemento você deseja retornar.
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.
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.
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
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.
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.
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
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.
cAliasTabela Especifica o alias da tabela cujas informações de estrutura são colocadas em uma
matriz.
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.
Comentários
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
AFONT( ), função
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.).
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.
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
AINS( ), função
Insere um elemento em uma matriz unidimensional ou uma linha ou coluna em uma matriz
bidimensional.
Sintaxe
Tipos de retorno
Numérico
Argumentos
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.).
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
gaCompanies[gnCount+1] = gcName
ENDIF
DISPLAY MEMORY LIKE gaCompanies
ALEN( ), função
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.
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
ALLTRIM( ), função
Sintaxe
ALLTRIM(cExpressão)
Tipos de retorno
Caractere
Argumentos
Comentários
ALLTRIM( ) pode ser utilizado para assegurar que os espaços em branco serão removidos dos
dados inseridos pelo usuário.
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
Adiciona à tabela atualmente selecionada um registro para cada linha de uma matriz e preenche
cada registro com dados da linha da matriz correspondente.
Sintaxe
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.
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:
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.
Sintaxe
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.
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"
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.
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:
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.
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 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.
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
Sintaxe
Argumentos
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.
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.
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.
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
Sintaxe
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.
Comentários
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
APPEND PROCEDURES FROM mytemp.txt && Copia o procedimento para o banco de dados
CLEAR
APPEND, comando
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.
IN nÁreaTrabalho Especifica a área de trabalho da tabela na qual um novo registro será incluído.
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.
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
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.
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.
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.
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.
O exemplo a seguir exibe os caracteres A a J e utiliza ASC( ) para exibir seus valores ANSI
correspondentes.
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
Tipos de retorno
Numérico
Argumentos
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”.
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
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
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
Sintaxe
Tipos de retorno
Numérico
Argumentos
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.
DIMENSION gaArray(3,2)
gaArray(1) = 'G'
gaArray(2) = 'A'
gaArray(3) = 'C'
gaArray(4) = 'Z'
gaArray(5) = 'B'
gaArray(6) = 'N'
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)
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)
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.
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.
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
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
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.
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
ASUBSCRIPT( ), função
Sintaxe
Tipos de retorno
Numérico
Argumentos
Para obter maiores informações sobre como fazer referência a elementos de uma matriz, consulte ”
DIMENSION”.
Comentários
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)
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
Tipos de retorno
Numérico
Argumentos
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
A procura executada por AT( ) considera maiúsculas/minúsculas. Para executar uma procura que
não considere maiúsculas/minúsculas, utilize ATC( ).
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
Tipos de retorno
Numérico
Argumentos
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( ) 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
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
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
Tipos de retorno
Numérico
Argumentos
cExpressãoProcurada Especifica a expressão de caracteres que ATC( ) procura em
cExpressãoPesquisada.
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
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
Tipos de retorno
Numérico
Argumentos
cExpressãoProcurada Especifica a expressão de caracteres que ATCC( ) procura em
cExpressãoPesquisada.
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( ).
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
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.
* 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
Utilize MLINE( ) para retornar a linha que contém a expressão de caracteres correspondente como
uma seqüência de caracteres.
Comentários
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.
* 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
Sintaxe
ATN2(nCoordenadaY, nCoordenadaX)
Tipos de retorno
Numérico
Argumentos
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.
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.
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
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.
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.
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
Determina se o valor de uma expressão está entre os valores de duas outras expressões com mesmo
tipo de dado.
Sintaxe
Tipos de retorno
Argumentos
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.
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
Sintaxe
BINTOC(nExpressão [, nTamanho])
Tipos de retorno
Caractere
Argumentos
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:
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:
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
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:
0 0 0
0 1 0
1 1 1
1 0 0
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.
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.
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 tabela a seguir mostra o resultado de uma operação NOT em nível de bit em nExpressão:
0 1
1 0
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
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:
0 0 0
0 1 1
1 0 1
1 1 1
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.
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.
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.
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
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:
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.
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.).
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.
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
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.
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
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 '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.
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.
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.
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.
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.
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.
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.
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.
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:'
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
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.
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.
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
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
BROWSE FIELDS location = ALLTRIM(city) + ', ' + country
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
: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.
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.
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.
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
Sintaxe
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.
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.
Sintaxe
Argumentos
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.
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
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)
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( ).
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.
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.
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.
Comentários
Registros que contenham valores nulos não serão incluídos nas operações executadas por
CALCULATE.
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
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.
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.
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(glOldLock) && Retorna à definição original
CD | CHDIR, comando
Sintaxe
Argumentos
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.
CDOW( ), função
Sintaxe
CDOW(dExpressão | tExpressão)
Tipos de retorno
Caractere
Argumentos
Comentários
CDOW( ) retorna o nome do dia da semana como uma seqüência no formato de nome próprio.
Retorna o nome do arquivo de índice composto aberto (.CDX) que tem o número de posição de
índice especificado.
Sintaxe
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
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
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.
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
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
CHANGE, comando
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
CHR( ), função
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( ).
Comentários
CLEAR
FOR nCOUNT = 65 TO 75
? nCount && Exibe o valor numérico
?? ' ' + CHR(nCount) && Exibe o caractere
ENDFOR
CHRSAW( ), função
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.
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.
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
Tipos de retorno
Caractere
Argumentos
Comentários
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
Tipos de retorno
Caractere
Argumentos
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
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.
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.
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.
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.
READ [ALL] Incluído para manter a compatibilidade com versões anteriores. Utilize CLEAR
EVENTS como substituto.
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.
goMyForm = CREATEOBJECT('FORM')
DISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O FORM
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
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.
· Criador de formulários
· Gerenciador de projetos
· Criador de etiquetas
· Criador de relatórios
· Criador de consultas
· 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
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 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
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(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
Sintaxe
? | ?? Expressão1
[PICTURE cCódigosFormato] | [FUNCTION cCódigosFormato] | [VnLargura]
[AT nColuna]
[FONT cNomeFonte [, nTamanhoFonte] [STYLE cEstiloFonte | Expressão2]]
[, Expressão3] ...
Argumentos
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.
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.
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.
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:
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.
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:
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.
? 15 * (10+10)
? 'Bem-vindo ao ' PICTURE '@!'
?? 'Visual FoxPro'
????, comando
??? cExpressão
Argumentos
Comentários
· 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”.
CONTINUE, comando
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 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.).
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
Sintaxe
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.
Cria uma nova tabela livre e vazia com a mesma estrutura da tabela selecionada no momento.
Sintaxe
Argumentos
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.
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
Cria uma nova tabela com campos contendo a estrutura da tabela selecionada no momento.
Sintaxe
Argumentos
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.
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.
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
Cria um arquivo de índice de entrada única .IDX a partir de uma marca existente em um arquivo de
índice composto.
Sintaxe
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.
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.
Sintaxe
Argumentos
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.
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.
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
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.
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:
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.
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.
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.
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:
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.
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.
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
COS( ), função
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.
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
Sintaxe
COUNT
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[TO NomeVarMem]
[NOOPTIMIZE]
Argumentos
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.).
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).
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'
Sintaxe
Argumentos
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.
Sintaxe
Argumentos
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.
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.
Cria uma tabela a partir de um arquivo construído com COPY STRUCTURE EXTENDED.
Sintaxe
CREATE
[NomeArquivo1 [DATABASE NomeBancoDados [NAME NomeLongoTabela]]]
FROM [NomeArquivo2]
Argumentos
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.
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.
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
Sintaxe
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.
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
Sintaxe
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.
ALIAS Especifica que o alias da tabela é adicionado aos nomes dos campos no relatório.
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.
Sintaxe
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.
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
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.
· 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:
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
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
Sintaxe
CREATE [NomeArquivo | ?]
Argumentos
? 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
Sintaxe
CTOBIN(cExpressão)
Tipos de retorno
Numérico
Argumentos
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
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.
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
Sintaxe
CTOT(cExpressãoCaracteres)
Tipos de retorno
DataHora
Argumentos
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.
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.
CURDIR( ), Função
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.
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
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.
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
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.
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.
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
CLEAR
? CDOW(gdBDate) && Exibe Domingo
? DAY(gdBDate) && Exibe 5
? 'That date is ', CMONTH(gdBDate),STR(DAY(gdBDate),2)
DBC( ), função
Sintaxe
DBC( )
Tipos de Retorno
Caractere
Comentários
DBC( ) retornará a seqüência vazia caso não haja nenhum banco de dados atual.
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
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.
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
Sintaxe
DBUSED(cNomeBancoDados)
Tipos de retorno
Lógico
Argumentos
Comentários
A função DBUSED( ) retornará verdadeiro (.T.) se o banco de dados especificado estiver aberto;
caso contrário, retornará falso (.F.).
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
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.
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.
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.
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.
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'Você escolheu ' + mprompt + ;
' do popup ' + mpopup NOWAIT
Sintaxe
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.
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"
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
Sintaxe
Comentários
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:
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.
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.
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:
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:
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”.
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.
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.
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
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.
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:
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.
NEGOTIATE LEFT especifica que o título de menu é colocado à esquerda do Grupo de arquivos.
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:
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.
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:
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.
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:
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.
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.
Cria um menu.
Sintaxe
Argumentos
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.
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.
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:
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:
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 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 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.
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
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.
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 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.
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.
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.
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.
Sintaxe
[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.
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:
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.
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:
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.
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.
MINIMIZE Permite minimizar uma janela definida pelo usuário utilizando o teclado ou mouse.
ZOOM Permite que a janela seja maximizada utilizando o teclado ou mouse. Você pode também
restaurar a janela ao seu tamanho original.
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.
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.
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
Sintaxe
Argumentos
? 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.
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
Sintaxe
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.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
Remove um disparador de exclusão, inserção ou atualização de uma tabela do banco de dados atual.
Sintaxe
Argumentos
Comentários
Utilize CREATE TRIGGER para criar um disparador de exclusão, inserção ou atualização de uma
tabela.
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
DELETE, comando
Sintaxe
DELETE
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[IN nÁreaTrabalho | cAliasTabela]
[NOOPTIMIZE]
Argumentos
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.
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.
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
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
DIMENSION, comando
Sintaxe
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:
Comentários
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
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.
* 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)
Sintaxe
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
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.
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
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
DISKSPACE( ), função
Sintaxe
DISKSPACE([cNomeVolume])
Tipos de retorno
Numérico
Argumentos
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.
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
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.
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.
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.
Sintaxe
DISPLAY FILES
[ON Unidade]
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
Argumentos
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.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
CLEAR
DISPLAY FILES LIKE *.DBC
DISPLAY MEMORY, comando
Sintaxe
DISPLAY MEMORY
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]
Argumentos
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.
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.
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”.
CLEAR
DISPLAY MEMORY LIKE sam*
DISPLAY MEMORY LIKE ?exit
DISPLAY STATUS, comando
Sintaxe
DISPLAY STATUS
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]
Argumentos
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.
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.
· 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
Sintaxe
DISPLAY STRUCTURE
[IN nÁreaTrabalho| cAliasTabela]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]
Argumentos
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.
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.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
DISPLAY STRUCTURE
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
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.
NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usuário.
Comentários
· Nome da tabela
· Caminho da tabela
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
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
Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de
escopo.
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.
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.
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.
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).
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).
CLEAR
SET CENTURY OFF
? DMY(DATE( ))
SET CENTURY ON
? DMY(DATE( ))
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.
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.
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.
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
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.
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
CLEAR
? 'O total de itens em estoque são avaliados em aproximadamente 20 dólares:'
?? gnStockTot
DO, comando
Sintaxe
DO NomePrograma1 | NomeProcedimento
[IN NomePrograma2]
[WITH ListaParâmetros]
Argumentos
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:
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).
Você pode incluir a cláusula IN NomePrograma2, avisando ao Visual FoxPro para procurar o
procedimento no arquivo que você especificar.
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
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.
Retorna um valor numérico de dia da semana a partir de uma expressão de Data ou DataHora.
Sintaxe
Tipos de retorno
Numérico
Argumentos
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
Sintaxe
Definições
NomeTabela Especifica a tabela a ser removida do banco de dados atual e 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
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:
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.
DTOR( ), função
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
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.
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.
CLEAR
? DTOS(DATE( ))
DTOT( ), função
Sintaxe
DTOT(dExpressãoData)
Tipos de retorno
DataHora
Argumentos
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.
EDIT, comando
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.
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.
NomeCampoCalculado = eExpressão
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.
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.
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.
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'
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.
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.
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.
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.
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.
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.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
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.
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.
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.
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( ).
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.
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.
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:
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:
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.
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
Sintaxe
EMPTY(eExpressão)
Tipos de Retorno
Lógico
Argumentos
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:
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.).
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
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
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.
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
Sintaxe
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).
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
ERROR( ), função
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( ).
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”.
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( )
BRWSE
ON ERROR
RETURN
PROCEDURE errhand
PARAMETER errnum,message
? Message
? 'Error number: '+ ALLTRIM(STR(Errnum))
RETURN
ERROR, comando
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”.
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”.
EVALUATE( ), função
Sintaxe
EVALUATE(cExpressão)
Tipos de retorno
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
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.
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
CLEAR
? 'Total dos items em estoque com preço acima de 20 dólares:'
?? gnStockTot
EXP( ), função
Sintaxe
EXP(nExpressão)
Tipos de retorno
Numérico
Argumentos
Comentários
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.
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.
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
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
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.).
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
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
Sintaxe
FCREATE(cNomeArquivo [, nAtributoArquivo])
Tipos de retorno
Numérico
Argumentos
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:
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( ).
IF gnErrFile > 0
MODIFY FILE errors.txt NOWAIT && Abre o arquivo na janela de edição
ENDIF
FDATE( ), função
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.
O exemplo a seguir utiliza FDATE( ) para exibir a data da última modificação em FOXUSER.DBF,
arquivo de recursos do Visual FoxPro.
Sintaxe
FEOF(nIdentificadorArquivo)
Tipos de retorno
Lógico
Argumentos
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.
gnFileHandle = FOPEN('test.txt')
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.
FFLUSH( ), função
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 FLUSH é diferente de FFLUSH( ). FLUSH não opera em arquivos de nível inferior, mas
em tabelas e índices.
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
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.
Retorna o nome de um campo de uma tabela ao qual é feita referência pelo número.
Sintaxe
Tipos de retorno
Caractere
Argumentos
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.
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
Sintaxe
FILE(cNomeArquivo)
Tipos de retorno
Lógico
Argumentos
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.
FILTER( ), função
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
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
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
Comentários
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, ...).
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
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, ...).
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
Sintaxe
FLOCK([nÁreaTrabalho | cAliasTabela])
Tipos de retorno
Lógico
Argumentos
A função FLOCK( ) retornará falso (.F.) caso nenhuma tabela esteja aberta na área de trabalho
especificada.
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.
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.
CLEAR
? FLOOR(gnNumber1) && Exibe 10
? FLOOR(gnNumber2) && Exibe -11
? FLOOR(10.0) && Exibe 10
? FLOOR(-10.0) && Exibe -10
FLUSH, comando
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.
· 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
Sintaxe
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
* 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.
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.
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
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 (!).
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
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.
Sintaxe
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.
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.
* 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
Executa um conjunto de comandos para cada elemento em uma matriz ou coleção do Visual
FoxPro.
Sintaxe
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’
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
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
FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR
NEXT obutton
j=1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j=j+1
ENDFOR
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
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.
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
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.
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
Tipos de retorno
Numérico
Argumentos
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
Sintaxe
FREAD(nIdentificadorArquivo, nBytes)
Tipos de retorno
Caractere
Argumentos
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.
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
Sintaxe
Argumentos
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
Tipos de retorno
Numérico
Argumentos
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.
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( ).
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
Sintaxe
Numérico
Argumentos
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.
Comentários
A tabela a seguir mostra o tamanho padrão (em bytes) para cada tipo de campo.
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.
CLEAR
? FSIZE('contact') && Exibe 30
? FSIZE('cust_id') && Exibe 6
FTIME( ), função
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
O exemplo a seguir utiliza FTIME( ) para exibir a hora da última modificação em FOXUSER.DBF,
o arquivo de recursos do Visual FoxPro.
Sintaxe
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.
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
Tipos de retorno
Caractere
Argumentos
cProcurado Especifica a expressão de caractere que é procurada. cProcurado pode ser um campo
Memo.
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.
SYSMETRIC( ), função
Sintaxe
SYSMETRIC(nElementoTela)
Tipos de retorno
Numérico
Argumentos
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:
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
Sintaxe
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.
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
Tipos de retorno
Numérico
Argumentos
Diferente de FPUTS( ), FWRITE( ) não coloca um retorno de carro e uma alimentação de linha no
fim da seqüência de caracteres.
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
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:
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.
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.
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.
Sintaxe
GETCOLOR([nNúmeroCorPadrão])
Tipos de retorno
Numérico
Argumentos
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.
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
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
GETENV( ), função
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.
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
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.
· 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.
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.
CLOSE DATABASES
SELECT 0
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
Tipos de retorno
Numérico
Argumentos
É 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.
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.
Comentários
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.
CLOSE DATABASES
CLEAR
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
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
Comentários
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
" alterado.",0,"Resultados")
Sintaxe
GETPAD(cNomeBarraMenus, nPosiçãoBarraMenus)
Tipos de retorno
Caractere
Argumentos
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.
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.)
GO | GOTO, comando
Sintaxe
Argumentos
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.
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
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.
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
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
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.
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.
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
Sintaxe
Argumentos
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
Sintaxe
Argumentos
NomeMenu1 [, NomeMenu2 ...] Especifica o nome do menu ou da lista de menus (separados por
vírgula) a serem ocultados.
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
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.
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:
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.
HOME( ), função
Sintaxe
HOME( )
Tipos de Retorno
Caractere
Comentários
HOME( ) é idêntico a SYS(2004) e é fornecido para manter a compatibilidade com o dBASE IV.
HOUR( ), função
HOUR(tExpressão)
Argumentos
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})
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
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.
IIF( ), função
Sintaxe
Tipos de retorno
Argumentos
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.
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
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.
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:
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.
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
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.
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.
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.
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:
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.
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.
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.
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.
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
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')
Sintaxe
INKEY([nSegundos] [, cOcultarCursor])
Tipos de retorno
Numérico
Argumentos
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.
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.
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
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
Sintaxe
Tipos de retorno
Argumentos
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).
Comentários
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
Sintaxe
INSMODE([lExpressão])
Tipos de retorno
Lógico
Argumentos
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.).
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
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.
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
Sintaxe
ISALPHA(cExpressão)
Tipos de retorno
Lógico
Argumentos
Comentários
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
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
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.
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
Sintaxe
ISDIGIT(cExpressão)
Tipos de retorno
Lógico
Argumentos
Comentários
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
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.
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.
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.
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
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
Sintaxe
ISLOWER(cExpressão)
Tipos de retorno
Lógico
Argumentos
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
Comentários
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
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.
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.
CLEAR
? ISREADONLY('customer') && Retorna .T.
ISRLOCKED( ), função
Sintaxe
Tipos de retorno
Lógico
Argumentos
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
Sintaxe
ISUPPER(cExpressão)
Tipos de retorno
Lógico
Argumentos
Comentários
Retorna a expressão de chave de índice para uma marca de índice ou arquivo de índice.
Sintaxe
Tipos de retorno
Caractere
Argumentos
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.
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.
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
Sintaxe
KEYBOARD cValorTeclado
[PLAIN] [CLEAR]
Argumentos
Se cValorTeclado for um rótulo de tecla, deverá ser incluído entre chaves e aspas simples. Por
exemplo:
KEYBOARD '{CTRL+LEFTARROW}'
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
LASTKEY( ), função
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( ).
LEFT( ), função
Sintaxe
LEFT(cExpressão, nExpressão)
Tipos de retorno
Caractere
Argumentos
CLEAR
? LEFT('Redmond, WA', 4) && Exibe Redmond
LEFTC( ), função
Sintaxe
LEFTC(cExpressão, nExpressão)
Tipos de retorno
Caractere
Argumentos
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( ).
LEN( ), função
Sintaxe
LEN(cExpressão)
Tipos de retorno
Numérico
Argumentos
Comentários
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
Sintaxe
LENC(cExpressão)
Tipos de retorno
Numérico
Argumentos
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
Sintaxe
LIKE(cExpressão1, cExpressão2)
Tipos de retorno
Lógico
Argumentos
Comentários
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.
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
Sintaxe
LIKEC(cExpressão1, cExpressão2)
Tipos de retorno
Lógico
Argumentos
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( ).
Sintaxe
LINENO([1])
Tipos de retorno
Numérico
Argumentos
Comentários
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.
PROCEDURE bug_proc
PARAMETERS gnBadLine
WAIT WINDOW 'Erro ocorrido na linha: ' + ALLTRIM(STR(gnBadLine))
RETURN
LIST DATABASE
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]
Argumentos
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.
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.
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
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
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
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:
Para obter maiores informações sobre os comandos LIST, consulte os comandos correspondentes
em DISPLAY.
LOCAL, comando
Sintaxe
LOCAL ListaVar
– Ou –
LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...
Argumentos
Comentários
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.
Não abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais.
LOCATE, comando
Sintaxe
Argumentos
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.
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.).
Comentários
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.
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
LOCFILE( ), função
Tipos de retorno
Caractere
Argumentos
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.
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
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.
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.
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
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.
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.
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
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.
CLEAR
? LOG(1) && Exibe 0.00
STORE EXP(2) TO gneSquare
? LOG(gneSquare) && Exibe 2.00
LOG10( ), função
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
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
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.
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.
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.
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
Sintaxe
LOWER(cExpressão)
Tipos de retorno
Caracteres
Argumentos
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.
Sintaxe
LPARAMETERS ListaParâmetros
Argumentos
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
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.
LUPDATE( ), função
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
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
Sintaxe
Tipos de retorno
Argumentos
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
MD | MKDIR, comando
Sintaxe
Argumentos
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.
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
Tipos de retorno
Caractere
Argumentos
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
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
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.
O exemplo a seguir cria uma função definida pelo usuário que retorna uma data com o dia da
semana correspondente.
CLEAR
? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 95
SET CENTURY ON
? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 1995
FUNCTION longdate
PARAMETERS gdDate
RETURN CDOW(gdDate) + ', ' + MDY(gdDate)
MEMORY( ), função
Sintaxe
MEMORY( )
Tipos de retorno
Numérico
Comentários
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.
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.
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:
Comentários
ON ERROR DO Errhand
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
Sintaxe
Tipos de retorno
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.
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
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.
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
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..
Em procedimentos recorrentes que retornam linhas de campos memo grandes, é possível obter um
melhor desempenho incluindo-se _MLINE como nNúmeroDeCaracteres.
Comentários
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.
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
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
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
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
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:
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.
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
O editor interno do Visual FoxPro será utilizado, a menos que você especifique um editor externo
com TEDIT no arquivo de configuração.
Sintaxe
Argumentos
? Exibe a caixa de diálogo Abrir, onde você pode especificar o nome do banco de dados a ser
modificado.
NOWAIT só tem efeito quando emitido dentro de um programa. Ele não tem qualquer efeito em
MODIFY CLASS quando emitido na janela Comando.
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.
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
Abre uma janela de edição para que você possa modificar ou criar um arquivo de texto.
Sintaxe
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:
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.
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
Sintaxe
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.
Sintaxe
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.
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
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.
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
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 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
Sintaxe
MODIFY STRUCTURE
Comentários
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.
Modifica uma janela definida pelo usuário ou a janela principal do Visual FoxPro.
Sintaxe
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.
O exemplo a seguir altera o conteúdo da barra de título da janela principal do Visual FoxPro.
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
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
Argumentos
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.
· 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
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
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:
No exemplo a seguir, após a definição e ativação da janela denominada wEnter, a janela será
movida.
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
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
Retorna o nome de um arquivo de índice aberto (.IDX) para a tabela atual ou especificada.
Sintaxe
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
Comentários
NORMALIZE( ) retorna uma seqüência de caracteres a partir da expressão de caracteres
cExpressão com as seguintes alterações::
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
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.
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.
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
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.
No exemplo a seguir, o sinal de igual (=) é utilizado para executar NUMLOCK( ) sem retornar um
valor.
NVL( ), função
Retorna um valor não-nulo a partir de duas expressões.
Sintaxe
NVL(eExpressão1, eExpressão2)
Tipos de retorno
Argumentos
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.
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
Comentários
OLDVAL( ), função
Retorna valores originais de campos que foram modificados, mas não atualizados.
Sintaxe
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.
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 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.
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
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 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
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
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
Argumentos
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:
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.
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.
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.
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.
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
Argumentos
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.
Comentários
Utilize ON SELECTION PAD para executar um comando quando um título de menu é selecionado.
ON PAGE, comando
Sintaxe
ON PAGE
[AT LINE nNúmeroLinha [Comando]]
Argumentos
Comentários
Especifica um comando que é executado quando você seleciona um título de menu em uma barra de
menus.
Sintaxe
Argumentos
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.
Especifica um comando que é executado quando você seleciona um título de menu específico em
uma barra de menus.
Sintaxe
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
Argumentos
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
Comentários
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
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
? 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.
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
Sintaxe
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.
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
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).
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
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( )
? OS(1)
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.
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
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.
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.
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
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.
Comentários
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
* 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
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
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.
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.
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
Tipos de retorno
Numérico
Argumentos
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
Tipos de retorno
Numérico
Argumentos
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
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.
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.
* 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
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
Sintaxe
PI( )
Tipos de retorno
Numérico
Comentários
O número de casas decimais exibido no valor retornado por PI( ) é determinado por SET
DECIMALS.
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
Sintaxe
PRINTSTATUS( )
Tipos de retorno
Lógico
Comentários
? 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.
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
PRMPAD(NomeBarraMenu, NomeTítuloMenu)
Tipos de retorno
Caractere
Argumentos
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.
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
PROCEDURE, comando
Sintaxe
PROCEDURE NomeProcedimento
Comandos
[RETURN [eExpressão ]]
ENDPROC
Argumentos
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.
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.
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.
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
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.
Comentários
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
Sintaxe
PROPER(cExpressão)
Tipos de retorno
Caractere
Argumentos
CLEAR
? PROPER(gcExpr1) && Exibe "Visual FoxPro"
STORE 'VISUAL FOXPRO' TO gcExpr2
? PROPER(gcExpr2) && Exibe "Visual FoxPro"
PROW( ), função
PROW( )
Tipos de retorno
Numérico
Comentários
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.
PRTINFO( ), função
Sintaxe
PRTINFO(nDefiniçãoImpressora [, cNomeImpressora])
Tipos de retorno
Numérico
Argumentos
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
-1 Rascunho
-2 Baixa
-3 Média
-4 Alta
1 Colorida
2 Monocromática
1 Impressão simplex
2 Duplex vertical
3 Duplex horizontal
Se nDefiniçãoImpressora for igual a 13, PRTINFO( ) retornará um valor que indica se a saída está
ordenada:
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
Sintaxe
PUBLIC ListaVarMem
– Ou –
PUBLIC [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...
Argumentos
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 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.
DO down
? val1
? val2
PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? val1
? val2
RETURN
PUSH POPUP, comando
Sintaxe
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.
PUTFILE( ), função
Sintaxe
Tipos de retorno
Caractere
Argumentos
· 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.
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.
PV( ), função
Tipos de retorno
Numérico
Argumentos
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.
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.
Sintaxe
QUIT
Comentários
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
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.
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
CLEAR
gnLower = 1
gnUpper = 10
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
Tipos de retorno
Numérico
Argumentos
Comentários
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
Tipos de retorno
Numérica
Argumentos
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.
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
Dica A função RATLINE( ) oferece uma forma conveniente para pesquisar em campos memo.
Comentários
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.
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”.
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
Sintaxe
Argumentos
Comentários
O Visual FoxPro irá gerar uma mensagem de erro se você tentar remover um diretório que não
esteja vazio.
RECALL, comando
Sintaxe
RECALL
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[NOOPTIMIZE]
Argumentos
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.
WHILE lExpressão2 Especifica uma condição pela qual os registros serão reintegrados, desde que
lExpressão2 resulte em verdadeiro (.T.).
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.
· 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
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.
No exemplo a seguir, o Visual FoxPro compara o espaço disponível em disco com a quantidade
necessária para classificar customer.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
gnTableHead = HEADER( )
ENDIF
RECNO( ), função
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
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.).
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.
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
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
No exemplo a seguir, o Visual FoxPro compara o espaço em disco disponível com a quantidade
necessária para classificar customer.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
gnTableHead = HEADER( )
ENDIF
REGIONAL, comando
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.
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
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.
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
Sintaxe
Argumentos
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.
Sintaxe
Argumentos
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.
WAIT WINDOW ' Pressione uma tecla para restaurar o menu padrão '
POP MENU _MSYSMENU && Restaura o sistema de menu padrão do Visual FoxPro
Sintaxe
RELEASE POPUPS [ListaNomeMenu [EXTENDED]]
Argumentos
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.
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
Sintaxe
Argumentos
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.
Remove da memória janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro.
Sintaxe
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
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
Sintaxe
RELEASE ListaVarMemt
– Ou –
RELEASE ALL [EXTENDED]
[LIKE Estrutura | EXCEPT Estrutura]
Argumentos
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 *.
Sintaxe
Argumentos
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.
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.
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.
Sintaxe
Argumentos
RENAME TABLE não pode ser utilizado para alterar o nome de uma tabela livre; em vez disso,
utilize RENAME.
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
Argumentos
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
Sintaxe
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.
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.
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.
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.
REPLACE, comando
Argumentos
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:
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.
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.
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.
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.
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
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
Comentários
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
Argumentos
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.
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.
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.
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.
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.
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.
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.
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.
Comentários
Sintaxe
Argumentos
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
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.
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*
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
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.
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
Sintaxe
Argumentos
ListaNomesJanelas Especifica uma ou mais janelas a serem restauradas. Separe os nomes das
janelas com vírgulas.
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
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.
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
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.
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
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
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.
Comentários
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
Argumentos
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
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.
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.
Comentários
Os caracteres são retornados a partir do último caractere à direita seguido por um número
especificado de caracteres.
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.
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
Sintaxe
RLOCK([nÁreaTrabalho | cAliasTabela]
| [cListaNúmerosRegistro, nÁreaTrabalho | cAliasTabela])
Tipos de retorno
Lógico
Argumentos
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.
Quanto ao desempenho, sempre é mais rápido bloquear a tabela inteira do que bloquear até mesmo
um pequeno número de registros.
Comentários
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.
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
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
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.
SET DECIMALS TO 4
SET FIXED ON && Ajuste o display
CLEAR
SET DECIMALS TO 2
RTOD( ), função
Sintaxe
RTOD(nExpressão)
Tipos de retorno
Numérico
Argumentos
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.
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
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( ).
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
? 'O contato de '+ RTRIM(company) + ' é ' + contato
RUN | !, comando
Sintaxe
Argumentos
/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
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.
/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
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.
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
Argumentos
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.
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
Sintaxe
Argumentos
ListaNomesJanelas Especifica uma ou mais janelas que devem ser salvas. Separe os nomes das
janelas com vírgulas.
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.
Comentários
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'
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
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”.
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.
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.
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.
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
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:
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.
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
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.
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.
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.
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.
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
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
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.
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
Sintaxe
SEC(tExpressão)
Tipos de retorno
Numérico
Argumentos
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
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.
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
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.
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.
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 [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.
Observação O arquivo .IDX terá prioridade se existirem nomes de marca e arquivo .IDX
duplicados.
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
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
1 Especifica que SELECT( ) retornará a área de trabalho não utilizada, que possui o número mais
alto.
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.
CLOSE DATABASES
SET COMPATIBLE ON
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
CLEAR
? SELECT( ) && Retorna 3, área de trabalho disponível mais lenta
SELECT, comando
Sintaxe
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.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SELECT 1 && Área de trabalho 1
USE customer && Abre a tabela Customer
Direciona saída de tela ou impressora criada com ?, ??, DISPLAY ou LIST a um arquivo texto.
Sintaxe
Argumentos
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
Sintaxe
Argumentos
Comentários
ASSERTS é desativado se o botão Ignorar todos for selecionado na caixa de mensagem exibida
após uma instrução.
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
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.
Comentários
O descarregamento de buffers pode reduzir a chance de perda de dados se houver queda de energia.
Sintaxe
Argumentos
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.
Especifica como o Visual FoxPro aloca espaço em disco para o armazenamento de campos Memo.
Sintaxe
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.
Sintaxe
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.
ADDITIVE especifica aos campos da lista de campos que sejam adicionados ao conjunto de
campos atual que está sendo adiantado.
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.
Sintaxe
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
Comentários
Utilize SET CENTURY para especificar como as funções e variáveis de data serão exibidas.
Sintaxe
Argumentos
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.
Sintaxe
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:
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.
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
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.
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.
Sintaxe
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.
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:
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”.
( IMPORTANTE )
Sintaxe
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.
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.
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
Especifica se é possível sair de uma caixa de texto digitando o último caractere nela contido.
Sintaxe
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)).
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.
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
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.
Sintaxe
Argumentos
Se o arquivo de texto especificado não existir, o Visual FoxPro criará e abrirá o arquivo
automaticamente.
Comentários
Especifica se a caixa de diálogo Página de código será exibida quando uma tabela for aberta.
Sintaxe
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:
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.
Sintaxe
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.
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.
Determina se o ponto de inserção é exibido quando o Visual FoxPro está aguardando uma entrada.
Sintaxe
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
Sintaxe
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.
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.
Comentários
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.
Torna as janelas Depurar e Rastrear disponíveis ou não disponíveis no sistema de menu do Visual
FoxPro.
Sintaxe
Argumentos
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.
Sintaxe
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.
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.
Sintaxe
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.
Sintaxe
Argumentos
Comentários
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 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 ..
Sintaxe
Argumentos
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.
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
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.
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.
Sintaxe
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
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.
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
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.
Sintaxe
Argumentos
ON (Padrão) Permite que a execução do programa e do comando seja interrompida quando a tecla
ESC for pressionada.
OFF Impede que a execução de um comando ou programa seja interrompida quando a tecla ESC é
pressionada.
Especifica as regras que o Visual FoxPro aplicará ao comparar duas seqüências de comprimentos
diferentes.
Sintaxe
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.)
Especifica se o Visual FoxPro abrirá arquivos de tabela para utilização exclusiva ou compartilhada
em uma rede.
Sintaxe
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.
Sintaxe
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.
Sintaxe
Argumentos
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.
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:
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.
Especifica uma condição que os registros da tabela atual devem atender para serem acessíveis.
Sintaxe
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.
Sintaxe
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
Sintaxe
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.
Atribui uma expressão (macro de teclado) a uma tecla de função ou combinação de teclas.
Sintaxe
Argumentos
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.
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:
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.
Sintaxe
Argumentos
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.
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.
Sintaxe
ON (Padrão) Exibe a janela Ajuda quando o usuário pressiona F1 ou exibe HELP na janela
Comando.
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
Argumentos
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
Sintaxe
Argumentos
Comentários
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.
Sintaxe
Argumentos
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.
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.
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.
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.
Especifica o acesso para um intervalo de registros com base em suas chaves de índice.
Sintaxe
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.
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
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.
Comentários
Utilize SET KEYCOMP quando você quiser utilizar pressionamentos que lhe são familiares.
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
Sintaxe
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
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.
Determina se o Visual FoxPro envia as mensagens de erro de compilação para um arquivo de texto.
Sintaxe
Argumentos
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.
Define a margem esquerda da impressora e afeta todas as saídas direcionadas para a impressora.
Sintaxe
Argumentos
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.
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
Sintaxe
Argumentos
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 ( / ).
Sintaxe
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.
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
Argumentos
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.
Determina se você pode bloquear múltiplos registros com a utilização de LOCK( ) ou RLOCK( ).
Sintaxe
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.
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.
Determina onde o ponteiro do registro estará posicionado, depois que FIND ou SEEK não
conseguir procurar por um registro.
Sintaxe
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.
Sintaxe
SET NOTIFY ON | OFF
Argumentos
Comentários
Os exemplos de mensagens do sistemas que são afetadas por SET NOTIFY são:
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
Sintaxe
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.
Especifica o intervalo entre relatórios do contador de registros dos comandos que processam
registros.
Sintaxe
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.
Sintaxe
Argumentos
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.
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
Sintaxe
SET ORDER TO
[nNúmeroÍndice | NomeArquivoÍndiceIDX | [TAG] NomeMarca [OF NomeArquivoCDX]
[IN nÁreaTrabalho | cAliasTabela]
[ASCENDING | DESCENDING]]
Argumentos
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:
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
SET ORDER TO 3
Controlling index: C:\FOX30\VIDEO.CDX Tag: NUMBERSOLD
SET ORDER TO 4
Controlling index: C:\FOX30\VIDEO.CDX Tag: YEARSOLD
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.
[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.
Observação O arquivo .IDX tem precedência se houver nomes de marca e arquivo .IDX
duplicados.
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.
Argumentos
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.
Sintaxe
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.
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.
Sintaxe
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 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.
Determina o caractere de casa decimal utilizado na exibição das expressões numéricas e monetárias.
Sintaxe
Argumentos
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.
gnX = 1.25
gcNewPoint = '_'
SET POINT TO gcNewPoint
? gnX
SET POINT TO && Redefina a casa decimal para uma vírgula(,).
? gnX
Ativa ou desativa a saída para a impressora ou rotear a saída para um arquivo, porta ou impressora
de rede.
Sintaxe
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.
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:
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:
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.
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.
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.
Determina se são colocadas bordas em torno das caixas de texto criadas com @ ... GET.
Sintaxe
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.
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
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
Argumentos
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.
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.
Sintaxe
Argumentos
Sintaxe
SET RELATION TO
[eExpressão1 INTO nÁreaTrabalho1 | cAliasTabela1
[, eExpressão2 INTO nÁreaTrabalho2 | cAliasTabela2 ...]
[IN nÁreaTrabalho | cAliasTabela]
[ADDITIVE]]
Argumentos
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:
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:
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.
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.
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.
Especifica quantas vezes e por quanto tempo o Visual FoxPro tenta bloquear um arquivo ou registro
após uma tentativa malsucedida de bloqueio.
Sintaxe
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 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.
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
Sintaxe
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
Sintaxe
Argumentos
OFF Especifica que os segundos não são exibidos nos valores de DataHora.
Comentários
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
Argumentos
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.
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.
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')
SELECT Child1
SET RELATION TO Name1 INTO Child2
SELECT Parent
Sintaxe
Argumentos
gcX = 'John'
gcY = 'Smith'
SET SPACE OFF
? gcX,gcY
SET SPACE ON
? gcX,gcY
Sintaxe
SET STEP ON
Argumentos
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:
Especifica se as definições do sistema Visual FoxPro for Windows são atualizadas com as
definições atuais do Windows.
Sintaxe
Argumentos
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
· 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
Ativa ou desativa a barra de menus do sistema Visual FoxPro durante a execução do programa e
permite a sua reconfiguração.
Sintaxe
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.
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:
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
Sintaxe
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.
Comentários
Algumas tabelas que processam comandos retornam informações ou “conversação”, sobre o status
enquanto são executados. Estes comandos incluem:
Comandos
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.
Sintaxe
Comentários
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
CLEAR
SET TALK OFF
STORE 'Hoje é: ' TO gcTodayDate
SET TEXTMERGE ON
\<<gcTodayDate>>
\\<<DATE( )>>
\A hora é:
\\ <<TIME( )>>
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( )>>
<<gcTodayDate>><<DATE( )>>
A hora é: <<TIME( )>>
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.
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.
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
Argumentos
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.
Especifica o número máximo de caracteres que podem ser armazenados no buffer de teclado.
Sintaxe
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.
Especifica se o Visual FoxPro passa parâmetros para uma função definida pelo usuário (UDF) por
valor ou por referência.
Sintaxe
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.
O exemplo a seguir ilustra a diferença entre as variáveis que foram passadas por valor ou por
referência.
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
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( ), função
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.
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.
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
Sintaxe
Tipos de retorno
Lógico
Argumentos
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.
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.
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
Exibe uma ou mais barras de menus definidas pelo usuário sem ativá-las.
Sintaxe
Argumentos
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.
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
Sintaxe
Argumentos
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.
Exibe uma ou mais janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro sem
ativá-las.
Sintaxe
Argumentos
NomeJanela1 [, NomeJanela2 ...] Especifica o nome de uma ou mais janelas a serem exibidas.
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.
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.
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.
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
Sintaxe
SIGN(nExpressão)
Tipos de retorno
Numérico
Argumentos
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
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.
CLEAR
? SIN(0) && Exibe 0.00
? SIN(PI( )/2) && Exibe 1.00
? SIN(DTOR(90)) && Exibe 1.00
SIZE POPUP, comando
Sintaxe
Argumentos
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
Argumentos
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:
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
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.
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
Comentários
SKPPAD( ) retornará verdadeiro (.T.) se o título de menu estiver desativado e falso (.F.) se estiver
ativado.
SORT, comando
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.
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
[/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.
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 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:
Comentários
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
SOUNDEX(cExpressão)
Tipos de retorno
Caractere
Argumentos
Comentários
CLEAR
? SOUNDEX('Smith') = SOUNDEX('Smyth') && Exibe .T.
? SOUNDEX('Computador') && Exibe C513
SPACE( ), função
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
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.
CLEAR
? SROWS( )
STORE, comando
Sintaxe
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.
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.
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.
DIMENSION gaMyArray(2,2)
SET COMPATIBLE OFF
STORE 2 TO gaMyArray
CLEAR
DISPLAY MEMORY LIKE g*
STR( ), função
Sintaxe
Tipos de retorno
Caractere
Argumentos
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
Sintaxe
Tipos de retorno
Caractere
Argumentos
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
Tipos de retorno
Caractere
Argumentos
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( ).
Sintaxe
Tipos de retorno
Caractere
Argumentos
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.
Comentários
SUBSTRC( ), função
Sintaxe
Tipos de retorno
Caractere
Argumentos
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( ) 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
Sintaxe
SUM [eListaExpressão]
[Escopo] [FOR lExpressão1] [WHILE lExpressão2]
[TO ListaNomeVarMem | TO ARRAY NomeMatriz]
[NOOPTIMIZE]
Argumentos
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.
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.
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.
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
CLEAR
?
? 'Total em estoque : ', gnInStock && Exibe 3119.00
? 'Total requisitado: ', gnOnOrder && Exibe 780.00
? 'Total # unidades : ', gnUnits && Exibe 3899.00
SUSPEND, comando
Sintaxe
SUSPEND
Comentários
CCO
OMMA
ANND
DOOSS SSY
YSS((??????))
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.
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)
? SYS(10,VAL(SYS(1)))
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(1)
? SYS(10,VAL(SYS(1)))
SYS(100) - Definição da console
Sintaxe
SYS(100)
Tipos de retorno
Caractere
IF SYS(100) != 'ON'
SET CONSOLE ON
ENDIF
Sintaxe
SYS(1001)
Tipos de retorno
Caractere
Comentários
Sintaxe
SYS(101)
Tipos de retorno
Caractere
IF SYS(101) != 'SCREEN'
SET DEVICE TO SCREEN
ENDIF
SYS(1016) - Uso da memória de objeto do usuário
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.
Sintaxe
SYS(102)
Tipos de retorno
Caractere
IF SYS(102) != 'OFF'
SET PRINTER OFF
ENDIF
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
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.
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.
Sintaxe
SYS(103)
Tipos de retorno
Caractere
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
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, {10/31/95})
? SYS(11,'10/31/95')
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
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.
IF SYS(13) = 'OFFLINE'
WAIT WINDOW 'A impressora está off-line'
ENDIF
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
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.
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.
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
Sintaxe
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).
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.
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.
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.
STORE 1 TO gnX
DO WHILE LEN(SYS(16,gnX)) != 0
? SYS(16,gnX)
STORE gnX+1 TO gnX
ENDDO
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.
Sintaxe
SYS(2)
Tipos de retorno
Caractere
? 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
Tipos de retorno
Caractere
Argumentos
Estrutura Especifica a estrutura do nome de arquivo. A estrutura do arquivo não pode conter os
curingas ? e *.
Comentários
? SYS(2000,'FOX.*')
? SYS(2000,'FOX.*',1)
SYS(2001) - SET ... status do comando
Sintaxe
Tipos de retorno
Caractere
Argumentos
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,'PRINTER')
? SYS(2001,'PRINTER',1)
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”.
Sintaxe
SYS(2003)
Tipos de retorno
Caractere
Comentários
Sintaxe
SYS(2004)
Tipos de retorno
Caractere
Comentários
Sintaxe
SYS(2006)
Tipos de retorno
Caracter
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
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.
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
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.
Sintaxe
Tipos de retorno
Caractere
Argumentos
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.
Retorna o caminho mínimo relativo ao diretório atual ou especificado para um arquivo especificado.
Sintaxe
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.
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 é:
? SYS(2018)
SYS(2019) - Nome e localização do arquivo de configuração
Sintaxe
SYS(2019)
Tipos de retorno
Caractere
Comentários
Se um arquivo de configuração não puder ser localizado, SYS(2019) retornará uma seqüência vazia.
· 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
Sintaxe
SYS(2020)
Tipos de retorno
Caractere
Comentários
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
Tipos de retorno
Caractere
Argumentos
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.
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.
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
Sintaxe
Tipos de retorno
Caractere
Argumentos
Comentários
A tabela a seguir lista os valores retornados por SYS(2029) e o tipo de tabela correspondente:
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'
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).
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.
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
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.
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.
Sintaxe
Tipos de retorno
Caractere
Argumentos
nTipo Buffer
1 Primeiro plano
2 Segundo 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.
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
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.
Especifica se o Visual FoxPro utiliza a definição SET REPROCESS quando tenta bloquear um
arquivo de índice ou memo.
Sintaxe
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:
1 Índice
2 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.
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.
IF _DOS OR _WINDOWS
SET DEFAULT TO C:
ENDIF
? SYS(5)
SYS(6) - Dispositivo de impressora atual
Sintaxe
SYS(6)
Tipos de retorno
Caractere
Comentários
? SYS(6)
SET PRINTER TO output.txt
? SYS(6)
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.
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
Tipos de retorno
Numérico
Argumentos
Comentários
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.
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
Grava fisicamente as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer.
Sintaxe
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.
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.
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.
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)
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
Tipos de retorno
Caractere
Argumentos
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.
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.
Comentários
As marcas são entradas de índice em arquivos de índice composto .CDX de várias entradas criados
com INDEX.
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
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.
CLEAR
? TAN(0) && Exibe 0.00
? TAN(PI( )/4) && Exibe 1.00
? TAN(PI( )*3/4) && Exibe -1.00
TEXT ... ENDTEXT, comando
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.
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.
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
Sintaxe
TIME([nExpressão])
Tipos de retorno
Caractere
Argumentos
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.
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.
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.
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:
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
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
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
? 'O contato para '+ TRIM(company) + ' é ' + contact
TTOC( ), função
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.
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
TTOD( ), função
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.
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
Sintaxe
Tipos de retorno
Numérico
Argumentos
A seguir, é apresentada uma tabela com os caracteres para cada 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 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:
Comentários
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
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:
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
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, comando
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.
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.
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
Sintaxe
UNLOCK
[RECORD nNúmeroRegistro]
[IN nÁreaTrabalho | cAliasTabela]
[ALL]
Argumentos
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).
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
UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc && Restaura a definição original EXCLUSIVE
UPPER( ), função
Sintaxe
UPPER(cExpressão)
Tipos de retorno
Caractere
Argumentos
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.
CLEAR
? UPPER('abcdefgh') && Exibe ABCDEFGH
USE, comando
Abre uma tabela e seus arquivos de índice associados, ou uma visualização SQL.
Sintaxe
Argumentos
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.
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.
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.
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.
Para obter informações adicionais sobre a cláusula NODATA, consulte o capítulo 8, “Criando
visualizações”, no Guia do Desenvolvedor.
INDEX ? Exibe a caixa de diálogo Abrir com uma lista de arquivos de índice disponíveis para
escolha.
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 [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.
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.
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.
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.
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
USED( ), função
Sintaxe
USED([nÁreaTrabalho | cAliasTabela])
Tipos de retorno
Lógico
Argumentos
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.).
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
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.
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.
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
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.
Comentários
CLEAR
? VERSION( )
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:
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
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
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.
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.
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
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.
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.
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
WTITLE( ), função
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.
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).
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:
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
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.
CLEAR
? YEAR(DATE( ))
ZAP, comando
Sintaxe
ZAP
[IN nÁreaTrabalho | cAliasTabela]
Argumentos
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”.
Altera o tamanho e a posição da janela definida pelo usuário ou da janela do sistema do Visual
FoxPro.
Sintaxe
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.
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:
Você pode utilizar ZOOM WINDOW para redimensionar todas as janelas do sistema exceto as
janelas Arquivista, Calculadora e Jogo.
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
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
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))
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)