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áculos 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 "diplay" 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 aluno
. 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.
. 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


  Operadores do DBASE II

  São os seguintes operadores dos DBASEII:

Operador Tipo Descrição
+ Matemático Adição
- Matemático Subtração
* Matemático Multiplicação
/ Matemático Divisão
() Matemático Precedência
< Relacional Menor que
> Relacional Maior que
= Relacional Igual
<> Relacional Diferente
<= Relacional Menor ou igual
>= Relacional Maior ou igual
.and. Lógico E
.or. Lógico Ou
.not. Lógico Não
+ Concatenação Junta duas strings
- Concatenação Junta duas strings, eliminando espaço
em branco ao final de cada
$ Concatenação Compara strings

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


  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, temos:
. 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 maíusculo. 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 configurados os nomes dos alunos !


  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
  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


  Pesquisa por numeros

  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

  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


  Variáveis do DBASE II

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

  Resumo das funções:

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



  Operações em pesquisas

  Podemos também realizar operações sobre os campos de uma pesquisa. Por exemplo, desejo saber quantos anos tem 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

  Função de contagem "count". 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. Ex:
. count for sexo="F" to meninas
Contagem =00004
. ? meninas
                4

  Função de soma "sum". Sintaxe:
  sum [escopo] <campos> [for <condição>] [to <variavel>]

  O seguinte comando 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

  Calculando a idade média da turma:
. sum idade to idades
. count all to total
. ? idades / total
               11


  O comando locate

  o comando locate realiza buscas (assim como o display e list), retornando o número do registro em vez de imprimí-lo. Além disso, seta o ponteiro de registro para o registro encontrado. Ex:
. locate for nome="Pedro Borges"
Registro :00009


/MARMSX/CURSOS/DBASEII