Curso de dBASE II
Consulta à Tabela


Você está em: MarMSX >> Cursos >> dBASE II

6. Consulta à Tabela

Assim como no SQL, os comandos de consulta/pesquisa do dBASE II possuem algumas ferramentas que permitem, não só a listagem de registros, bem como filtrar, fazer cálculos etc.

Os comandos DISPLAY e LIST são os responsáveis pela exibição de dados da tabela. A diferença entre um comando e outro é que o LIST lista os registros sem interrupção, enquanto que o DISPLAY pára a cada 15 registros, aguardando uma tecla ser pressionada.

A sintaxe do comando DISPLAY é a seguinte:

DISPLAY [escopo] [for <condição>] [<campos>] [to print] [off]

Onde:

Exemplos:

1) Lista todos os alunos da tabela alunos:

. use alunos
. display all
00001   8361 Pablo Goncalves                 11 M  5
00002   4321 Ana Maria Silva                 11 F  5
00003   5543 Waldir Moraes                   12 M  6
00004   8437 Alvaro Schwarz                  12 M  5
00005   7193 Beatriz Saraiva                 13 F  6
00006   3398 Mauro Pontes                    11 M  5
00007   9001 Pedro Tavares                   13 M  6
00008   6567 Suely Albuquerque               12 F  6
00009   6201 Pedro Borges                    11 M  5
00010   7766 Paula Tavares                   13 F  6

2) Lista todos os meninos da tabela alunos:

. display for sexo="M"
00001   8361 Pablo Goncalves                 11 M  5
00003   5543 Waldir Moraes                   12 M  6
00004   8437 Alvaro Schwarz                  12 M  5
00006   3398 Mauro Pontes                    11 M  5
00007   9001 Pedro Tavares                   13 M  6
00009   6201 Pedro Borges                    11 M  5

3) Lista o nome e a idade de todas as meninas da tabela alunos, sem o número do registro (off).

. display nome,idade for sexo="F" off
Ana Maria Silva                 11
Beatriz Saraiva                 13
Suely Albuquerque               12
Paula Tavares                   13

Obs: tanto faz a posição dos campos vir antes ou depois do "for".


4) Lista os próximos 2 registros, a partir do atual:

. go 4
. display next 2;
00004   8437 Alvaro Schwarz                  12 M  5
00005   7193 Beatriz Saraiva                 13 F  6

6.1. Operadores do dBASE II

  São os seguintes operadores dos dBASEII:

Operador Tipo Descrição
() Matemático Agrupa expressões
+ Matemático Adição
- Matemático Subtração
* Matemático Multiplicação
/ Matemático Divisão

Operador Tipo Descrição
() Relacional Agrupa expressões
< Relacional Menor que
> Relacional Maior que
= Relacional Igual
<> Relacional Diferente
<= Relacional Menor ou igual
>= Relacional Maior ou igual

Operador Tipo Descrição
() Lógico Agrupa expressões
.and. Lógico E
.or. Lógico Ou
.not. Lógico Não

Operador Tipo Descrição
+ Concatenação Junta duas strings
- Concatenação Junta duas strings, eliminando espaço
em branco ao final de cada
$ Concatenação Obtém substring

  Ordem de precedência:
  1. Operador matemático
  2. Operador relacional
  3. Operador lógico

Exemplo de uso do operador $(string, inicio, comprimento).

. ? $("dBASE II", 2, 4)
BASE

6.2. Funções

As principais funções do dBASE II são apresentadas a seguir.

Função Descrição
# Retorna o número do registro atual.
!(string) Converte todos os caracteres de string em maiúsculos.
$(string, inicio, tamanho) Obtém uma substring da string passada.
@(string1, string2) Retorna posição em que string1 está em string2.
LEN(string) Retorna o tamanho da string.
TRIM(string) Elimina os caracteres em branco à direita da string.
STR(valor, tamanho, casas_decimais) Converte valor numérico em string.
VAL(string) Converte a string em valor numérico.
INT(valor) Retorna a parte inteira de um valor.
CHR(valor) Retorna o caractere ASCII correspondente ao valor passado.
RANK(string) Retorna o código ASCII de um caractere.
DATE() Retorna a data do sistema.
TYPE(valor/string) Retorna o tipo de dado da expressão.

Estas funções podem ser usadas através do comando de impressão do dBASE II "?", ou quando as aplicamos ao nome dos campos, quando possível.

No exemplo a seguir, aplicamos a função $ ao campo nome da tabela alunos, de forma a retornar as três primeiras letras do nome de cada aluno.

. use alunos
. display all $(nome, 1, 3)
00001  Pab
00002  Ana
00003  Wal
00004  Alv
00005  Bea
00006  Mau
00007  Ped
00008  Sue
00009  Ped
00010  Pau

6.3. Pesquisa por textos

Alguns cuidados devem ser tomados quando se realiza pesquisa baseada em textos. Por exemplo, quando utilizamos a cláusula "for" para filtrar alunos do sexo feminino, caso utilizemos a expressão "f" em minúsculo, nada é retornado.

. display for sexo="f"
.

O mesmo acontece, quando buscamos por "pedro borges".

. display for nome="pedro borges"
.

Entretanto, este nome existe no registro 9.

. display for nome="Pedro Borges"
00009   6201 Pedro Borges                    11 M  5

Para resolver esse problema, vamos utilizar a função "!", que converte todos os caracteres de uma expressão ou campo em maiúsculo. Ex:

. ? !("abc")
ABC

Assim, resolvemos o problema da seguinte maneira:

. display for !(nome)="PEDRO BORGES"
00009   6201 Pedro Borges                    11 M  5

Não importa como estão escritos os nomes dos alunos.

6.4. Pesquisa exata ou parecida (like)

O comando "set exact on/off" ativa ou desativa o modo exato de busca. Por exemplo:

. set exact off
. display for !(nome) = "PEDRO"
00007   9001 Pedro Tavares                   13 M  6
00009   6201 Pedro Borges                    11 M  5

Este procedimento corresponde ao comando SQL:

SELECT * FROM alunos WHERE upper(nome) like "%PEDRO%";

Enquanto que:

. set exact on
. display for !(nome) = "PEDRO"
.

Corresponde ao comando SQL:

SELECT * FROM alunos WHERE upper(nome) = "PEDRO";

Retorno de substring através da função "$". Sintaxe:

$(<string>, inicio, comprimento);

Exemplo:

. display record 1 $(nome, 1, 3)
00001   Pab

6.5. Pesquisa por números

Vamos listar os alunos da 6a. série:

. display for serie=6
00003   5543 Waldir Moraes                   12 M  6
00005   7193 Beatriz Saraiva                 13 F  6
00007   9001 Pedro Tavares                   13 M  6
00008   6567 Suely Albuquerque               12 F  6
00010   7766 Paula Tavares                   13 F  6

Agora vamos listar somente os alunos da 6a. série e com 13 anos ou mais:

. display for serie=6 .and. idade>12
00005   7193 Beatriz Saraiva                 13 F  6
00007   9001 Pedro Tavares                   13 M  6
00010   7766 Paula Tavares                   13 F  6

6.6. Variáveis do dBASE II

Antes de dar prosseguimento às pesquisas mais complexas, é necessário sabermos como criar, alterar e apagar variáveis da memória no dBASE II.

Resumo das funções de variáveis é apresentado a seguir.

Função Descrição Exemplos
store val to var Cria / altera variáveis store 1 to A, store "Rita" to nome
release var Apaga variáveis release A, release all like A*, release all except nome
clear Apaga todas as variáveis clear
save to nome Salva variáveis em disco save to "myvars", save to "myvars" all like nom*
restore from nome Recupera variáveis do disco restore from "myvars" additive
display / list memory Apresenta as variáveis display memory

6.7. Operações em pesquisas

Podemos também realizar operações sobre os campos de uma pesquisa. Por exemplo, desejo saber quantos anos têm as meninas hoje e terão daqui a 15 anos:

. display nome,idade,idade+15 for sexo="F" off
Ana Maria Silva                 11   26
Beatriz Saraiva                 13   28
Suely Albuquerque               12   27
Paula Tavares                   13   28

A função de contagem COUNT conta o número de ocorrências de um determinado registro, segundo um critério. Sintaxe:

COUNT [escopo] [for <condição>] [to <variavel>]

O seguinte comando irá contar o número de meninas na turma.

. count for sexo="F"
Contagem =00004

Se utilizarmos a opção "to variável", iremos copiar o resultado para uma variável. Exemplo:

. count for sexo="F" to meninas
Contagem =00004
. ? meninas
                4

Função SUM soma os valores de um determinado campo. Sintaxe:

SUM [escopo] <campos> [for <condição>] [to <variavel>]

O seguinte exemplo irá somar a idade dos alunos da turma.

. sum idade
  119

O seguinte comando irá somar a idade das meninas da turma.

. sum idade for sexo="F"
  49

A média de idades de todos os alunos pode ser obtida através do uso das funções "sum" e "count".

. sum idade to idades
. count all to total
. ? idades / total
               11

6.8. O comando LOCATE

Os comandos DISPLAY e LIST localizam e imprimem na tela (ou impressora) todos os registros que atendam uma determinada condição. O comando locate, por sua vez, procura pela primeira ocorrência nos registros que atenda a dada condição de busca. Em vez de imprimir o resultado, coloca o ponteiro de registros na posição do registro encontrado. A busca pode continuar através do comando CONTINUE. Sintaxe do LOCATE:

LOCATE [<escopo>] FOR <condição>

Exemplos:

. locate for nome="Pedro Borges"
Registro :00009
. locate for idade > 10 .AND. serie = 5
Registro :00001
. continue
Registro :00002

O comando CONTINUE continua a busca pelos demais registros até atingir o fim de arquivo (EOF).

6.9. O comando DISPLAY FILES

O comando DISPLAY FILES lista todos os arquivos no disco/diretório corrente relativos ao dBASE II.

. display files

Arquivo de dados # Regs   Ultima data
ALUNOS   DBF     00010    02/02/24
NOTASMAT DBF     00010    02/02/24
FULLTAB  DBF     00010    02/02/24


<< Anterior dBASE II Próxima >>