Вы находитесь на странице: 1из 9

Tutorial FoxBase

Este tutorial apresenta uma breve descrição do ambiente de trabalho do FoxBase e a descrição, com
exemplos, de seus principais comandos e funções.

Iniciando

Ao entrar no FoxBase (digitando FOX na linha de comando), será apresentada a tela abaixo:

Nesta tela, podemos observar a linha de comando (Command Line), na qual serão sempre
apresentadas informações importantes das operações realizadas no FoxBase.

Comandos Básicos
A seguir serão apresentados alguns comandos básicos disponíveis no FoxBase. Vale lembrar que
são aceitos os quatro primeiros caracteres dos comandos, sem ter a necessidades de digitá-los
completamente. Ex: DISPLAY STRUCTURE, pode ser digitado como DISP STRU.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 1


• CLEAR

Limpa a tela. E só.

• CREATE <arquivo>

Cria um novo arquivo de dados, cuja extensão padrão é DBF. Através deste comando define-se a
estrutura do arquivo, informando NOME DO CAMPO, TIPO, TAMANHO e CASAS DECIMAIS (para
campos numéricos).

Regras para criação da estrutura:

NOME (field name)


Pode conter até 10 caracteres, sendo obrigatório que se inicie por uma letra. Não é permitido espaço
em branco assim como caracteres especiais (! ? %&;.@).

TIPO (type)

Os tipos de dados podem ser:

Character : Também chamados de campo String em certas linguagens e banco de dados. Permite
qualquer caractere (letras, números e símbolos). Se um campo caractere possuir um número como
conteúdo, não será possível utiliza-lo para cálculos numéricos, exceto se antes for convertido para
numérico através de uma função de conversão (que será apresentada mais adiante). Este tipo de
dado pode ser definido com tamanho de 1 à 254 caracteres.

Numeric: Tipo de dado utilizado para campos com valores, como salário, preço, quantidade,
percentual, etc. Tem como limite de tamanho 19 dígitos, incluídos neste limite o ponto e casas
decimais. Portanto, um campo numérico definido com tamanho 12 e duas casas decimais tem um
limite de 999.999.999,99.

Date: Campo para armazenamento de datas. Possui tamanho fixo de 8 posições.

Logic: Campo para armazenar dados lógicos (True e False). Possui tamanho fixo de um caractere e
só são permitidos como valor T (true) ou F (false).

Memo: É um tipo de campo especial utilizando para armazenamento de uma quantidade maior de
caracteres, como um texto explicativo, por exemplo. Este campo permite armazenar até 64 kbytes por
registro. Para isso, os dados deste campo ficam armazenados em um arquivo auxiliar, cuja extensão
é DBT, com o mesmo nome do arquivo DBF.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 2


• USE [<file>] [INDEX <ndx_file_list>] [ALIAS <alias>]

Abre um arquivo de dados no formato DBF. Opcionalmente, pode-se definir uma lista de arquivos
índices referentes (discutidos mais tarde) à este DBF e também um Alias.

Um Alias é um apelido dado ao arquivo e tem como objetivo normalmente definir uma referência mais
prática, curta e simples ao arquivo. Por exemplo:

USE CADASTRO ALIAS CAD

Pode-se fazer referência ao CADASTRO.DBF pelo alias CAD.

Veremos exemplos mais práticos à frente.

• APPEND [BLANK]

Insere um registro na base de dados. A diferença entre APPEND e APPEND BLANK é que o primeiro
abre uma tela para que sejam inseridos os valores em cada um dos campos do registro inserido e o
segundo insere automaticamente um registro em branco, com todos os campos vazios.

• EDIT

Edita o registro atual, permitindo inserir/alterar dados nos campos.

• DISPLAY [<escopo>] [[FIELDS] <lista_campos>] [FOR <condição>] [WHILE <condição>]


[OFF] [TO PRINT]

O comando DISPLAY tem como função listar registros (em tela ou impressora) de diversas formas, de
acordo com as opções do comando utilizadas. As opções são:

<escopo> - Escopo é a abrangência de registros que serão listados. Como escopo pode-se informar:

ALL - Lista todos os registros


NEXT n - Lista os próximos n registros
RECORD n - Lista apenas o registro n
REST - Lista o restante dos registros, ou seja, do registro atual ao último.

FIELDS – Determina quais campos serão listados. Se não informado , todos os campos do arquivo
serão listados.

FOR – Específica uma condição a ser atendida para que um registro seja listado.

WHILE – Tem a mesma função de FOR, com a diferença que FOR analisará se cada um dos
registros, a partir do registro atual, atende a condição estipulada. Já WHILE listará os registros
enquanto a condição for satisfeita, já a partir do registro atual. Se o registro atual não atender a
condição, nada será listado, ao passo que com FOR, o primeiro registro é ignorado e a verificação
lógica é feita para os demais registros, até o final.

OFF – Suprime a exibição do número do registro na primeira coluna da listagem.

TO PRINT – Envia a listagem para a saída da impressora (LPT1).

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 3


Há ainda algumas variações do comando DISPLAY, que são:

DISPLAY FILES [ON <drive/dir>] [LIKE <mascara>] [TO PRINT]


Lista os arquivos de um determinado diretório ou do diretório corrente.
Ex:
DISPLAY FILES – Listará todos os arquivos DBF (padrão).
DISPLAY FILES on C:\GZ\CONCENT - listará todos os DBFs de C:\GZ\CONCENT
DISPLAY FILES LIKE *.NTX – listará todos os arquivos c/ extensão NTX do diretório atual

DISPLAY HISTORY [LAST <expr>] [TO PRINT]


Lista o histórico dos comandos digitados na linha de comando.

DISPLAY MEMORY [TO PRINT]


Lista as variáveis de memória em uso

DISPLAY STATUS [TO PRINT]


Lista todos os parâmetros SET e seus estados (ON/OFF) e as programações das teclas de função.

DISPLAY STRUCTURE [TO PRINT]


Lista a estrutura do arquivo DBF aberto na área atual.

O comando LIST funciona como o comando DISPLAY, com as seguintes diferenças:

- o escopo padrão para LIST é ALL, para DISPLAY é o registro corrente.


- LIST não possui pausa a cada 15 registros.
- LIST não utiliza-se de uma flag na listagem para indicar registros que estão deletados.

OPERADORES CONDICIONAIS

Para se trabalhar com as cláusulas FOR ou WHILE, como as existentes nos comandos LIST e
DISPLAY (e em outros como REPLACE, por exemplo) é necessário conhecer os operadores
condicionais. São eles:

= IGUAL A
<> DIFERENTE DE
> MAIOR QUE
< MENOR QUE
>= MAIOR OU IGUAL A
<= MENOR OU IGUAL A

Exemplos:

LIST ALL CODIGO,RAZSOC FOR LIMITE > 1000


LIST NOMFAN,ENDER,BAIRRO,MUNIC FOR ESTADO=”SP” *

* Quando for fazer referência à uma expressão do tipo caractere (string), deve-se informá-la entre
aspas, simples ou duplo.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 4


OPERADORES LÓGICOS

São operadores que permitem estabelecer uma relação entre várias condições a serem avaliadas.
São eles:

.OR. OU lógico
.AND. E lógico
.NOT. NÃO lógico

Ex:

LIST CODIGO, NOMFAN, TELEFONE FOR ESTADO=”SP” .AND. DDDTEL=”011”


Liste código , Nome fantasia e telefone dos clientes que forem de SP e cujo DDD seja 011.

LIST CODIGO, NOMFAN, DDDTEL, TELEFONE FOR DDDTEL=”011” .OR. DDDTEL=”019”


Listar os clientes que possuem DDD 11 ou 19.

LIST CODIGO, NOMFAN FOR .NOT. SITUACAO==”B”


Lista os registros cuja situação NÃO seja “B”

VARIÁVEIS DE MEMÓRIA

Variável de memória é um recurso utilizado em todas as linguagens de programação para armazenar


uma informação em memória e poder recuperá-la sempre que necessário, através da utilização de
uma referência ao endereço de memória onde a informação está armazenada. Esta referência é o
nome da variável.

A regra para nome de variável segue a regra para nomes de campos em arquivos (descrita no
comando CREATE).

O tipo da variável depende do tipo de informação armazenada.

A criação de uma variável é feita por <NOME DA VARIÁVEL> = <VALOR>

Ex:

A = 10 -> Foi criada a variável A, armazenando o valor 10. É, portanto, uma variável numérica.
EMP=”GZ SISTEMAS” -> Criada a variável EMP, do tipo caractere.
DATA=CTOD(“30/01/2004”) -> Criada a variável DATA, do tipo Date.
SN = .T. -> Variável do tipo lógica, armazenando o valor True
X=A*32/7-> A variável X armazenará o resultado da operação que irá multiplicar o valor armazenado
em A por 32 e em seguida, dividirá o resultado da multiplicação por 7. O valor armazendo em X seria
de 45.71

Obs: Para atribuir uma data é necessário o uso da função CTOD, que converte uma expressão
caractere para data. É necessário passar à esta função um texto em forma de uma data válida para
que seja realizada a conversão. Se for informado simplesmente “30/01/2004”, trata-se de uma
informação do tipo TEXTO. Caso seja informado 30/01/2004, trata-se de uma expressão matemática,
o que resultaria no armazenamento do valor 0.01

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 5


REPLACE [<scope>] <field> WITH <expr> [,<field2> WITH <expr2>...] [FOR <expL>] [WHILE
<expL>]

Comando para gravar dados em campos do registro corrente do arquivo em uso.

Ex:

REPLACE ALL SITUACAO WITH “L”


Atribui o valor “L” para o campo SITUACAO em todos os registros do arquivo.

USE CLIENTES
DDDCLI=”011”
CIDCLI=”JUNDIAI”
CEPCLI=”13200000”
REPL DDDCOM WITH DDDCLI, CEP WITH CEPCLI FOR MUNIC=CIDCLI
Executa o REPLACE nos campos DDDCOM e CEP com os valores das variáveis DDDCLI e CEPCLI
apenas nos registros onde o campo MUNIC tenha como conteúdo o valor da variável CIDCLI.

INDEX ON <expr> TO <file> [FOR <expL>] [UNIQUE]

Cria arquivos de índice para agilizar a pesquisa por registros dentro do arquivo, através de uma
chaves de pesquisa (<expr>).

Ex:

USE CLIENTES
INDEX ON CODIGO TO INDCLI1

Ao final da criação do índice, este já está aberto e sendo o índice ativo para o arquivo
CLIENTES.DBF.

Chave Composta
É possível e muitas vezes torna-se necessário a definição de uma chave de pesquisa formada por
dois ou mais campos para se formar a identidade única do registro.
Por exemplo, em um arquivo de contas à receber, o nro. do documento não pode ser considerado
como chave primária(única) dentro do arquivo. A identificação única do documento depende de outras
informações como loja, nro. do caixa, tipo do documento, desdobramento. Assim teríamos:

INDEX ON STR(LOJA,2)+STR(CAIXA,2)+TIPODOC+STR(NRDOC,6)+DESDOBR

Uma chave composta deve ser do tipo de caractere. Por isso o uso da função STR, que converte um
valor numérico em caractere, para que os valores dos campos LOJA, CAIXA e NRDOC sejam
convertidos para caractere antes de serem concatenados com TIPODOC e DESDOBR.

Não é possível criar uma chave composta do tipo numérico, por exemplo, pois se eu tentar criar algo
como INDEX ON CODIGO+LIMITE, a chave será formada pelo resultado da soma dos dois valores, o
que impediria de gerar um índice pela ordem desejada.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 6


Comandos de Configuração de Ambiente (SET)

Os comandos de configuração de ambiente são úteis para definir parâmetros de trabalho dentro
FoxBase. Segue uma lista com os principais:

SET DATE <expr>


Define o formato da data a ser utilizado. O padrão ao entrar no Fox é o padrão americano
(mm/dd/aa). Nós utilizamos o padrão britânico (dd/mm/aa), ativado por SET DATE BRITISH.

SET CENTURY ON/FF


Ativa (ON) ou desativa(OFF) a apresentação de anos com quatro dígitos.

SET EXCLUSIVE ON/OFF


Ativa ou desativa a abertura de arquivos somente em uma máquina, fazendo com que os arquivos só
sejam abertos caso nenhuma outra máquina da rede esteja com este em aberto.

SET DELETED ON/OFF


Ativa ou desativa a exibição de registros marcados para deleção.

SET PRINTER TO <porta/arquivo>


Direciona a impressão para uma porta ou para um arquivo.
Ex:
SET PRINTER TO LPT1
SET PRINTER TO RELAT.PRN

SET PRINT ON/OFF


Ativa ou desativa a impressão

SET DEVICE TO <PRINTER/SCREEN>


Direciona a saída de dados para impressora ou tela.
Não é utilizado no modo interativo, direto na linha de comando e sim em programas de emissão de
relatórios.

Comandos para pesquisa / mudança de ponteiro de registros.

GO <n>
Muda o ponteiro para o registro n

SKIP [+/-] [n]

Avança (+) ou retrocede(-) n registros no arquivo. Se for declarado simplesmente SKIP, avança
automaticamente um registro.

Ex: SKIP +10


SKIP –5
SKIP

Obs: Pode-se digitar apenas o número do registro no qual você quer posicionar o ponteiro de dados
para ir diretamente para o registro, ao invés de utilizar o comando GO.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 7


LOCATE [<scope>] [FOR <expL>] [WHILE <expL>]

Faz a procura seqüencial, ou seja, registro a registro, ao primeiro registro que atenda a condição
especificada em FOR ou WHILE.

Ex: LOCATE FOR MUNIC=”JUNDIAI”


Para no primeiro registro encontrado com o campo MUNIC=”JUNDIAI”

Para continuar realizando a pesquisa estipulado no LOCATE, utilize o comando CONTINUE

SEEK <expr>

Realiza a pesquisa de uma expressão pela chave do arquivo índice atual.

Ex:

USE CLIENTES
INDEX ON CODIGO TO INDCLI1
SEEK 100

Pesquisa o código 100 pela chave de INDCLI1 , que é o índice atual.

Caso o código 100 não seja encontrado, o ponteiro vai para EOF (End of File), que é a indicação de
final de arquivo.

Obs: BOF (Begin of File) é o indicador de início de arquivo. Isso não é a mesma coisa que o primeiro
registro, pois BOF é um ponteiro anterior ao primeiro registro do arquivo.

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 8


PRINCIPAS FUNÇÕES

Uma função é um recurso de uma linguagem de programação através do qual, passando-se um valor,
chamado de parâmetro, esta irá trata-lo e retornar uma resposta. Algumas funções não solicitam
parâmetros, retornando um resultado já pré-programado.

DATE()
Retorna a data atual do sistema

TIME()
Retorna a hora atual do sistema

CTOD(<exprC>)
Converte uma expressão caractere em uma data.

DTOC(<exprD>)
Converte uma expressão data em caractere

STR(<exprN>[,<tam>][,<dec>])
Converte uma expressão numérica em caractere

Ex: STR(1250.87,10,3) -> 1250.870

A função STR utilizada sem definir o tamanho e decimais vai gerar uma expressão caractere de
tamanho 10.

LEFT(<exprC>,<n>)
Retorna n caracteres de uma expressão a partir do primeiro à esquerda.
Ex: LEFT(“GZ SISTEMAS”,2) -> “GZ”

RIGHT(<exprC>, <n>)
Retorna n caracteres de uma expressão a partir do último à direita.
Ex: RIGHT(“GZ SISTEMAS”,8) -> “SISTEMAS”

LEN(<exprC>)
Retorna o tamanho de uma expressão caractere. Se for aplicado sobre um campo de um arquivo
DBF, sempre será retornado o tamanho do campo e não o tamanho do texto que este campo contém.
Ex:

No arquivo CLIENTES.DBF, se for feito ? LEN(NOMFAN) a resposta sempre será 15, mesmo que o
conteúdo do campo seja menor.

VAL(<ExprC>)
Retorna a expressão informada como numérica.

Ex:

A=”15”
B=”20”

? A+B -> 1520 (As expressões são concatenadas)


? VAL(A)+ VAL(B) -> 35

GZ SISTEMAS IMPORTAÇÃO E COMÉRCIO LTDA Pág. 9