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
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 |
Exemplo de uso do operador $(string, inicio, comprimento).
. ? $("dBASE II", 2, 4) BASE
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
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.
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
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
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 |
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
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).
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 >> |