Você está na página 1de 312

DATAEASE

Manual de Referncia

Volume 3 Guia da DataEase Query Language

Equao Informtica e Comrcio Ltda. DataEase International, Inc.

Plano de Suporte Tcnico

A Equao Informtica e Comrcio Ltda oferece suporte tcnico gratuito para todas as licenas do produto registradas. Para ter direito ao suporte tcnico, prenecha o formulrio de registro, e remeta-o para: Equao Informtica e Comrcio Ltda. R Santa Isabel 137 cj 32 001221-010 So Paulo SP

VOC PRECISA ESTAR REGISTRADO PARA TER DIREITO AO SUPORTE TCNICO GRATUITO. Por favor, tenha sempre em mos o nmero de srie do seu produto ao solicitar suporte tcnico. O nmero de srie est localizado nos manuais, diskettes e na Tela de Inicializao do DataEase.

Equao marca registrada da Equao Informtica e Comrcio Ltda. DataEase e o logotipo DataEase so marcas registradas da DataEase Internaional, Inc. Todas as marcas registradas citadas neste manual so marcas registradas de seus respectivos fabricantes.

Nenhuma parte desta publicao poder ser reproduzida ou transmitida, sejam quais forem os mtodos empregados: eletrnicos, mecnicos, fotogrficos, gravaes ou outros, sem a autorizao por escrito do autor.

1988 DataEase International, Inc. 7 Cambridge Drive, Trimbull, CT 06611 1994 Equao Informtica e Comrcio Ltda. R Santa Isabel 137 cj 32 01221-010 So Paulo SP Data da Impresso: Maior de 1995

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NDICE
Captulo 1 INTRODUO

MODO INTERATIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MODO EDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O QUE UMA QUERY? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXEMPLO DE QUERY E SADA DO RELATRIO . . . . . . . . . . . . . . . . ROTINAS DQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de Rotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Processamento Condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O VOCABULRIO BSICO DA DQL . . . . . . . . . . . . . . . . . . . . . . . . . . . COMO USAR ESTE LIVRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Que Ler Neste Livro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONVENES TIPOGRFICAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . No Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Na Tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1-1 1-2 1-2 1-2 1-3 1-3 1-3 1-4 1-5 1-5 1-6 1-6 1-6

Captulo 2 ROTINAS DQL

FORMATO DATA-ENTRY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DEFINE QUERY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SUMRIO DAS OPES DO MENU DQL. . . . . . . . . . . . . . . . . . . . . . . . 1. Gera Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Inicia Nova Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Define Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Define Query. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Define Forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Define Estilo de Impresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Grava Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Carrega Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. Exclui Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10. Imprime Definio da Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMO EXECUTAR UMA ROTINA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMO INICIAR UMA NOVA ROTINA . . . . . . . . . . . . . . . . . . . . . . . . . . O QUE UM FORMATO DATA-ENTRY? . . . . . . . . . . . . . . . . . . . . . . . . Como Mostrar o Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando o Formato data-entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando o Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando uma Relao para Especificar Valores do Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especificando Valores do Formato data-entry Numa Query . . . . . . . . . Alternativas para Usar o Formato data-entry . . . . . . . . . . . . . . . . . . . . . Gravando o Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2-1 2-2 2-3 2-3 2-3 2-3 2-3 2-3 2-4 2-4 2-4 2-4 2-4 2-5 2-5 2-6 2-7 2-7 2-8 2-8 2-8 2-9 2-9
1

ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Recuperando os Valores no Formato data-entry. . . . . . . . . . . . . . . . . . . Modificando o Formato data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A DATAEASE QUERY LANGUAGE (DQL) . . . . . . . . . . . . . . . . . . . . . . . Sada da DQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modo Interativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trocando os Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mensagens e Menus do Modo Interativo. . . . . . . . . . . . . . . . . . . . . Como Ultrapassar Menus no Modo Interativo . . . . . . . . . . . . . . . . Digitando Comandos DQL no Modo Interativo . . . . . . . . . . . . . . . Nveis Alto e Baixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modo Edio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erros de Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modificando uma Query no Modo Edio . . . . . . . . . . . . . . . . . . . Usando Queries Existentes para Criar Novas Queries . . . . . . . . . . Trocando os Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gravando uma Rotina na Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Varredura Automtica da sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gravando uma Rotina no Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Carregando uma Rotina na Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . Convertendo um Relatrio Rpido numa Rotina DQL. . . . . . . . . . . . . . Removendo uma Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Imprimindo a Definio de uma Rotina . . . . . . . . . . . . . . . . . . . . . . . . . Definio da Rotina - Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2-10 2-11 2-11 2-11 2-12 2-12 2-13 2-13 2-13 2-14 2-15 2-14 2-14 2-16 2-16 2-17 2-17 2-18 2-19 2-19 2-20 2-20 2-21

Captulo 3 DQL DE NVEL BAIXO

O PROPSITO DA QUERY: UM RELATRIO . . . . . . . . . . . . . . . . . . . . QUAIS REGISTROS SELECIONAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CRIANDO A QUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3-2 3-3 3-3

Captulo 4 QUERY DE NVEL ALTO

OS COMANDOS DO NVEL ALTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ROTINA 1: ENVIAR PEDIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Query para a Rotina Enviar Pedidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . Explicao da Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gravando a Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ROTINA 2: CALCULA DESCONTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Query para a Rotina Calcula Desconto . . . . . . . . . . . . . . . . . . . . . . . . Explicao da Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ROTINA 3: IMPRIME PEDIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Query para a Rotina Imprime Pedidos . . . . . . . . . . . . . . . . . . . . . . . . Explicao da Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A ROTINA DE CONTROLE: PEDIDOS CORREIO. . . . . . . . . . . . . . . . . . A Query para a Rotina de Controle Pedidos Correio . . . . . . . . . . . . . . . Explicao da Rotina de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . SUMRIO (COLOCANDO AS ROTINAS JUNTAS) . . . . . . . . . . . . . . . .

4-1 4-2 4-2 4-2 4-8 4-8 4-9 4-9 4-17 4-18 4-18 4-20 4-21 4-21 4-23

ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 5 A SADA DO RELATRIO

O PROPSITO DA FORMA DO RELATRIO . . . . . . . . . . . . . . . . . . . . . OS ELEMENTOS DA FORMA DO RELATRIO. . . . . . . . . . . . . . . . . . . COMO ESTE CAPTULO EST ORGANIZADO . . . . . . . . . . . . . . . . . . . FORMAS PR-DEFINIDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FORMAS SOB MEDIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FORMA PADRO DO RELATRIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GRAVANDO UMA FORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MODIFICANDO UMA FORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIPOS DE FORMAS PR-DEFINIDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Colunar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Campo Por Linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Entrada de Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. GrafTalk chart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Sob Medida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Exportao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. CrossView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMO DEFINIR UMA FORMA: VISO GERAL . . . . . . . . . . . . . . . . . . TIPOS DE FORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Colunar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Largura do Relatrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Espaamento Automtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Colunar com Agrupamentos e Estatsticas . . . . . . . . . . . . . Estatsticas de Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Campo Por Linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Entrada de Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma GrafTalk Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Como Criar uma Forma GrafTalk Chart. . . . . . . . . . . . . . . . . . . . . Forma Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma CrossView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma Exportao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MailMerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MultiMate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WordPerfect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GrafTalk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lotus 1-2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ASCII Varivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ASCII Fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DIF (Data Interchange Format). . . . . . . . . . . . . . . . . . . . . . . . . . . . Formas Sob Medida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especificando Campos na Forma Sob Medida . . . . . . . . . . . . O Movimento do Cursor na Tela da Forma. . . . . . . . . . . . . . . Comandos da Forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comandos da Forma Obrigatrios . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5-1 5-1 5-2 5-3 5-3 5-3 5-3 5-4 5-4 5-4 5-4 5-4 5-4 5-4 5-5 5-5 5-5 5-5 5-5 5-7 5-7 5-7 5-8 5-10 5-10 5-12 5-14 5-15 5-17 5-19 5-20 5-22 5-22 5-23 5-24 5-26 5-27 5-29 5-29 5-31 5-32 5-32 5-33 5-33 5-34 5-35 5-36 5-26

ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Opes dos Comandos da Forma Obrigatrios . . . . . . . . . . . . . . . . O Comando .items nosplit . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .items across N wide M . . . . . . . . . . . . . . . . . . . . Como Usar o Comando .items across. . . . . . . . . . . . . . . . . . . . Comandos da Forma a Nvel de Grupo . . . . . . . . . . . . . . . . . . . . . . Criando um Relatrio Sumrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comandos da Forma a Nvel de Pgina . . . . . . . . . . . . . . . . . . . . . . O Comando .page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .header [N] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .footer [N] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Comando .call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editando Formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . As Teclas de Funo para a Edio . . . . . . . . . . . . . . . . . . . . . . . . . Texto da Forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Conjunto de Caracteres ASCII Extendido . . . . . . . . . . . . . . . . . . Incluindo e Modificando Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Como Incluir ou Modificar Campos . . . . . . . . . . . . . . . . . . . . . . . . Tamanhos e Tipos de Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suprimindo Espaos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GRAVANDO UMA FORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Os comandos de Controle da Impressora . . . . . . . . . . . . . . . . . . . . . . . . O Smbolo @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caracteres por Polegada (CPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linhas por Polegada (LPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tamanho da Pgina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A ESPECIFICAO DO ESTILO DE IMPRESSO . . . . . . . . . . . . . . . . . Definindo o Destino do Relatrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Destino do Relatrio: Tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rolamento da Tela do Relatrio . . . . . . . . . . . . . . . . . . . . . . . . Relatrio com Dois Destinos . . . . . . . . . . . . . . . . . . . . . . . . . . Destino do Relatrio: Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Destino do Relatrio: Impressora . . . . . . . . . . . . . . . . . . . . . . . . . . Completando a Especificao: Tamanho da Pgina . . . . . . . . . . . . . . . . Completando a Especificao: Margens . . . . . . . . . . . . . . . . . . . . . . . . . Completando a Especificao: Estilo do Tipo . . . . . . . . . . . . . . . . . . . . Gravando a Especificao do Estilo de Impresso . . . . . . . . . . . . . . . . . Modificando o Estilo de Impresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5-38 5-38 5-38 5-39 5-42 5-42 5-42 5-42 5-43 5-44 5-45 5-45 5-46 5-46 5-46 5-46 5-48 5-49 5-50 5-50 5-50 5-51 5-52 5-53 5-53 5-54 5-54 5-55 5-55 5-55 5-56 5-57 5-58 5-58 5-59 5-60 5-60

Captulo 6 LEXICOGRAFIA DQL

INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONVENES TIPOGRFICAS DA LEXICOGRAFIA DQL . . . . . . . . Diagramas de Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FORMATOS DATAEASE USADOS NOS EXEMPLOS . . . . . . . . . . . . . . SMBOLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pontuao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matemticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6-1 6-2 6-2 6-2 6-2 6-3 6-3 6-3

ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

+ (Adio) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - (Subtrao). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / (Diviso). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * (Multiplicao) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * (Coringa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? (Coringa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Coringa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : (Dois pontos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . () (Parnteses). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Ponto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; (Ponto e vrgula) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Aspas). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . := (Operador de Valorizao) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < (Menor que) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <= (Menor ou igual a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = (Igual) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > (Maior que) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >= (Maior ou igual a). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Comentrios) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relao ad-hoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ampm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . asin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . atan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . atan2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . backup db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . between . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . blank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . call menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . call program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comentrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de Comparao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de Estatsticas Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . Valor Constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rotinas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . copy all from . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . count of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . current. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . data-entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . day . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . db status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ndice

6-4 6-4 6-4 6-5 6-5 6-6 6-7 6-8 6-9 6-10 6-11 6-11 6-12 6-13 6-13 6-14 6-14 6-14 6-15 6-15 6-16 6-16 6-18 6-20 6-20 6-21 6-22 6-23 6-24 6-24 6-25 6-26 6-26 6-27 6-28 6-29 6-31 6-33 6-33 6-34 6-35 6-36 6-37 6-38 6-39 6-39 6-40 6-41 6-42 6-43 6-44 6-45 6-46
5

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . delete records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . do. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enter a record. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . firstc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . firstlast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . firstw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . floor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . futurevalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agrupamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . highest of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . if (Comando). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . if (Funo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in groups with group-totals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . install appl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . installment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . item (Operador Estatstico). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . item (Operador de Estatsticas Condicionais) . . . . . . . . . . . . . . . . . . . . . . . . jointext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . julian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Palavras chave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lastc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lastfirst. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lastw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . list records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lock db. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . log10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lowest of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mean of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . midc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . midw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6

6-47 6-48 6-49 6-50 6-52 6-53 6-54 6-55 6-56 6-56 6-57 6-58 6-58 6-62 6-63 6-64 6-66 6-67 6-68 6-69 6-71 6-73 6-74 6-75 6-76 6-77 7-78 6-79 6-81 6-82 6-83 6-84 6-85 6-85 6-86 6-87 6-87 6-88 6-89 6-89 6-90 6-92 6-93 6-94 6-94 6-95 6-96 6-97 6-98 6-99 6-101 6-101 6-102
ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

minutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . modify records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . month . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . named . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aes Encadeadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . not. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . or. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . percent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . periods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . presentvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formato Primrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comandos Procedurais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rotina de Processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . proper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . query selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . record entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de Estatsticas Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reorganize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forma do Relatrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . restore db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . run procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . seconds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formato Secundrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Critrios de Seleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ordenao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . spellcurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . spelldate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . spellmonth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . spellnumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . spellweekday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores Estatsticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . std.dev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . std.err.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sum of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . temp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . textpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . timeampm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Processamento de Transaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ndice

6-103 6-103 6-104 6-105 6-105 6-107 6-109 6-109 6-110 6-111 6-112 6-115 6-116 6-117 6-117 6-118 6-119 6-120 6-121 6-122 6-124 6-125 6-126 6-127 6-128 6-129 6-130 6-131 6-132 6-132 6-133 6-134 6-135 6-135 6-136 6-137 6-137 6-138 6-138 6-139 6-140 6-140 6-141 6-142 6-143 6-144 6-145 6-146 6-146 6-147 6-148 6-148 6-149
7

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

unlock db. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . upper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Varivel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . weekday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . year . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . yearday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . yearweek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6-151 6-152 6-153 6-154 6-155 6-156 6-156 6-158 6-158 6-159 6-160

ndice

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 1 INTRODUO
DataEase Query Language (DQL) extende a capacidade de processamento de Adados e gerao de relatrios do DataEase para alm das descritas em Relatrios Rpidos, no Volume 1. Alm de dar a voc o controle completo sobre todos os aspectos da Query, design de relatrios e formatao da sada, o Processamento Avanado DQL permite que voc:

Crie aplicaes sob medida que incluem registros, manipulam e recuperam informaes em vrios Formatos do banco de dados Use os operadores relacionais DQL para encontrar, imprimir, modificar, ordenar, agrupar e sumarizar dados em Formatos relacionados Carregue e encadeie menus, Formatos, relatrios, importaes de dados mesmo outros programas - e ligar todas estas aes em uma nica rotina de controle Use variveis globais para passar valores entre rotinas Crie aplicaes de processamento de transaes, que automaticamente incluem registros, transferem informaes de um Formato para outro e executam atualizaes em lote em vrios Formatos

MODO INTERATIVO
Embora o Processamento Avanado DQL use a DataEase Query Language para manipular e recuperar informaes em um banco de dados, voc no precisa perder tempo memorizando a linguagem para utiliz-la. Para executar mesmo as rotinas mais complicadas, tudo o que voc precisa fazer selecionar opes em uma srie de menus. No Modo Interativo, o DataEase ativa um editor que faz perguntas a cada passo, mostra todas as respostas vlidas, e impede que voc cometa erros de sintaxe. Em razo de todo o Processamento Avanado ser suportado por mensagens sensveis ao contexto, mesmo os novos usurios podero facilmente criar aplicaes e gerar relatrios complexos com um mnimo de treinamento.

Introduo

1-1

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

MODO EDIO
Assim que voc ganhar experincia, voc poder escolher trabalhar no Modo Edio o modo preferido pelos usurios avanados DataEase. No Modo Edio voc pode digitar os comandos diretamente, sem o auxlio dos menus, mensagens ou do verificador de sintaxe.

O QUE UMA QUERY?


Uma Query um conjunto de comandos que dizem para o DataEase como manipular a informao no banco de dados. Uma Query pode: Fazer uma questo (ou seja, qual estado tm mais clientes?) Incluir, excluir ou modificar dados Executar outros programas

A DataEase Query Language um grupo de palavras e smbolos que dizem ao DataEase como processar os dados. A sada impressa de uma Query chamada de relatrio. A Figura 1-1 mostra um relatrio que incorpora uma Query bsica e parte de sua sada impressa.

EXEMPLO DE QUERY E SADA DO RELATRIO


RELATRIO DOS NOMES DOS ESTADOS NOS E.U.A. Query for ESTADOS ; list records ESTADO in order . end Sada do Relatrio =========== Alabama Alaska Arizona Arkansas California Colorado Connecticut . . Wyoming =========== Figura 1-1

1-2

Introduo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ROTINAS DQL
Alm de extrair informaes, voc pode usar uma Query para atualizar ou modificar dados. Quando a DQL usada para manipular dados, a Query passa a fazer parte de uma rotina. Uma rotina DQL consiste de vrios elementos: Query - diz ao DataEase que informao processar Forma - diz ao DataEase como arranjar a sada Estilo de Impresso - diz ao DataEase para onde enviar a sada. Se a sada for para a impressora, o Estilo de Impresso tambm especifica as dimenses da pgina, alm de outras caractersticas necessrias para gerar a cpia impressa Formato data-entry - opcionalmente permite que voc digite informaes adicionais, usadas pelo processamento imediatamente antes da rotina ser executada

Tipos de Rotinas
Existem dois tipos bsicos de rotinas DQL: Rotinas de Processamento e Rotinas de Controle. Uma Rotina de Processamento usada para manipular diretamente os dados - para incluir, excluir, modificar, imprimir e ordenar dados, para atualizar as informaes armazenadas no banco de dados ou para gerar relatrios impressos. Uma Rotina de Controle no manipula diretamente os dados . Em vez disto, uma simples rotina de controle pode ser usada para ligar qualquer nmero de rotinas entre si (como as macros utilizadas em vrios programas modernos). Isto torna possvel a automatizao de sries de transaes que ocorrem em contabilidade, contas a pagar e a receber, controle de estoques, processamento de pedidos e pontos-de-venda a varejo, onde os dados so enviados de um Formato para outro, e registros so continuamente atualizados.

Processamento Condicional
Alm de processar dados e ligar transaes, a DQL inclui um conjunto completo de comandos procedurais (incluindo case, if...then e while...do) que permitem que voc use o processamento condicional em ambos os tipos de rotinas (por exemplo, se hoje o ltimo dia da semana, execute a rotina de fechamento semanal e faa o backup do banco de dados).

Introduo

1-3

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O VOCABULRIO BSICO DA DQL


A terminologia bsica que usada para criar uma rotina DQL composta de oito elementos chave: Comandos incluem, excluem, modificam ou imprimem registros; carregam e executam rotinas ou programas externos; e geram sada de relatrios em tela, disco ou impressora. Existem trs grupos de comandos DQL: Comandos de Processamento, Comandos de Controle e Comandos Procedurais. Operadores depuram os comandos; eles dizem ao DataEase como executar as vrias operaes definidas pelos comandos da Query (como em que ordem processar os registros, que estatsticas gerar, etc.). Existem sete grupos de operadores DQL: Operadores de Comparao, Operadores de Ordenao e Agrupamento, Operadores Estatsticos, Operadores Relacionais, Operadores de Estatsticas Condicionais e Operadores de Estatsticas Relacionais. Funes retornam um valor especificado de uma forma diferente. As 58 funes da DQL so divididas em nove grupos: Cientificas, Condicionais, Data, Extenso, Financeiras, Hora, Matemticas, Texto e Trigonomtricas. Palavras Chave sinalizam operaes especiais, como a criao de variveis globais ou temporrias, acessar variveis do sistema, executar aes condicionais ou recuperar valores de um Formato data-entry. Relaes ligam os registros de Formatos diferentes. Numa rotina DQL, voc pode usar relaes pr-definidas ou ad-hoc para acessar informaes em um Formato relacionado. Comandos da Forma especificam o layout do texto e dos valores dos campos em um relatrio. O Captulo 5 deste volume fornece informaes detalhadas sobre como formatar um relatrio. Smbolos esclarecem, dividem e concluem vrios comandos especificados numa Query. Valores so os dados atuais que so processados pela rotina. Um valor pode ser um nmero ou um texto. A maioria dos valores em uma Query so contedos de campos de Formatos especificados.

Todos estes itens so individualmente definidos na Lexicografia DQL, uma referncia-dicionrio ao final deste Volume.

1-4

Introduo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

COMO USAR ESTE LIVRO


Este livro foi criado para ser usado como uma ferramenta de aprendizado ou como um manual de referncia completo. Aps esta Introduo, a informao est organizada em cinco sees, as quais so: Captulo 2. Definindo, Modificando e Executando Rotinas fornece uma explicao detalhada de como criar ou modificar uma rotina DQL, incluindo: modos e nveis, mensagens, e definies das teclas de funo. Captulo 3. Define Query: Um Exemplo de Nvel Baixo um exemplo simples, passo-a-passo, que explica como criar uma Query no Modo Interativo de Nvel Baixo que pode recuperar informaes de um par de Formatos relacionados. Captulo 4. Define Query: Um Exemplo de Nvel Alto um exemplo detalhado que demonstra como criar aplicaes sob medida usando os comandos de Nvel Alto da DQL para ligar vrias rotinas de processamento numa nica rotina de controle. Captulo 5. Define Forma/Estilo de Impresso fornece as linhas gerais para o design da sada do relatrio, com numerosos exemplos de padres e formas especiais de relatrios, que mostram como controlar a aparncia de seus relatrios. Captulo 6. Lexicografia da DQL uma referncia-dicionrio que define todos os comandos, funes e caractersticas da DataEase Query Language. Os termos so impressos em ordem alfabtica, com a pontuao e outros smbolos mostrados em primeiro lugar.

O Que Ler Primeiro


Se voc um novo usurio, ns recomendamos que voc leia primeiro o livro Tutorial DataEase, e ento o Captulo 3 deste volume, para se familiarizar com os processos de definio de Formatos e Queries. Usurios mais experimentados iro achar que o exemplo de nvel Alto do Captulo 4 introduz a maior parte do vocabulrio da DQL no processo de construir uma rotina de controle para automatizar o sistema de preenchimento de pedidos para uma companhia que trabalha com vendas pelo correio. Todos os usurios notaro que, a lexicografia da DQL uma reserva rpida e de simples uso para a localizao da sintaxe correta do comando para qualquer problema na Query, alm de informaes detalhadas sobre o uso de cada comando (com exemplos).

Introduo

1-5

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

CONVENES TIPOGRFICAS No Texto


O texto narrativo impresso em tipo Swiss (este pargrafo impresso em tipo Swiss). Os nomes dos Formatos so impressos em MAISCULAS (CLIENTES, PEDIDOS). Os nomes dos campos so impressos em MAISCULAS DE CORPO MENOR (ULTIMO NOME, BALANO FINAL, etc.). Os termos da DQL so impressos em minsculas e negrito (for, list records, all, data-entry, etc.). Quando o valor de um campo (que no seja o nome do campo) citado, ele no est em maisculas (por exemplo, os nomes dos clientes). As Queries e as sadas dos relatrios so impressos em tipo Dutch, como mostrado abaixo: Query for ESTADOS ; list records ESTADO in order . end Sada do Relatrio =========== Alabama Alaska Arizona Arkansas . . . Wyoming ===========

Na Tela
No Modo Interativo, o DataEase mostra os termos da DQL em minsculas. Os nomes dos Formatos e campos so automaticamente colocados na forma em que foram usados na definio dos mesmos. Quando voc est criando uma Query no Modo Edio, no entanto, voc pode usar minsculas ou maisculas em qualquer parte da Query. Quando voc cria uma Query, o DataEase inclui espaamento e tabulao automticos. Voc pode usar o espaamento e tabulao que voc quiser. O DataEase no se importa como os comandos esto espacejados, se a sintaxe estiver correta.

1-6

Introduo

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Captulo 2 ROTINAS DQL


voc seleciona Processamento Avanado DQL do Menu Principal InfoEase, Quando o Menu DQL apresentado.

Figura 2-1 O Menu DQL o ponto inicial para todas as aes que utilizam a DataEase Query Language. a ferramenta que permite que voc defina, modifique, grave e execute rotinas DQL. O Menu DQL similar ao Menu de Relatrios Rpidos, discutido no Volume 1, Captulo 3. Existem dez opes no Menu DQL. Destas, oito tm os mesmos nomes e funcionam da mesma maneira que suas correlatas no Menu de Relatrios Rpidos. As duas opes diferentes no Menu DQL so: Define Formato data-entry (a opo 3) e Define Query (a opo 4).

FORMATO DATA-ENTRY
A opo Define Formato data-entry do Menu DQL no tm similar no Menu de Relatrios Rpidos. Ela simplesmente uma das vrias caractersticas que fazem o Processamento Avanado DQL muito mais poderoso e verstil que os Relatrios Rpidos.

Rotinas DQL

2-1

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

O Formato data-entry uma entrada especial de dados que voc cria, a qual permite que voc fornea informaes diferentes cada vez que executa a mesma rotina. Por exemplo, se voc tm uma rotina que imprime todos os funcionrios de sua companhia, voc pode definir um Formato data-entry com apenas um campo, chamado DEPARTAMENTO. Ento, imediatamente antes de executar a rotina, voc pode digitar o nome do departamento no Formato data-entry. Quando voc executar a rotina, o InfoEase vai imprimir apenas os funcionrios para aquele departamento especificado. Por convenincia, o InfoEase permite que voc mostre novamente o Formato data-entry cada vez que a rotina executada. Isto permite que voc execute a rotina quantas vezes desejar, usando valores diferentes em cada execuo. Usando esta tcnica, voc pode facilmente gerar um relatrio separado para cada departamento, simplesmente digitando o nome do departamento, um por vez, no Formato data-entry. Embora voc defina e grave um Formato data-entry da mesma maneira que um Formato comum, as informaes digitadas em um Formato data-entry so usadas apenas para processar a rotina atualmente sendo executada - elas nunca sero incorporadas ao banco de dados. Pense no Formato data-entry como um quadro negro no qual voc coloca os dados especficos que o InfoEase deve processar. Aps a rotina ser executada, o InfoEase apaga o quadro negro, e voc pode especificar dados diferentes antes de executar a rotina novamente.

DEFINE QUERY
A opo Define Query do Menu DQL substitui duas opes do Menu de Relatrios Rpidos: Define Seleo de Registros (a opo 3) e Define Campos a serem Listados (a opo 4). A Query o conjunto de instrues que dizem ao InfoEase onde encontrar os dados a serem processados e o que fazer com os dados. Ela composta de uma srie de comandos que usam o vocabulrio e a sintaxe da DQL para comunicar estas instrues. Para processar qualquer informao num banco de dados, a Query precisa dizer ao InfoEase trs coisas: Que Formato (ou Formatos) contm os dados a serem processados Quais registros processar em cada Formato Que aes executar usando os registros selecionados

2-2

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

SUMRIO DAS OPES DO MENU DQL


1. Gera Rotina Gera Rotina processa a rotina na memria. Se no existir uma rotina carregada, na memria, o InfoEase pede para que voc selecione uma de um menu que contm os nomes de todas as rotinas disponveis no banco de dados. Inicia Nova Rotina remove uma rotina da memria. Use esta opo quando quiser criar uma nova rotina, ou quando quiser remover a rotina que est atualmente na memria. Define Formato data-entry permite que voc defina um Formato especial para entrada de dados a ser usado no incio de uma rotina particular. Um Formato data-entry definido e preenchido justamente como um Formato comum. Ele mais frequentemente usado para produzir sadas diferentes a cada vez que a rotina executada. Uma vez definido e gravado o Formato data-entry como parte de uma rotina, esta opo do menu troca seu nome para Modif. Formato data-entry. Define Query d a voc o acesso DataEase Query Language. Usando a DQL, voc cria uma Query que pode fazer uma questo, manipular dados, gerar sadas, ou interligar qualquer nmero de operaes de gerenciamento de dados separadas. Quando voc seleciona Define Query, voc usa ou o Modo Interativo ou o Modo Edio para digitar a Query. Uma vez definida e gravada a Query como parte da rotina, esta opo do menu troca seu nome para Modif. Query. Define Forma permite controlar a aparncia da sada do relatrio. Voc pode selecionar uma entre as oito formas pr-definidas de relatrio, ou criar uma forma sob medida. Se voc no executar este passo, o InfoEase automaticamente cria um relatrio colunar, usando os nomes dos campos como cabealhos das colunas. Uma vez definida e gravada a forma como parte da rotina, esta opo do menu troca seu nome para Modif. Forma.

2. Inicia Nova Rotina

3. Define Formato data-entry

4. Define Query

5. Define Forma

Rotinas DQL

2-3

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

6. Define Estilo de Impresso

Define Estilo de Impresso permite que voc controle o estilo da impresso (tipo e tamanho dos caracteres usados no relatrio), o tamanho da pgina e o destino da sada do relatrio. A sada pode ser enviada para tela, impressora ou um arquivo em disco. O destino padro a tela. Uma vez definido e gravado o Estilo de Impresso como parte da Query, esta opo do menu troca seu nome para Modif. Estilo de Impresso. Grava Rotina permite que voc armazene permanentemente uma rotina como parte do banco de dados. Quando voc seleciona esta opo, o InfoEase pergunta pelo nome da rotina. Se a rotina j tiver um nome, o InfoEase pergunta se voc quer atualizar a verso original com a rotina atual ou dar rotina atual um novo nome (e mantendo ambas as verses gravadas). Carrega Rotina permite que voc carregue na memria uma rotina criada anteriormente para v-la, modific-la ou execut-la. O InfoEase mostra uma relao com todas a rotinas existentes no banco de dados. Especifique a rotina que voc quer carregar digitando seu nome ou o nmero correspondente na relao. Exclui Rotina permite que voc remova permanentemente uma rotina. O InfoEase mostra uma relao de todas as rotinas do banco de dados. Especifique a rotina que voc quer excluir, digitando seu nome ou o nmero correspondente na relao. Voc ser indagado para ter certeza se quer mesmo excluir a rotina antes que ela seja removida do disco. Imprime Definio da Rotina cria uma documentao impressa da rotina. Ela inclui a definio da Query, a forma do relatrio e a definio do Formato data-entry, se houver um criado para a rotina.

7. Grava Rotina

8. Carrega Rotina

9. Exclui Rotina

10. Imprime Definio da Rotina

NOTA:

Explicaes detalhadas para todas estas opes, exceto Define Forma e Define Estilo de Impresso comeam na prxima pgina. Para a explicao destas duas opes, dirija-se ao Captulo 5 deste volume.

2-4

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Como Executar uma Rotina


A opo Gera Rotina processa a rotina atualmente carregada na memria do computador. Se no existir uma rotina carregada na memria, o InfoEase mostra uma relao com todas as rotinas do banco de dados, para que voc selecione qual delas executar. Quando voc seleciona Gera Rotina, o InfoEase pergunta:

Selecione a rotina a executar:


e mostra os nomes de todos os relatrios rpidos e rotinas DQL do banco de dados, numa janela direita da tela. Quando voc pressionar RETURN, o InfoEase poder mostrar uma tela especial de entrada de dados (o Formato data-entry), dependendo de como a rotina foi definida. Para a explicao de como criar e usar esta tela, veja a seo correspondente neste volume. Enquanto estiver executando uma rotina, o InfoEase mostra a seguinte mensagem no canto superior direito da tela:

a rotina NOME DA ROTINA


Quando a execuo da rotina terminar, o Menu DQL reaparece. Se voc quiser interromper a rotina antes dela ser iniciada, pressione ESC. NOTA: Voc pode selecionar uma rotina DQL (ou qualquer item de um menu) digitando o seu nmero, movendo a barra do menu, ou digitando o nome da rotina. Enquanto voc estiver digitando o nome, o InfoEase vai destacar o primeiro item que combinar com o que est sendo digitado. Pressione RETURN para selecionar o item destacado.

Como Iniciar uma Nova Rotina


A opo Inicia Nova Rotina remove a rotina atualmente na memria do computador, para que voc possa definir, carregar ou executar uma rotina diferente. Se existir uma rotina carregada na memria, voc vai precisar usar esta opo antes de definir uma nova rotina. Quando voc seleciona Inicia Nova Rotina, o InfoEase mostra a mensagem:

Nova rotina a definir

Rotinas DQL

2-5

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

no canto superior direito da tela. O InfoEase remove a rotina que est atualmente na memria (se existir alguma), e a opo Define Formato data-entry ficar em destaque. Voc pode selecionar esta opo para definir um Formato data-entry, ou escolher qualquer outra opo desejada. NOTA: Voc precisa selecionar Inicia Nova Rotina antes de executar qualquer rotina que contenha o comando .call.

O Que um Formato data-entry?


O Formato data-entry um tipo especial de Formato que permite que voc digite informaes variveis a cada vez que voc executa uma determinada rotina. O Formato data-entry parte da rotina, assim como a Query e a forma do relatrio. No entanto, voc pode usar os comandos DQL input e record entry, para permitir vrios Formatos de entrada de dados em uma rotina. As informaes digitadas no Formato data-entry so frequentemente usadas para selecionar os registros processados pela Query. Por exemplo, se voc tm uma Query que imprime os clientes de todos os 26 estados, voc pode especificar o nome de apenas um estado no Formato data-entry, e limitar o relatrio resultante aos clientes do estado especificado. A Figura 2-2 mostra um Formato data-entry que permite especificar um estado particular sempre que a rotina executada.

Figura 2-2 Quando a rotina executada, ela usa as informaes digitadas no campo ESTADO do Formato data-entry, e imprime os clientes para apenas o estado especificado.

2-6

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Como Mostrar o Formato data-entry


Para criar o Formato data-entry, selecione Define Formato data-entry (a opo 3) no Menu DQL. O InfoEase pergunta ento: Aps executar a rotina, mostrar o Formato data-entry de novo? Responda no se voc quiser executar a rotina apenas uma vez (em vez de vrias vezes usando informaes diferentes a cada execuo). Se voc responder no, quando voc executar a rotina, o Formato data-entry aparecer na tela uma vez, ao incio da rotina, para que voc possa digitar as informaes necessrias. Quando a rotina terminar, o InfoEase retorna ao Menu DQL. Responda sim se voc quiser executar a rotina mais de uma vez, antes de executar qualquer outra tarefa. Se voc responder sim, cada vez que a rotina executada, o Formato data-entry reaparece, e voc pode digitar informaes diferentes a serem usadas pela Query quantas vezes desejar. Quando voc terminar de gerar a rotina, pressione ESC quando o Formato data-entry reaparecer, para retornar ao Menu DQL. O Formato data-entry usado para digitar dados no incio de uma rotina. Alm disto, o comando DQL input pode ser usado para digitar dados em qualquer ponto durante uma rotina. Para maiores informaes sobre o comando input, veja a Lexicografia DQL.

NOTA:

Criando o Formato Data-entry


No importando como voc escolheu mostrar o Formato data-entry, o InfoEase sempre mostra uma tela vazia, na qual voc vai definir o Formato data-entry. Em geral, voc define o Formato data-entry da mesma maneira que voc faz para definir um Formato de Entrada de Registros. No entanto, como as informaes digitadas no Formato data-entry no so armazenadas no banco de dados (como na Entrada de Registros), o Formato data-entry no pode conter: Campos Indexados Campos nicos Campos Sequenciados Campos Virtuais Campos com Opes de Nveis de Segurana SubFormatos
2-7

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Em todos os outros aspectos, definir o Formato data-entry exatamente o mesmo que definir um Formato de Entrada de Registros. Voc digita o texto do Formato, e pressiona F10 CAMPO para definir os campos do Formato. Voc tambm pode usar F5 COPIA para criar um Formato data-entry atravs da cpia de um Formato de Entrada de Registros existente, ou para copiar campos especficos do Formato Dicionrio. Veja o Volume 2, Captulo 2, Definio de Formatos e Relaes, para maiores informaes sobre como definir um Formato.

Usando o Formato data-entry


Quando voc executa uma rotina que possui um Formato data-entry, os valores que voc digita no Formato data-entry so usados de acordo com os comandos da Query. Cada vez que a rotina executada, o InfoEase mostra o Formato data-entry, permitindo que voc digite dados, usando ento estes dados para processar a Query. Alm de selecionar os registros a serem processados pela Query, um Formato data-entry tambm pode ser usado para especificar: Dados a serem incluidos ou modificados em um ou mais Formatos Variveis usadas em clculos Dados usados em processamentos condicionais Dados a serem impressos no relatrio

Usando uma Relao para Especificar Valores do Formato data-entry


Se voc definir uma relao entre um Formato data-entry e outro Formato qualquer, voc poder usar a frmula lookup para transferir automaticamente informaes de um Formato do banco de dados para o Formato data-entry. Por exemplo, voc pode definir uma relao com um Formato que contenha o imposto sobre circulao de mercadorias e servios para cada estado. Ento, quando voc digitar o estado a ser processado, o imposto pode ser transferido para o Formato data-entry cada vez que a rotina for executada.

Especificando Valores do Formato data-entry numa Query


Numa Query, voc diz ao InfoEase para usar os valores de campos do Formato data-entry colocando a palavra chave data-entry antes do nome do campo. Por exemplo, o comando da Query: for CLIENTES with ESTADO = data-entry ESTADO ; list records
2-8 Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

diz ao InfoEase para imprimir apenas os clientes que moram no estado especificado no campo ESTADO do Formato data-entry.

Alternativas para Usar o Formato data-entry


O Formato data-entry s pode ser usado para digitar dados no incio da rotina. O InfoEase oferece dois outros mtodos de entrada de dados alm do Formato data-entry. O comando DQL record entry permite que sejam incluidos registros em um Formato de Entrada de Registros em qualquer ponto da rotina. Os registros so diretamente incluidos no banco de dados, no sendo processados pela Query. O comando DQL input tambm permite que voc use um Formato de Entrada de Registros para digitar informaes. Ele pode ser usado em qualquer ponto da rotina. O comando input fornece todas as facilidades da Entrada de Registros, e permite que a Query processe os registros antes dos mesmos serem incluidos no banco de dados. As diferenas entre os trs mtodos de entrada de dados so sumarizadas na tabela abaixo. Mtodo de Entrada de Dados data-entry record entry input Uso na Query Apenas no incio Em qualquer lugar Em qualquer lugar Facilidades da Entrada de Registros No Sim Sim Controle pela DQL Sim No Sim

Para maiores informaes sobre os comandos record entry e input, veja a Lexicografia DQL.

Gravando o Formato data-entry


Aps terminar a criao do Formato data-entry, pressione F2 GRAVA para anex-lo rotina. Quando voc pressiona F2 GRAVA, o Formato data-entry gravado no disco como parte da rotina. As informaes digitadas no Formato data-entry, no entanto, nunca so gravadas em disco; elas so apenas armazenadas na memria do computador. As informaes so apagadas sempre que voc inicia uma nova rotina, ou carrega outra rotina na memria.

Rotinas DQL

2-9

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Recuperando os Valores no Formato data-entry


Quando o Formato data-entry reaparecer aps a rotina ter sido executada, ele estar vazio. Pressione SHIFT-F5 para recuperar as informaes que acabaram de ser digitadas no Formato data-entry. Pressione SHIFT-F6 para recuperar apenas o valor no campo onde o cursor est.

Modificando o Formato Data-entry


Aps o Formato data-entry ter sido criado e gravado, a opo Define Formato data-entry do Menu DQL passa a se chamar Modif. Formato data-entry. Quando voc seleciona esta opo para ver ou alterar o Formato data-entry, o InfoEase pergunta primeiro:

Excluir o Formato data-entry?


Responda no para ver ou modificar o Formato data-entry Responda sim se voc quiser excluir o Formato data-entry existente, e/ou definir um novo Formato data-entry. O Formato data-entry excluido, e o Menu DQL continua na tela

Se voc responder no, o InfoEase vai perguntar:

Aps executar a rotina, mostrar o Formato data-entry de novo?


Responda sim ou no, dependendo de como voc planeja executar a rotina de novo, usando informaes diferentes a cada vez. Quando o Formato data-entry mostrado, voc pode modific-lo como se estivesse modificando um Formato de Entrada de Registros. Lembre-se, no entanto, que voc precisa tambm modificar a Query para refletir estas alteraes.

2-10

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

A DataEase Query Language (DQL)


A DataEase Query Language (DQL) um poderoso grupo de comandos que permite que voc faa perguntas, ou diga ao InfoEase como manipular as informaes armazenadas no banco de dados. Estas questes e conjuntos de instrues so chamadas Queries ou rotinas. Uma Query pode ser simples e direta (por exemplo, quantos dos nossos clientes moram em So Paulo?), ou podem ser muito mais complexas (quantas unidades de um determinado item de estoque foram vendidas em dezembro? qual foi o valor total destas vendas, e que porcentagem do total foi adquirido por clientes do Rio de Janeiro?). A resposta (freqentemente uma relao de itens que satisfazem todos os critrios da Query) chamada de relatrio. Mas o InfoEase pode fazer muito mais que responder simples questes! Um uso mais sofisticado das capacidades do Processamento Avanado DQL pode ser um conjunto de instrues que dizem ao InfoEase: Quando o usurio de nome Carol inicializar o banco de dados DIARIO aps as 5 da tarde, execute a rotina que envia as transaes do dia para vrios Formatos relacionados, imprima os pedidos correspondentes e gere uma relao de itens de estoque que precisam ser comprados.

Sada da DQL
A maioria das rotinas DQL geram uma sada. Por exemplo, quando voc executa uma rotina que contm um comando list records, o InfoEase processa a Query e gera uma sada - uma relao de registros selecionados pela Query. A sada pode ser mostrada na tela, impressa ou gravada num arquivo. Uma forma visvel de sada, especialmente quando impressa em papel, chamada de relatrio. O Captulo 5 deste volume fornece informaes detalhadas sobre como formatar a sada de um relatrio. Algumas rotinas geram uma sada que no visvel. Uma Query que modifica registros no banco de dados, por exemplo, pode ou no mostrar o resultado da modificao. Elas tambm so rotinas, mas no geram uma sada. Por exemplo, uma Query que exclui um grupo de registros no gera sada. A sada DQL que gravada num arquivo em disco pode ser convertida para uma das formas de exportao do InfoEase, para uso por outros programas, como o WordPerfect e o Lotus 1-2-3.

Rotinas DQL

2-11

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Modo Interativo
Quando voc seleciona Define Query, O InfoEase automaticamente entra no Modo Interativo. Neste modo, o InfoEase guia voc durante cada passo da criao da Query; ele imprime as respostas vlidas para cada mensagem, oferecendo apenas os comandos ou valores sintaticamente apropriados, eliminando a necessidade de digitao. No Modo Interativo, voc escolhe os Formatos apropriados, campos, comandos, funes e operadores para criar uma Query, a partir de sries de menus que aparecem na tela. A Figura 2-3 mostra um menu que aparece no Modo Interativo.

Figura 2-3

Trocando os Modos
Alm do Modo Interativo, o InfoEase oferece um Modo Edio, que permite a digitao direta dos comandos DQL sem a assistncia das mensagens e menus do Modo Interativo. Para passar do Modo Interativo para o Modo Edio, voc simplesmente precisa mover o cursor para a esquerda ou para o topo da tela. Para passar do Modo Edio para o Modo Interativo, pressione F1 INTERATIVO.

2-12

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Mensagens e Menus do Modo Interativo


Durante o processo de criar uma Query, o InfoEase mostra mensagens prximas ao topo da tela, que dizem que ao voc est tentando completar, como:

Especifique os itens a serem listados Selecione o nome do campo


0: NADA 1: NOME DO CLIENTE 2: ENDEREO 3: CIDADE 4: ESTADO 5: CEP F1MAIS

Abaixo das mensagens, o InfoEase mostra um menu numerado, com todas as respostas vlidas a esta mensagem: neste caso, ele mostra uma relao de todos os nomes de campo definidos no Formato (por exemplo, NOME DO CLIENTE, ENDEREO, CIDADE, etc.). Se existirem muitas opes para caberem numa linha, pressione F1 MAIS para ver o resto das opes, as quais aparecero numa janela direita da tela. Quando voc escolhe uma opo de um menu, ela automaticamente colocada na Query, na posio atual do cursor.

Como Ultrapassar Menus no Modo Interativo


Para cada mensagem, o InfoEase mostra uma relao numerada de respostas vlidas. Em muitos casos, a primeira opo 0: NADA. Se voc no quiser nenhum dos itens mostrados no menu, digite 0 para selecionar NADA. Alternativamente, voc pode pressionar TAB para ultrapassar o menu atual e acessar o prximo menu. Algumas mensagens pedem para que voc digite informaes (por exemplo, um texto ou um nmero), no lugar de selecionar um item de um menu. Para ultrapassar uma destas mensagens, sempre pressione TAB. Quando voc precisa digitar um valor numrico, 0 tratado como um nmero vlido (no lugar de 0: NADA). Por esta razo, ns recomendamos que voc use TAB (em vez de 0) sempre que for ultrapassar um menu.

Digitando Comandos DQL no Modo Interativo


Voc pode digitar letras, palavras e smbolos de pontuao no Modo Interativo, em vez de esperar por uma mensagem. Por exemplo, voc pode digitar um ponto-e-vrgula ou um ponto onde alguma pontuao necessria, em vez de pressionar TAB repetidas vezes at que o menu correspondente aparea.

Rotinas DQL

2-13

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Se voc digitar comandos da DQL ou smbolos antes da mensagem correspondente aparecer, o InfoEase imediatamente mostra a mensagem apropriada. Quando estiver digitando comandos no Modo Interativo, nunca digite nmeros, a no ser que seja instruido para tal; o InfoEase trata os nmeros como uma seleo de um menu, no Modo Interativo. NOTA: Quando voc digita adiante das mensagens, voc precisa digitar as palavras completas e smbolos, e inserir os espaos necessrios por voc mesmo. O InfoEase no completa uma palavra para voc, mesmo que ela tenha uma pronncia nica.

Nveis Alto e Baixo


O Modo Interativo dividido em dois nveis: um nvel baixo, para as Queries bsicas, e um nvel alto que permite a execuo de transaes sofisticadas, e ligar entre si vrias rotinas de gerenciamento do banco de dados. Pressione F9 NVEL para passar de um nvel para outro. O nvel Baixo permite a recuperao de informaes do banco de dados, mas no permite a incluso, excluso ou modificao de registros. O nvel Baixo tambm permite o uso do Formato data-entry, variveis do sistema (como current date, current page number, etc.) e os operadores relacionais da DQL. Os operadores relacionais da DQL permitem a recuperao de informaes de Formatos relacionados ao Formato primrio. O nvel Alto libera o acesso a toda a potncia da InfoEase Query Language, incluindo operaes matemticas, 58 funes pr-definidas, alm de comandos procedurais e no procedurais que permitem a criao de relatrios complexos e o processamento de transaes. No nvel Alto, o InfoEase pode automaticamente incluir, excluir e modificar registros, enviar informaes para vrios Formatos no banco de dados, alm de manipular o processamento de pontos-de-venda, contas a pagar e receber, estoques, manuteno de registros, e outras necessidades de processamento automatizado de transaes. Quando voc seleciona Define Query, no menu DQL, o InfoEase entra automaticamente no modo Interativo, nvel Baixo, e mostra o comando DQL for no topo da tela. Para comear uma Query no modo Interativo, nvel Alto, siga estes passos: 1. 2. 3. 4. Pressione HOME para mover o cursor para o canto superior esquerdo da tela. Pressione F7 DELETA LINHA para excluir o comando for. Pressione F9 NVEL para passar para o nvel Alto. Pressione F1 INTERATIVO, para entrar no modo Interativo.

2-14

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Modo Edio
Quando voc seleciona Modif. Query no Menu DQL, o InfoEase automaticamente entra no Modo Edio. No Modo Edio, voc digita a Query diretamente na tela vazia. O InfoEase no o auxilia com os menus. O Modo Edio pode ser muito mais rpido que o Modo Interativo, quando voc est familiarizado com a DQL, e sabe exatamente o que quer. O Modo Edio pode ser usado para criar uma Query ou modificar uma Query j existente. No Modo Edio, voc pode mover o cursor livremente pela tela e digitar comandos DQL mais rapidamente que selecionar opes dos menus do Modo Interativo. Por esta razo, usurios mais avanados trabalharo principalmente no Modo Edio, passando para o Modo Interativo para selecionar rapidamente Formatos e nomes de campos. Para criar uma Query no Modo Edio, primeiro selecione Define Query no Menu DQL. Quando a primeira mensagem aparecer, mova o cursor para a esquerda. A mensagem vai desaparecer, e o InfoEase passa a operar no Modo Edio. Agora voc pode comear a digitar a Query na tela vazia. Se voc no conseguir lembrar da sintaxe correta do comando, pressione F1 INTERATIVO para passar para o Modo Interativo, e trazer as mensagens e menus de volta para ajud-lo. O Modo Edio tambm usado para corrigir erros, incluir comentrios, ou copiar blocos de texto. Se voc cometer um erro, ou quiser alterar uma Query no Modo Interativo, mova o cursor para trs ou para cima, para passar para o Modo Edio. No Modo Edio voc pode retornar, corrigir erros cometidos, incluir comentrios, alm de poder usar as teclas de funo F3 CORTA, F5 COPIA, F6 MONTA, F7 DEL LINHA e F8 INS LINHA, exatamente como na Definio de Formatos. Para retornar ao Modo Interativo, pressione F1 INTERATIVO, e as mensagens retornam imediatamente.

Erros de Sintaxe
O InfoEase ajuda voc a criar Queries, impedindo que voc as grave com erros de sintaxe. O InfoEase verifica a Query inteira, e posiciona o cursor sobre o primeiro erro de sintaxe que encontrar. Todos os erros de sintaxe precisam ser corrigidos para que a Query possa ser gravada.

Modificando uma Query no Modo Edio


Aps definir uma Query, a opo 4 do Menu DQL troca seu nome para Modif. Query. Quando voc seleciona Modif. Query, o InfoEase comea no Modo Edio, quando mostra a Query na tela.

Rotinas DQL

2-15

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

No Modo Edio, voc pode fazer quaisquer alteraes que quiser, usando as teclas apropriadas para inserir, excluir ou alterar texto (incluindo as teclas de funo F3 CORTA, F5 COPIA, F6 MONTA, F7 DEL LINHA e F8 INS LINHA). Se voc necessitar de auxlio, mova o cursor para o local onde est o problema, e pressione F1 INTERATIVO para passar para o Modo Interativo. Quando voc terminar de modificar a Query, pressione F2 GRAVA para gravar a Query e retornar ao Menu DQL.

Usando Queries Existentes para Criar Novas Queries


O InfoEase permite que voc defina at 2000 rotinas por banco de dados. Quando sua relao de rotinas crescer, voc poder achar conveniente copiar toda ou parte de uma Query e us-la em outra Query. O InfoEase possui duas maneiras de fazer isto: Enquanto a primeira Query estiver sendo mostrada, use F5 COPIA para copiar toda ou parte dela, e saia desta rotina. Carregue ento a segunda rotina. Quando a segunda Query aparecer, use F6 MONTA para inserir o pedao copiado da primeira Query na segunda.

OU Selecione Grava Rotina, e grave a rotina existente sob um novo nome. Isto permite que voc mantenha a rotina original intacta, assim como usar a nova rotina como ponto de partida para a definio de uma nova Query.

Como Trocar os Modos


Para passar do Modo Interativo para o Modo Edio, simplesmente mova o cursor para a esquerda ou para cima. Quando voc passa do Modo Interativo para o Modo Edio, as mensagens de auxlio e menus deixam de ser mostrados. No Modo Edio, voc pode facilmente fazer correes ou digitar uma Query completa sem esperar que as opes corretas apaream nos menus. Para passar para o Modo Interativo, pressione F1 INTERATIVO. Quando voc passa do Modo Edio para o Modo Interativo, o InfoEase mostra o menu apropriado de acordo com o posicionamento do cursor na Query.

2-16

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Gravando uma Rotina na Memria


Aps ter criado uma Query, voc pode pressionar F2 GRAVA para gravar o que voc digitou at agora. As seguintes aes so executadas: 1. 2. 3. O InfoEase varre a Query, para ter certeza de que ela est correta. Se existir algum erro, o InfoEase retorna ao Modo Interativo, com o cursor posicionado no primeiro erro encontrado. Se no existirem erros, o InfoEase retorna ao Menu DQL, se o nvel da Query for Baixo. Se o nvel for Alto, o InfoEase posiciona o cursor no final do seu trabalho, pronto para comandos adicionais.

Quando voc pressiona F2 GRAVA, o InfoEase grava a Query na memria; ele no cria um arquivo em disco. A Query permanece na memria de seu computador at que voc inicie uma nova rotina, carregue uma rotina existente, exclua a rotina ou saia do Menu DQL. Para gravar a Query no disco, use a opo Grava Rotina, como explicado na prxima pgina.

Varredura Automtica da Sintaxe


Se voc estiver no Modo Interativo, o InfoEase automaticamente varrer a Query procurando erros, e retornar ao Menu DQL quando voc responder a ltima questo. No nvel Baixo, Modo Interativo, quando o InfoEase mostrar:

Mais itens a serem listados?


se voc pressionar TAB (ou selecionar NADA), o InfoEase automaticamente varrer a Query. No nvel Alto, Modo Interativo, quando o InfoEase mostrar:

Selecione um comando da rotina de processamento


se voc pressionar TAB (ou selecionar NADA), o InfoEase automaticamente varrer a Query.

Rotinas DQL

2-17

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Gravando uma Rotina no Disco


Para gravar permanentemente a Query no disco, selecione Grava Rotina (a opo 7) no Menu DQL. O InfoEase pergunta:

Digite o nome da rotina:


O nome da rotina pode ter at 20 caracteres. Ele pode ser qualquer nome que voc quiser, contanto que no seja o mesmo de algum Formato ou rotina j definido no banco de dados. Aps especificar o nome e pressionar RETURN, o InfoEase grava a rotina no disco. Quando voc seleciona Grava Rotina, e a rotina j foi gravada anteriormente, o InfoEase pergunta:

Deseja gravar a rotina sob outro nome?


Se voc responder sim, o InfoEase pergunta:

Digite o nome da rotina:


Aps voc digitar o novo nome da rotina, a rotina modificada gravada sob este nome. O InfoEase tambm retm a rotina original (no modificada) sob o nome antigo. Se voc responder no, o InfoEase grava a rotina sob o nome original. A rotina original perdida. NOTA: Quando estiver usando o InfoEase sob uma rede local, se voc tentar gravar uma rotina enquanto outro usurio estiver vendo ou executanto a mesma rotina, o InfoEase vai mostrar uma mensagem de conflito de recursos. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre os conflitos de recursos e operao em ambiente multi-usurio.

2-18

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Carregando uma Rotina na Memria


Para ver ou modificar uma rotina definida anteriormente, voc precisa carreg-la na memria. Para carregar uma rotina, selecione Carrega Rotina (a opo 8) no Menu DQL. O InfoEase pergunta:

Selecione a rotina que voc quer carregar:


O InfoEase mostra uma relao de todas as rotinas e relatrios rpidos existentes no banco de dados numa janela direita da tela. Voc pode carregar uma rotina ou um relatrio rpido a partir desta opo. O InfoEase mostra o Menu DQL. As opes do Menu que comeavam com a palavra Define trocaram seus nomes para Modif., em cada parte definida anteriormente (isto , Formato data-entry, Query, Forma, Estilo de Impresso). Aps carregar a rotina, voc pode escolher qualquer uma das opes do Menu DQL para modificar a rotina, inclusive Modif. Formato data-entry, Modif. Query, Modif. Forma e Modif. Estilo de Impresso. Se voc carregar um relatrio rpido do Menu DQL, o InfoEase pergunta:

Deseja converter o Relatrio Rpido numa Rotina?


Responda sim para converter o relatrio rpido numa rotina DQL. Se voc responder no, o InfoEase sai do Processamento Avanado DQL, e mostra o Menu de Relatrios Rpidos.

Convertendo um Relatrio Rpido numa Rotina DQL


Muitas caractersticas poderosas da DQL, incluindo funes ou operadores de estatsticas relacionais, podem ser incluidas num relatrio rpido, atravs da tela de Definio de Campos do Relatrio, para aumentar as capacidades de sada. Alm disto, o InfoEase permite que voc converta um relatrio rpido numa rotina DQL com o pressionar de uma tecla. Uma vez convertido o relatrio, voc pode usar a rotina resultante como qualquer outra rotina criada pela opo Define Query do Menu DQL. Para converter um relatrio rpido em uma rotina DQL, ou: Selecione Carrega Rotina (a opo 8) do Menu DQL, e especifique o nome do relatrio rpido. Com o relatrio rpido na memria, pressione a tecla F9 DQL.

Rotinas DQL

2-19

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Usando qualquer um dos mtodos acima, o InfoEase far a seguinte pergunta:

Converter este Relatrio Rpido numa Rotina DQL?


O Menu DQL aparece, e a definio do relatrio rpido convertida para uma rotina DQL. A Query pode ento ser editada atravs da opo Modif. Query do Menu DQL. NOTA: Quando voc grava um relatrio rpido convertido para uma rotina DQL, o relatrio rpido apagado. Para reter ambas as verses, grave a rotina DQL sob outro nome. Uma vez convertido o relatrio rpido, voc no poder reverter o processo para retornar ao relatrio rpido. Veja o Volume 1, Captulo 3, para maiores informaes.

Removendo uma Rotina


Para remover permanentemente uma rotina do banco de dados, selecione primeiro Exclui Rotina (a opo 9) no Menu DQL, e selecione o nome desejado, na janela direita da tela. O InfoEase pergunta:

Selecione a rotina que voc quer excluir:


Quando voc seleciona uma rotina a ser excluida, o InfoEase pergunta:

Voc deseja mesmo excluir (s/n)?


Se voc responder no, o processo cancelado. Se voc responder sim, a rotina permanentemente removida do banco de dados, e no poder mais ser recuperada.

Imprimindo a Definio de uma Rotina


A Definio da Rotina um sumrio impresso da rotina, similar ao sumrio criado ao pressionar SHIFT-F9 IMPRIME na Definio de Formatos. A definio composta dos seguintes itens: 1. 2. 3. 4. Uma cpia da Query Uma cpia do Formato data-entry, se um foi definido Uma cpia da Forma do relatrio Uma descrio de cada campo incluido na forma. A descrio do campo inclui o nome do campo, tipo, comprimento e uma resposta sim ou no dependendo se os espaos iniciais ou finais do campo devem ser removidos quando a sada for gerada
Rotinas DQL

2-20

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Para imprimir a definio da rotina atualmente na memria, selecione Imprime Definio da Rotina (a opo 10) no Menu DQL. Quando voc selecionar esta opo, o InfoEase envia a sada para a impressora padro. Ao final, o InfoEase imprime a quantidade de memria necessria para armazenar a definio da rotina. NOTA: Esta opo no pode ser usada para mostrar a definio na tela. Se voc selecionar esta opo, e no existir impressora conectada, o InfoEase mostra uma mensagem de erro e cancela a impresso.

Definio da Rotina - Exemplo


QUERY for CLIENTES ; list records
PRIMEIRO NOME ; ULTIMO NOME ; ENDEREO ; CIDADE ; ESTADO ; CEP .

end FORMA
1 10 20 30 40 50 60 70 80 +++++-+-+-++ ============================== .items Nome: ____________________ ______________________________ Endereo: ______________________________ _______________ __ _____ .end ===================================== +- ++++-+-+-+-+ 1 10 20 30 40 50 60 70 80

DESCRIO DOS CAMPOS


No. Nome Tipo 1 PRIMEIRO NOME Texto 2 ULTIMO NOME Texto 3 ENDEREO Texto 4 CIDADE Texto 5 ESTADO Texto 6 CEP String Numrica Memria Necessria: Definio da rotina: 992 Comprimento 20 30 30 15 2 5 Remover Espaos no no no no no no

Figura 2-4
Rotinas DQL 2-21

M A N U A L

D E

R E F E R N C I A

I N F O E A S E

Esta pgina foi mantida vazia intencionalmente

2-22

Rotinas DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 3 DQL DE NVEL BAIXO


demonstrar como criar uma Query no nvel Baixo, Modo Interativo, ns Para definimos dois Formatos, chamados CLIENTES e PEDIDOS, como mostrados na Figura 3-1. Os Formatos compartilham uma relao pr-definida, baseada no campo de ligao: CLIENTE # . Ambos os Formatos armazenam a mesma informao neste campo: um nmero nico para identificar o cliente.

Figura 3-1 O Formato CLIENTES possui uma relao do tipo um-para-vrios com o Formato PEDIDOS. Isto significa que para cada registro em CLIENTES, podem existir vrios registros relacionados em PEDIDOS (todos os pedidos que tm o mesmo CLIENTE #). O Formato PEDIDOS possui uma relao do tipo vrios-para-um com o Formato CLIENTES. Isto significa que podem existir vrios registros em PEDIDOS relacionados com apenas um registro em CLIENTES.

Query de Nvel Baixo - Exemplo

3-1

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O PROPSITO DA QUERY: UM RELATRIO


Neste exemplo, ns iremos gerar um relatrio que mostra: Os nomes dos clientes arranjados em ordem alfabtica A data da aquisio mais recente deste cliente A quantia que cada cliente nos deve

Os nomes dos clientes e o balano final esto armazenados no Formato CLIENTES; a data de cada aquisio est armazenada no Formato PEDIDOS. Para gerar o relatrio, ns precisamos criar uma Query e dizer para o DataEase combinar as informaes destes dois Formatos, mostrando a sada na tela. A Figura 3-2 uma amostra do tipo de sada que ns queremos (embora ela no esteja ordenada). Amostra de Sada do Relatrio =================================== CLIENTE DATA DA AQUISIO =================================== Jensen, Dave Gomez, Louis Fisher, Jay Cooper, Mary Davis, Pam Ivers, Clark Adams, Sam Baker, Fred Evans, Rick Hill, Brenda 30/12/87 20/12/87 10/12/87 24/12/87 22/12/87 18/12/87 15/12/87 27/12/87 31/12/87 19/12/87 BALANO FINAL 210,00 195,00 350,00 725,00 75,00 675,00 595,00 240,00 865,00 525,00

=================================== Figura 3-2 A Figura 3-2 representa o tipo de relatrio que ns queremos, mas ele inclui apenas os clientes que compraram alguma coisa em dezembro. No nosso relatrio, ns queremos saber a data da aquisio mais recente de cada cliente, no importando em que ms ela foi feita.

3-2

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

QUAIS REGISTROS SELECIONAR


Enquanto criamos a Query, ns tambm iremos incluir critrios de seleo para limitar o relatrio a apenas aqueles clientes que adquiriram de ns mais de $500. Numa Query, o critrio de seleo diz ao DataEase quais registros selecionar para o processamento. Ns queremos que o DataEase selecione apenas os registros do Formato CLIENTES que tenham um valor maior que 500 no campo BALANO FINAL. Na criao de qualquer Query, ns precisamos indicar para o DataEase pelo menos trs coisas: Que Formato (ou Formatos) contm os dados a serem utilizados Quais registros processar em cada Formato Que ao executar sobre os registros selecionados (neste exemplo, ns queremos imprimir as informaes destes registros em nosso relatrio).

CRIANDO A QUERY
Para comear a criar a Query para o relatrio BALANO ATUAL, Selecione Define Query (a opo 4) no Menu DQL. O DataEase passa para o Modo Interativo, e mostra a palavra for no lado esquerdo superior da tela. A palavra for um comando DQL que sempre a primeira palavra numa Query de Nvel Baixo. O comando for diz ao DataEase de qual Formato recolher informaes para o relatrio. Se as informaes forem colhidas de mais de um relatrio, o primeiro Formato especificado na Query chamado Formato primrio, e os outros Formatos so chamados de Formatos secundrios. O comando for diz ao DataEase para selecionar registros em um Formato, e executar todos os comandos especificados com cada um destes registros. Aps todos os comandos terem sido executados com o primeiro registro, o prximo registro lido, e todos os comandos so executados novamente. Isto continua at que todos os registros selecionados tenham sido processados. Agora, vamos comear a criar a Query. Na tela, a Linha do Prompt indica:

Selecione o nome do Formato


A Linha do Prompt mostra os Formatos disponveis:
1:Sistema 2:CLIENTES 3:PEDIDOS 4:ESTOQUES F1MAIS

Query de Nvel Baixo - Exemplo

3-3

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOTA:

Estes so os nicos Formatos usados neste exemplo de nvel Baixo. As opes do menu que aparecem neste primeiro exemplo so vlidos apenas se voc estiver definindo uma Query no nvel Baixo. No nvel Alto, existem mensagens e comandos adicionais.

O Formato que voc selecionar neste primeiro menu ser o Formato primrio da Query. O Formato primrio deve ser o Formato que possui as informaes chave que voc quer ver ou manipular. Voc tambm pode acessar dados em Formatos que esto relacionados com o Formato primrio. Falaremos sobre isto mais frente. O Formato primrio para esta Query o Formato que contm os nomes dos clientes, portanto selecione CLIENTES. O DataEase coloca o nome do Formato aps o comando for. A Query agora :

for CLIENTES
A seguir, o DataEase pergunta:

Algum critrio de seleo de registros?


e oferece duas opes:

0:NADA 1:with
O DataEase est perguntando se voc quer usar todos os registros do Formato primrio, ou usar um determinado critrio para selecionar alguns registros. Ns queremos apenas ver alguns dos registros - os registros dos clientes que tenham um balano final maior que $500. Voc diz ao DataEase que voc quer incluir critrios de seleo inserindo a palavra chave with na Query. Selecione with para indicar que voc quer selecionar registros do Formato CLIENTES. A Query agora :

for CLIENTES with


O DataEase mostra outra mensagem:

Selecione o nome do campo


0:NADA 1:NOME DO CLIENTE 2:ENDEREO 3:CIDADE 4:ESTADO 5:CEP F1MAIS

3-4

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Agora, o DataEase est perguntando pelo nome do campo no qual o critrio de seleo est baseado. Ns queremos que o DataEase selecione apenas os clientes que compraram mais de $500. Na DQL, este critrio especificado pelo seguinte comando: BALANO FINAL > 500 Para inserir este critrio de seleo na Query, pressione primeiro F1 MAIS para ver o resto dos campos do Formato CLIENTES. Agora, selecione BALANO FINAL. A Query agora :

for CLIENTES with BALANO FINAL


O DataEase agora mostra:

Selecione um smbolo de comparao, ou not 1:= 2:> 3:< 4<= 5:>= 6:between 7:not
O DataEase agora est pedindo para especificar exatamente qual critrio de seleo ns queremos usar para selecionar registros. Como ns queremos apenas registros de clientes que possuem um balano final maior que $500, selecione > (o smbolo maior que). A Query agora :

for CLIENTES with BALANO FINAL >


O DataEase mostra outra mensagem:

Especifique um valor de comparao Selecione o nome do campo


Ns no queremos comparar o balano final com o valor de um campo. Ns queremos compar-lo com um valor numrico (500). Pressione TAB (ou 0:NADA) trs vezes para avanar as trs prximas mensagens, at que esta mensagem aparea:

Especifique um valor constante Digite uma string numrica sem pontuao. Ignore com TAB.

Query de Nvel Baixo - Exemplo

3-5

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Agora, o DataEase est perguntando pelo final do critrio de seleo, comparando o balano final com um valor especificado. Ns queremos ver uma relao dos clientes com um balano final maior que $500, portanto, digite 500 e pressione a barra de espao. A Query agora :

for CLIENTES with BALANO FINAL > 500


A seguir, o DataEase pergunta se voc quer especificar algum critrio de seleo adicional:

Mais algum critrio? 0:NADA 1:and 2:or


Para especificar mais critrios de seleo (como apenas aqueles clientes que adquiriram mercadorias no ms passado), ns podemos selecionar and, e seguir os mesmos procedimentos, para especificar os critrios posteriores. No entanto, como ns no queremos especificar outros critrios, pressione TAB (ou selecione 0:NADA). O DataEase mostra uma mensagem diferente:

Especifique os itens a serem listados Selecione o nome do campo 0:NADA 1:NOME DO CLIENTE 2:ENDEREO 3:CIDADE 4:ESTADO F1MAIS
Abaixo do menu, a Query :

for CLIENTES with BALANO FINAL > 500 ; list records


Note que quando voc selecionar NADA, o DataEase automaticamente inclui um ponto-e-vrgula (;) aps o valor de BALANO FINAL, e insere a frase list records na linha seguinte. O comando list records a nica opo de processamento disponvel na Query de nvel Baixo. Voc no pode incluir, excluir ou modificar registros numa Query de nvel Baixo.

3-6

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando list records diz ao DataEase que ns estamos prontos para imprimir a sada do relatrio. Como ns queremos uma relao em ordem alfabtica dos clientes, o primeiro item que ns queremos na sada do relatrio o campo NOME DO CLIENTE. Selecione NOME DO CLIENTE e pressione RETURN. O DataEase insere o nome de campo NOME DO CLIENTE, na linha seguinte a list records.

for CLIENTES with BALANO FINAL > 500 ; list records


NOME DO CLIENTE

Agora, o DataEase mostra outra mensagem:

Especifique os itens a serem listados. Selecionar os registros em grupos ou numa ordem especfica?
0:NADA 1:in order 2:in reverse 3:in groups 4:in groups with group-totals

O DataEase est perguntando em que ordem imprimir os nomes dos clientes. Se ns escolhermos NADA, o DataEase imprime os clientes na ordem em que os registros foram incluidos ao banco de dados. Se ns escolhermos uma das outras opes, o DataEase imprime os registros de acordo com a opo escolhida (explicada abaixo); in order ordena os registros em ordem alfabtica ascendente (colocando Ado frente de Carlos). in reverse ordena os registros em ordem alfabtica descendente (colocando Washington antes de Luiz). in groups ordena os registros em ordem alfabtica ascendente com grupos que possuem o mesmo valor em um campo especificado (por exemplo, todos os presidentes americanos do Partido Democrata podem ser impressos juntos, como um grupo, com seus nomes em ordem alfabtica, seguidos dos presidentes do Partido Republicano). in groups with group-totals ordena os registros em ordem alfabtica ascendente e permite a gerao de estatsticas e subtotais para cada grupo, como o total de presidentes dos Partidos Democrtico e Republicano.

Para nosso relatrio alfabtico, selecione in order.

Query de Nvel Baixo - Exemplo

3-7

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A Query agora l:

for CLIENTES with BALANO FINAL > 500 ; list records


NOME DO CLIENTE

in order

Embora neste exemplo ns necessitemos apenas ordenar os nomes dos clientes, os operadores de ordenao podem ser combinados. Se, por exemplo, ns quisermos agrupar os clientes por estado e tambm ordenar seus nomes, ns usariamos:
ESTADO

in groups ; NOME DO CLIENTE in order ;

Quando combinar operadores de ordenao em uma Query, itens ordenados in groups so impressos antes dos itens ordenados in order. A Figura 3-3 mostra uma poro de duas Queries separadas; os clientes in order por Nome na Query 1 e a ordenao alfabtica combinada com agrupamento na Query 2. Query 1 NOME DO CLIENTE in order ; Query 2 ESTADO in groups ; NOME DO CLIENTE in order ; Sadas dos Relatrios ========= Adams, Sam Baker, Fred Cooper, Mary Davis, Pam Evans, Dick Fisher, Jay Gomez, Louis Hill, Brenda Ivers, Clark Jensen, Dave ========= ========== Alabama Adams, Sam Ivers, Clark Alaska Cooper, Mary Jensen, dave Arizona Baker, Fred Evans, Rick Fisher, Jay Gomez, Louis ========== Figura 3-3

3-8

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Retornando agora para nosso exemplo, a Query l:

for CLIENTES with BALANO FINAL > 500 ; list records NOME DO CLIENTE in order
O DataEase pergunta:

Mais itens a serem listados?


e oferece duas opes:

0:NADA 1:;
Se voc selecionar NADA, o DataEase automaticamente insere um ponto final aps o comando in order, e varre a Query. Se nenhum erro for detectado, a Query gravada na memria e voc retorna para o Menu DQL. Se a sua Query ainda no estiver terminada selecione ; (ponto-e-vrgula). Um ponto-e-vrgula inserido aps o comando in order, e voc continua a imprimir mais itens. Por enquanto, selecione o ponto-e-vrgula; o cursor se move para a prxima linha e ns vemos novamente a mensagem:

Especifique os itens a serem listados Selecione o nome do campo


O DataEase agora est perguntando se ns queremos imprimir algum outro item no relatrio. Ns queremos imprimir o pedido mais recente de cada cliente, mas esta informao no aparece no menu porque ela no est no Formato CLIENTES (ela est no Formato PEDIDOS). No entanto, por causa do Formato PEDIDOS estar relacionado com o Formato primrio CLIENTES, ns poderemos acessar qualquer informao necessria do Formato PEDIDOS. Para obter a informao da data do pedido, ns temos que dizer ao DataEase para usar o Formato PEDIDOS. Portanto, em vez de selecionar um dos campos mostrados, pressione TAB duas vezes para passar pelos prximos menus. O DataEase gera uma mensagem diferente:

Selecione um operador relacional

Query de Nvel Baixo - Exemplo

3-9

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Abaixo desta mensagem, o DataEase mostra um menu com sete operadores.


0:NADA 1:all 2:any 3:count of 4:highest of 5:lowest of 6:sum of F1MAIS

Estes operadores relacionais permitem que voc recupere informaes de um Formato relacionado ao Formato primrio (similar a pressionar F10 MULTI quando voc define itens da lista em um Relatrio Rpido). Cada opo completamente explicada na lexicografia DQL. A informao que ns queremos recuperar a data do pedido mais recente para cada registro selecionado no Formato CLIENTES. Como o DataEase trata datas como uma srie de nmeros progressivos, a data mais recente o maior nmero na sequncia de valores DATA. Portanto, para dizer para o DataEase encontrar o pedido de data mais recente, selecione o operador relacional highest of. A Query agora :

for CLIENTES with BALANO FINAL > 500 ; list records NOME DO CLIENTE in order ; highest of
Isto diz ao DataEase: Leia todos os registros do Formato relacionado (o qual ns vamos especificar ainda), e retorne o maior valor do campo (o qual ns tambm ainda vamos especificar) entre estes registros. As prximas mensagens vo nos pedir para especificarmos o nome do Formato relacionado e o nome do campo o qual ns queremos o maior valor (a data mais recente) relatada. Primeiro, o DataEase nos pede para especificarmos o Formato relacionado:

Especifique os itens a serem listados Criar uma relao ad-hoc?


e oferece um menu com os nomes dos Formatos relacionados neste banco de dados:

0:NADA 1:PEDIDOS
A informao que ns queremos est no Formato PEDIDOS, portanto selecione PEDIDOS. O nome do Formato adicionado Query:

3-10

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

for CLIENTES with BALANO FINAL > 500 ; list records NOME DO CLIENTE in order ; highest of PEDIDOS
A seguir, o DataEase pergunta:

Especifique os itens a serem listados Especifique um critrio de relao? 0:NADA 1:with


O DataEase est agora perguntando se ns queremos especificar critrios de seleo adicionais para determinar quais registros selecionar no Formato relacionado. Ns queremos que o DataEase leia todos os registros relacionados de PEDIDOS, portanto selecione NADA, ou pressione TAB. O DataEase mostra:

Especifique os itens a serem listados Especifique um critrio de relao Selecione o nome do campo
0:NADA 1:PEDIDO # 2:DATA 3:CLIENTE # 4:ITEM # F1MAIS

Agora, o DataEase est pedindo para ns especificarmos em qual campo procurar o maior valor. Selecione DATA. O nome do campo adicionado Query, a qual agora :

for CLIENTES with BALANO FINAL > 500 ; list records NOME DO CLIENTE in order ; highest of PEDIDOS DATA
O DataEase agora pergunta se ns queremos os registros ordenados pelos valores do campo DATA:

Selecionar os registros em grupos ou numa ordem especfica?

Query de Nvel Baixo - Exemplo

3-11

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Ns queremos imprimir a data mais recente do pedido, no ordenar os registros em ordem cronolgica, portanto, pressione TAB para passar por este menu. Continue pressionando TAB at que o DataEase faa esta pergunta:

Mais itens a serem listados?


e mostrar duas opes:

0:NADA 1:;
Ns queremos mais um item: o balano final devedor por cada cliente, portanto selecione ; (o ponto-e-vrgula). Como ns j passamos pelo Formato PEDIDOS, a prxima questo se refere ao Formato CLIENTES:

Selecione o nome do campo


0:NADA 1:NOME DO CLIENTE 2:ENDEREO 3:CIDADE 4:ESTADO 5:CEP F1MAIS

Para incluir as informaes sobre o balano final no relatrio, pressione F1 MAIS, e selecione BALANO FINAL. Aps isto, pressione TAB em resposta a cada mensagem, at que a seguinte mensagem aparea:

Mais itens a serem listados?


Pressione TAB novamente, e perceba o que acontece. Numa Query Interativa de nvel Baixo, quando voc indica que no existem mais itens a serem listados, o DataEase sabe que a Query est completa. A Query final :

for CLIENTES with BALANO FINAL > 500 ; list records NOME DO CLIENTE in order ; highest of PEDIDOS DATA ; BALANO FINAL .
Aps uma varredura automtica de sintaxe, o DataEase insere um ponto final para terminar a Query; ela ento grava a Query na memria, e retorna para o Menu DQL.

3-12

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

No Menu DQL, a opo Define Query trocou seu nome para Modif. Query. Voc agora pode definir a forma de sada para este relatrio (a opo 5) ou executar a rotina imediatamente, usando a forma de sada padro. Selecione Gera Rotina. O DataEase mostra a sada na tela na forma colunar. Aps editar os cabealhos das colunas (como explicado no Captulo 5), a sada na forma de relatrio padro estar parecida com o mostrado abaixo, na Figura 3-4: Sada do Relatrio =================================== CLIENTE LTIMO PEDIDO EM =================================== Adams, Sam 15/12/92 Cooper, Mary 24/12/91 Evans, Rick 31/12/90 Hill, Brenda 19/12/93 Ivers, Clark 18/12/91 =================================== Figura 3-4 Como voc pode ver, os clientes selecionados (aqueles que devem mais de $500) esto impressos em ordem alfabtica, com a data do seu ltimo pedido e o saldo que eles devem, impressos numa forma colunar. NOTA: O DataEase pode manter apenas um relatrio na memria, em um dado momento. Se voc quiser usar este relatrio, antes de comear outro relatrio selecione Grava Rotina (a opo 7) no Menu DQL. BALANO FINAL 595,00 725,00 865,00 525,00 675,00

Query de Nvel Baixo - Exemplo

3-13

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta pgina foi mantida vazia intencionalmente

3-14

Query de Nvel Baixo - Exemplo

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 4 Query de Nvel Alto


Queries de nvel Baixo permitem que voc recupere informaes de um ou Enquanto mais Formatos de um banco de dados, o nvel Alto permite que voc acesse toda a potncia da DataEase Query Language, incluindo variveis globais e temporrias, 35 comandos procedurais e 58 funes matemticas e de manipulao de texto. No nvel Alto, o DataEase pode criar dois tipos de rotina: Uma Rotina de Processamento pode incluir, excluir, imprimir e modificar registros; criando a sada em tela, disco ou impressora. Uma Rotina de Controle no pode acessar registros ou criar sadas, mas pode interligar vrias rotinas de processamento e/ou outras rotinas de controle, num processo de encadeamento automtico. Alm disto, uma Rotina de Controle pode executar vrias das funes mostradas nos menus do DataEase, como Entrada de Registros, Gerar Rotinas, Backup do Banco de Dados, Instalar uma Aplicao, etc.

OS COMANDOS DO NVEL ALTO


No nvel Alto existem um total de 35 comandos DQL disponveis (veja na prxima pgina). Estes comandos so divididos em trs grupos: NOTA: Comandos de Processamento (numerados de 1 a 9) podem ser usados numa rotina de processamento, mas no podem ser usados numa rotina de controle. Comandos Procedurais (numerados de 10 a 23) podem ser usados em qualquer tipo de rotina. Comandos de Controle (numerados de 24 a 35) podem ser usados numa rotina de controle, mas no podem ser usados numa rotina de processamento. No existe necessidade de memorizar estas restries. O DataEase proibe automaticamente o uso de comandos dependendo do tipo de rotina. No Modo Interativo, estes comandos no aparecem na relao de comandos disponveis.

Exemplo de Query de Nvel Alto

4-1

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta a relao de Comandos do Nvel Alto

0:NADA 1:list records 2:modify records 3:delete records 4:enter a record 5:for 6:lock 7:unlock 8:query selection 9:input 10:output 11:message 12:if 13:else 14:end 15:while 16:break 17:exit 18:case 19:value 20:others 21:define 22:assign 23:. 24:run procedure 25:call menu 26:call program 27:record entry 28:import 29:reorganize 30:db status 31:backup db 32:restore db 33:lock db 34:unlock db 35:install application

4-2

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Neste exemplo, vamos criar uma Query de nvel Alto que recupera dados de Formatos relacionados da mesma maneira que na Query de nvel Baixo anterior, mas tambm inclui registros, modifica registros existentes, e calcula novas informaes com base nos dados existentes. No nosso exemplo, a Correio Elegante Ltda - uma empresa especializada em vendas pelo correio - est desenvolvendo uma nica rotina de controle para automatizar todo o seu processo de processamento de pedidos, inclusive incluindo novos registros de clientes, manuteno dos registros de estoques, calculando descontos para clientes, e gerando pedidos, enviando etiquetas, mensagens de reposio de estoques, etc. Ns usaremos o conjunto de Formatos do banco de dados Correio Elegante.

Figura 4-1 Os Formatos CLIENTES, PEDIDOS, ITENS e ESTOQUE so Formatos padro, de um nico nvel. O Formato ENTRADA DE PEDIDOS um MultiFormato; os campos de 11 a 14 so atualmente uma viso do Formato ITENS. Os Formatos possuem relaes pr-definidas indicadas pelas linhas de conexo.

Exemplo de Query de Nvel Alto

4-3

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ROTINA 1: Enviar Pedidos


A rotina ENVIAR PEDIDOS envia informaes de pedidos do Formato ENTRADA DE PEDIDOS (o Formato primrio) para dois Formatos secundrios: as informaes dos clientes so enviadas para o Formato CLIENTES, e as informaes dos pedidos so enviadas para o Formato ESTOQUE.

Query para a Rotina Enviar Pedidos


A Query para a rotina ENVIAR PEDIDOS mostrada abaixo: for ENTRADA DE PEDIDOS with ENVIADO = no ; if CLIENTE # = BLANK then enter a record in CLIENTES copy all from ENTRADA DE PEDIDOS . end for ITENS modify records in ESTOQUE QTD DISPONIVEL := QTD DISPONIVEL ITENS QTD PEDIDA . end end

Explicao da Query
Agora, vamos examinar esta Query, comando por comando:

for ENTRADA DE PEDIDOS with ENVIADO = no ;


O Formato primrio para este relatrio o Formato ENTRADA DE PEDIDOS, pois ele contm os dados que ns queremos enviar para os outros Formatos. O Formato ENTRADA DE PEDIDOS contm um campo de tipo Sim ou No chamado ENVIADO que possui um valor no cada vez que um registro incluido. O valor deste campo alterado para sim quando um registro enviado pela rotina. Como ns queremos apenas enviar os registros que ainda no foram enviados, o critrio de seleo da segunda linha : ENVIADO = no ;

4-4

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A prxima linha da Query :

if CLIENTE # = BLANK then


As primeiras duas linhas da Query dizem ao DataEase quais registros selecionar do Formato ENTRADA DE PEDIDOS. A terceira linha diz ao DataEase especificamente quais registros enviar para o Formato CLIENTES. Como um cliente sempre possui um CLIENTE # na primeira vez que ele ou ela faz um pedido, se um registro de ENTRADA DE PEDIDOS no tiver um CLIENTE # (especificado pela palavra chave BLANK), ele deve ser um pedido de um cliente novo. Para cada novo cliente, ns queremos que o DataEase inclua um novo registro no Formato CLIENTES. Isto conhecido como uma ao condicional. As instrues que seguem o comando if so executadas apenas para os registros que satisfazem a condio especificada (apenas os registros que possuirem um valor BLANK no campo CLIENTE #). As prximas duas linhas da Query dizem ao DataEase o que fazer se o CLIENTE # estiver vazio.

enter a record in CLIENTES copy all from ENTRADA DE PEDIDOS .


A primeira linha direta. Ela diz ao DataEase para incluir um novo registro no Formato CLIENTES. A segunda linha diz ao DataEase que informaes colocar no novo registro de CLIENTES. Para um novo cliente, o operador digita as informaes manualmente no Formato ENTRADA DE PEDIDOS, quando um pedido recebido. Esta linha diz ao DataEase para copiar quais informaes para o Formato CLIENTES. O Formato CLIENTES automaticamente deriva um CLIENTE # para o novo registro, usando uma frmula de derivao de campo sequence from. O comando copy all from a ltima ao a ser executada nos registros selecionados do Formato primrio, portanto ele seguido de um ponto final. Alm disto, um comando end inserido para terminar o comando if. Esta parte da Query a seguinte: for ENTRADA DE PEDIDOS with ENVIADO = no ; if CLIENTE # = BLANK then enter a record in CLIENTES copy all from ENTRADA DE PEDIDOS . end
Exemplo de Query de Nvel Alto 4-5

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Isto completa a primeira metade da Query. Ela diz ao DataEase de qual Formato selecionar registros (ENTRADA DE PEDIDOS), que registros enviar (if CLIENTE # = BLANK), e em qual Formato enviar as informaes (CLIENTES). A segunda parte desta Query diz ao DataEase para modificar o Formato ESTOQUE, subtraindo os ITENS do campo de ESTOQUE chamado QTD
DISPONIVEL.

Em primeiro lugar, vamos verificar esta poro da Query, comando a comando.

for ITENS
Em primeiro lugar, note que esta linha contm um segundo comando for. Diferentemente da Query de nvel Baixo, uma Query de nvel Alto pode conter mais de um comando for. Este segundo comando for diz ao DataEase que ns queremos selecionar registros de outro Formato que no o Formato primrio. O Formato secundrio o qual queremos selecionar registros o ITENS. O Formato ITENS possui uma relao pr definida com o Formato ENTRADA DE PEDIDOS com base no campo PEDIDO #. Como no existe critrios de seleo especificados neste comando for, o DataEase vai selecionar todos os registros no Formato ITENS que esto relacionados com os registros processados na primeira parte da Query quando ele processar a segunda parte. A prxima linha da Query :

modify records in ESTOQUE


Esta linha tambm direta. Ela diz ao DataEase para usar estes registros de ITENS para modificar os registros do Formato ESTOQUE. As prximas duas linhas da Query so:
QTD DISPONIVEL := QTD DISPONIVEL

ITENS QDT PEDIDA .

Estas duas linhas dizem ao DataEase como modificar os registros no Formato ESTOQUE: Quando cada registro de ITENS for processado, subtraia o valor do campo QTD PEDIDA de cada registro de ITENS do campo QTD DISPONIVEL do registro em ESTOQUE correspondente ao item. Em outras palavras, reduza a QTD DISPONIVEL de ESTOQUE da quantidade pedida.

4-6

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A segunda parte da Query completada adicionando dois comandos end:

for ITENS modify records in ESTOQUE end end


QTD DISPONIVEL := QTD DISPONIVEL ITENS QTD PEDIDA .

Para satisfazer a sintaxe da DQL, a Query precisa conter um comando end para cada comando for. O comando end aps a primeira parte da Query completa o comando if, no o primeiro comando for. Portanto, dois comandos end so exigidos aps a parte modify records da Query, um para cada comando for. A Query completa para a rotina ENVIA PEDIDO : for ENTRADA DE PEDIDOS with ENVIADO = no ; if CLIENTE # = BLANK then enter a record in CLIENTES copy all from ENTRADA DE PEDIDOS . end for ITENS modify records in ESTOQUE
QTD DISPONIVEL := QTD DISPONIVEL -

ITENS QTD PEDIDA . end end Isto atinge os objetivos da rotina: A primeira parte da Query diz ao DataEase para selecionar registros de ENTRADA DE PEDIDOS que ainda no foram enviados e cadastrar as informaes de novos clientes no Formato CLIENTES A segunda parte da Query diz ao DataEase para selecionar os registros relacionados em ITENS e modificar o Formato ESTOQUE, subtraindo a quantidade pedida da quantidade disponvel

Exemplo de Query de Nvel Alto

4-7

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Gravando a Rotina
Se voc est criando esta rotina enquanto a l, antes de passar para a prxima seo, selecione Grava Rotina (a opo 7) no Menu DQL. O DataEase coloca a seguinte mensagem:

Digite o nome da rotina:


Em resposta, digite: ENVIA PEDIDO, e pressione RETURN. O DataEase grava a rotina em disco, e retorna para o Menu DQL. Aps gravada a rotina, voc pode execut-la mais tarde, segundo um dos mtodos abaixo: 1. Selecione Carrega Rotina (a opo 8) no Menu DQL, e selecione o nome da rotina da relao de rotinas que o DataEase apresenta. Finalmente, selecione Executa Rotina (a opo 1). Sem nenhuma rotina carregada na memria, selecione primeiro Executa Rotina e ento escolha ENVIA PEDIDO da relao de rotinas que o DataEase apresenta. Especifique o nome da rotina num comando run procedure, dentro de uma rotina de controle, ou num menu sob medida.

2.

3.

A seguir, ns vamos criar uma rotina que determina o desconto dado a cada cliente que faz um pedido do catlogo de Natal da Correio Elegante.

ROTINA 2: Calcula Desconto


A segunda rotina baseada no fato de a Correio Elegante garantir um desconto de Natal para cada cliente, dependendo do valor adquirido por ele durante o ano. O objetivo da rotina calcular o seguinte para cada cliente: O valor total dos pedidos desde o incio do ano O valor total dos pedidos do cliente no catlogo de Natal O total dos descontos de cada pedido do catlogo de Natal de cada cliente

Quando cada valor for calculado, usaremos uma varivel (expresso que representa um valor que varia) para armazenar o resultado do clculo. Isto permite o uso de valores quantas vezes desejarmos, sem repetir as frmulas usadas para deriv-los.

4-8

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A Query para a rotina CALCULA DESCONTO precisa dizer ao DataEase para fazer o seguinte: 1. Criar trs variveis: uma para cada total do pedido do catlogo de Natal do cliente, uma para cada total anual de pedidos, e uma parao desconto dado. Processar os registros no enviados de ENTRADA DE PEDIDOS, calculando o total dos pedidos do catlogo de Natal para cada cliente. Determinar os descontos com base nos totais adquiridos com os descontos a serem subtraidos do total do pedido do catlogo de Natal. Processar os registros do Formato relacionado ITENS, calculando o total dos pedidos feitos por cada cliente desde o incio do ano. Modificar os registros de ENTRADA DE PEDIDOS, inserindo o desconto de cada cliente no campo DESCONTO correspondente.

2. 3. 4. 5.

A Query para a Rotina Calcula Desconto


A Query completa para a rotina CALCULA DESCONTO a seguinte: define temp NATAL Number . define temp ANUAL Number . define temp DESCONTO Number . for ENTRADA DE PEDIDOS with ENVIADO = no ; assign temp NATAL := sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) . assign temp ANUAL := sum ofENTRADA DE PEDIDOS named DO ANO with (DATA between 01/01/93 to current date and CLIENTE # = ENTRADA DE PEDIDOS CLIENTE #) sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) . case (temp ANUAL) value < 300: assign temp DESCONTO := temp NATAL* 0,10 . value between 300 to 1000: assign temp DESCONTO := temp NATAL* 0,15 . others: assign temp DESCONTO := temp NATAL* 0,20 . end modify records DESCONTO := temp DESCONTO .

end

Exemplo de Query de Nvel Alto

4-9

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Explicao da Query
Note, em primeiro lugar, que esta Query no comea com um comando for. Quando usamos variveis numa Query, ns devemos definir as variveis em seu incio. Isto facilita encontrar (e modificar) as variveis se necessrio, e tambm faz a Query mais simples de entender. Antes de tudo, vamos ver a Query, comando a comando. A primeira linha da Query cria e identifica uma varivel temporria para armazenar o total de pedidos de Natal de cada cliente:

define temp NATAL Number .


A primeira linha tem cinco elementos: O comando DQL define. Isto diz ao DataEase para criar uma varivel. A palavra chave temp. Isto diz ao DataEase que a varivel uma varivel temporria, no uma varivel global. O nome da varivel (NATAL). O nome da varivel precisa estar entre aspas quando especificada pela primeira vez numa Query. O tipo da varivel (Nmero). Uma varivel pode ser um nmero, um texto, ou qualquer outro tipo de campo do DataEase, exceto Escolha, Cruzado, ou Sim ou No. Um ponto final. O comando define precisa ser terminado por um ponto.

As trs primeiras linhas tm os propsitos muito semelhantes:

define temp NATAL Number . define temp ANUAL Number . define temp DESCONTO Number .
Estes comandos criam trs variveis temporrias: uma para armazenar cada total de pedidos do catlogo de NATAL, outra para armazenar cada total de pedidos durante o ano, e outra para armazenar o desconto a ser dado. A prxima parte da Query diz ao DataEase quais registros selecionar no Formato primrio:

for ENTRADA DE PEDIDOS with ENVIADO = no ;


4-10 Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Como na rotina anterior, o primeiro grupo de registros que ns queremos que o DataEase selecione so os registros no enviados de ENTRADA DE PEDIDOS. Estes registros contm os pedidos do catlogo de Natal.

A prxima parte da Query diz ao DataEase como calcular o total dos pedidos do catlogo de Natal para cada cliente (o valor que ns queremos dar varivel NATAL):

assign temp NATAL := sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) .


Em primeiro lugar, o comando acima introduz o comando DQL assign:

assign temp NATAL :=


Este comando diz ao DataEase para dar varivel NATAL um valor. O DataEase automaticamente insere o operador de valorizao (:=) aps o nome da varivel. Este operador diz ao DataEase que o valor da varivel determinado pela expresso direita do smbolo (ele funciona de maneira muito semelhante ao sinal de igual). O resto da linha :

sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) .


Esta parte do comando assign diz ao DataEase que valor dar varivel NATAL : a somatria do custo de todos os itens relacionados a este pedido. Em outras palavras, quando cada registro de ENTRADA DE PEDIDOS for processado, o operador relacional DQL sum of diz ao DataEase para encontrar os registros relacionados em ITENS com o mesmo PEDIDO # do registro sendo atualmente processado (o pedido do catlogo de Natal). O DataEase ento multiplica o CUSTO UNITARIO pela QTD PEDIDA, totaliza os resultados, e o armazena na varivel NATAL. A Query at este ponto a seguinte:

define temp NATAL Number . define temp ANUAL Number . define temp DESCONTO Number . for ENTRADA DE PEDIDOS with ENVIADO = no ;
UNITARIO *QTD PEDIDA) Exemplo de Query de Nvel Alto

assign temp NATAL := sum of ITENS (CUSTO .


4-11

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A prxima parte da Query diz ao DataEase para calcular o total de pedidos durante o ano para cada cliente (o valor que ns queremos dar varivel ANUAL). Pegando esta seo comando a comando, ela comea com:

assign temp ANUAL := sum of ENTRADA DE PEDIDOS named DO ANO


Este comando diz ao DataEase para dar varivel ANUAL um valor igual somatria dos valores em outro grupo de registros de ENTRADA DE PEDIDOS. Este novo grupo de registros distinguido pelo nome DO ANO e pelo seguinte critrio de seleo:

with (DATA between 01/01/88 to current date and CLIENTE # = ENTRADA DE PEDIDOS CLIENTE #)
Este novo critrio de seleo diz ao DataEase para selecionar um novo grupo de registros - aqueles que tm uma data entre o primeiro dia do ano e a data de hoje, e o mesmo CLIENTE # do registro de ENTRADA DE PEDIDOS atualmente sendo processado pelo comando for. Este novo grupo de registros de ENTRADA DE PEDIDOS relaciona-se com o grupo original por uma relao ad-hoc. Uma relao ad-hoc uma relao que criada para acessar um grupo de registros durante uma Query - inserindo um operador relacional e critrios de seleo adicionais na Query, em vez de definir a relao no Formato Relaes. Durante uma Query, sempre que voc quiser mudar o critrio que usado para selecionar registros de um Formato, voc precisa criar uma nova relao. Quando voc muda critrios de seleo, voc precisa dar a cada grupo distinto de registros um nome nico, atravs do operador DQL named. O nome nico permite que o DataEase identifique grupos diferentes de registros selecionados do mesmo Formato. No exemplo acima, o segundo grupo de registros de ENTRADA DE PEDIDOS possui o nome DO ANO para distingui-los do grupo original dos registros no enviados de ENTRADA DE PEDIDOS selecionados pelo comando for. A ltima linha desta seo :

sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) .

4-12

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Como explicado para a varivel NATAL, este comando diz ao DataEase para totalizar o custo total dos ITENS pedidos pelo cliente cujo registro em ENTRADA DE PEDIDOS est atualmente sendo processado. Mas agora, em vez de totalizar apenas os pedidos do catlogo de Natal, para cada registro de ENTRADA DE PEDIDOS do grupo PEDIDOS DO ANO que processado, o DataEase totaliza todos os registros relacionados em ITENS para este cliente. Com efeito, o DataEase totaliza todos os pedidos feitos por cada cliente desde o incio do ano, e armazena o resultado na varivel ANUAL..

Figura 4-2 A Query at este ponto : define temp NATAL Number . define temp ANUAL Number . define temp DESCONTO Number . for ENTRADA DE PEDIDOS with ENVIADO = no ; assign temp NATAL := sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) . assign temp ANUAL := sum of ENTRADA DE PEDIDOS named DO ANO with (DATA between 01/01/88 to current date and CLIENTE # = ENTRADA DE PEDIDOS CLIENTE #) sum of ITENS (CUSTO UNITARIO * QTD PEDIDA). Na prxima parte da Query ns queremos que o DataEase divida os totais adquiridos durante o ano em trs grupos, e d um desconto diferente para os registros em cada grupo. Este processo similar ao comando if que ns usamos para selecionar os registros na rotina ENVIA PEDIDOS:

Exemplo de Query de Nvel Alto

4-13

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

if CLIENTE # = BLANK Then enter a record in CLIENTES


Mas, em vez de especificar apenas uma condio, ns queremos que o DataEase avalie cada registro contra vrios valores, como mostrado a seguir:

if ANUAL < 300 then assign DESCONTO A := (10%)


DESCONTO B

if ANUAL between 300 to 1000 then assign := (15%)

if ANUAL > 1000 then assign DESCONTO C := (20%)


No entanto, em vez de utilizar vrios comandos if, ns podemos usar um nico comando case (como mostrado abaixo): case(temp ANUAL) value < 300 : assign temp DESCONTO := temp NATAL * 0,10 . value between 300 to 1000: assign temp DESCONTO := temp NATAL * 0,15 . others: assign temp DESCONTO := temp NATAL * 0,20 . end Com efeito, o comando case parece como uma srie de comandos if encadeados. Ele consiste na palavra case seguida de um objeto entre parenteses. Este objeto pode ser um campo, um valor constante, uma expresso ou uma varivel. O objeto testado contra um ou mais comandos value, cada um dos quais especifica um valor de comparao. O valor de comparao pode ser um valor constante, uma expresso, uma varivel ou uma faixa de valores. Cada comando value seguido por um ou mais comandos. Como no comando if, estas aes so condicionais - O DataEase executa os comandos que seguem o primeiro comando value cuja comparao verdadeira para o registro atualmente sendo processado. O comando case precisa incluir um comando end. Ele tambm pode incluir um comando opcional others. Se nenhum dos comandos value precedentes for verdadeiro, o DataEase automaticamente executa os comandos que seguem o comando others.

4-14

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Em nosso exemplo, o objeto que ns queremos que o DataEase teste o valor armazenado na varivel ANUAL. A ao que ns queremos que o DataEase execute modificar o valor armazenado na varivel NATAL pela taxa de desconto apropriada. Agora, vamos ver novamente a seo em questo: case(temp ANUAL) value < 300: assign temp DESCONTO := temp NATAL * 0,10 . value between 300 to 1000: assign temp DESCONTO := temp NATAL * 0,15 . others: assign temp DESCONTO := temp NATAL * 0,20 . end O primeiro comando value verdadeiro para clientes que adquiriram menos de $300 durante o ano. Estes clientes tm um desconto de 10% no seu pedido no catlogo de Natal. O segundo comando value verdadeiro para clientes que adquiriram entre $300 e $1000 durante o ano. Estes clientes tm um desconto de 15% no seu pedido no catlogo de Natal. Todos os outros clientes tm um desconto de 20% no seu pedido no catlogo de Natal. Para gerar o total lquido para cada pedido de Natal, ns precisamos subtrair o desconto dado a cada cliente do total do seu pedido. Mas, ns no temos este desconto armazenado em lugar algum, ns apenas o calculamos. A parte final desta Query armazena o desconto dado a cada cliente, para que ns possamos usar este valor para gerar o pedido.

modify records DESCONTO := temp DESCONTO . end


Estas trs linhas dizem ao DataEase: quando os registros no enviados de ENTRADA DE PEDIDOS forem processados, modifique cada registro inserindo o valor calculado na varivel DESCONTO no campo DESCONTO do Formato ENTRADA DE PEDIDOS.

Exemplo de Query de Nvel Alto

4-15

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A Query completa para a rotina CALCULA DESCONTO : define temp NATAL Number . define temp ANUAL Number . define temp DESCONTO Number . for ENTRADA DE PEDIDOS with ENVIADO = no ; assign temp NATAL := sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) . assign temp ANUAL := sum of ENTRADA DE PEDIDOS named DO ANO with (DATA between 01/01/88 to current date and CLIENTE # = ENTRADA DE PEDIDOS CLIENTE #) sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) . case(temp ANUAL) value < 300: assign temp DESCONTO := temp NATAL * 0,10 . value between 300 to 1000: assign temp DESCONTO := temp NATAL * 0,15 . others: assign temp DESCONTO := temp NATAL * 0,20 . end
DESCONTO

end

modify records := temp DESCONTO .

Se voc estiver criando esta Query enquanto a l, pressione F2 GRAVA. Selecione ento Grava Rotina (a opo 7) no Menu DQL para gravar a rotina no disco. Quando o DataEase perguntar o nome da rotina, digite CALCULA DESCONTO.

4-16

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ROTINA 3: Imprime Pedidos


A rotina IMPRIME PEDIDOS diz que informaes imprimir no pedido do catlogo de Natal de cada cliente, como mostrado na Figura 4-3.

Figura 4-3 As informaes necessrias no pedido do catlogo de Natal so as seguintes: PEDIDO # DATA CLIENTE # NOME ENDEREO DESCONTO ITEM # de cada item adquirido DESCRIO de cada item adquirido CUSTO UNITARIO de cada item adquirido QTD PEDIDA de cada item adquirido Custo Total de todos os itens adquiridos
4-17

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Total Lquido do pedido aps subtrair o desconto

A Query para a Rotina Imprime Pedidos


Para gerar um relatrio que pode ser formatado como o pedido mostrado na Figura 4-3, a Query : for ENTRADA DE PEDIDOS with ENVIADO = no ; list records PEDIDO # in groups ;
DATA ; CLIENTE # ; NOME ; ENDEREO ; CIDADE ; ESTADO ; CEP ; DESCONTO ; all ITENS ITEM # all ITENS DESCRIO ; all ITENS PREO UNITARIO ; all ITENS QTD PEDIDA ; all ITENS (CUSTO UNITARIO * QTD PEDIDA) ; sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) sum of ITENS (CUSTO UNITARIO * QTD PEDIDA)

; - DESCONTO .

Alm de imprimir estas informaes no pedido, ns tambm queremos que esta rotina execute pelo menos uma tarefa importante: trocar o valor do campo ENVIADO de no para sim. Isto feito atravs da incluso de mais trs linhas Query: modify records end
ENVIADO =

sim .

Explicao da Query
Vamos agora analisar esta Query, comando a comando.

for ENTRADA DE PEDIDOS


O comando for seleciona o Formato primrio - o Formato ENTRADA DE PEDIDOS.

with ENVIADO = no ;
4-18 Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O operador with introduz o critrio de seleo de registros: processar apenas registros com o valor no no campo ENVIADO.

list records
O comando list records diz ao DataEase que itens que ns queremos que apaream na sada. Estes itens (chamados itens da lista) seguem o comando list records. Neste relatrio existem dois tipos de itens da lista: campos do Formato primrio/secundrio e valores que so calculados durante a Query mas no aparecem atualmente em qualquer Formato do banco de dados.
PEDIDO

in groups ;

Isto diz ao DataEase para agrupar os registros com o mesmo PEDIDO # juntos, para arranjar os grupos em ordem alfabtica.
DATA ; CLIENTE # ; NOME ; ENDEREO ; CIDADE ; ESTADO ; CEP ; DESCONTO ;

Cada um destes oito itens especificam um campo do Formato ENTRADA DE PEDIDOS. Aqui, ns estamos dizendo ao DataEase para incluir o valor de cada um destes campos na sada do relatrio.

all ITENS ITEM # ; all ITENS DESCRIO ; all ITENS CUSTO UNITARIO ; all ITENS QTD PEDIDA ;
Cada uma destas quatro linhas especifica um campo do Formato ITENS. O operador relacional all diz ao DataEase para encontrar todos os registros de ITENS que possuem o mesmo campo PEDIDO # do registro de ENTRADA DE PEDIDOS que est atualmente sendo processado (ele encontra todos os registros de ITENS relacionados ao pedido do catlogo de Natal).

all ITENS (CUSTO UNITARIO * QTD PEDIDA) ;

Exemplo de Query de Nvel Alto

4-19

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta linha diz ao DataEase para calcular a somatria dos custos de todos os ITENS do pedido do catlogo de Natal e imprimir o resultado deste clculo no relatrio. Esta informao impressa na linha do Total Geral do pedido.

sum of ITENS (CUSTO UNITARIO * QTD PEDIDA) - DESCONTO .


Esta linha diz ao DataEase para calcular a mesma somatria do item anterior, e ento subtrair o valor do campo DESCONTO do Formato ENTRADA DE PEDIDOS. O resultado o valor lquido do pedido, tomando por base o desconto de cada cliente calculado pela rotina CALCULA DESCONTOS. Esta informao mostrada no Total do Pedido.

modify records ENVIADO := sim . end


As ltimas trs linhas dizem ao DataEase: para cada registro de ENTRADA DE PEDIDOS processado, troque o valor do campo ENVIADO para sim.

A ROTINA DE CONTROLE: Pedidos Correio


Como ns mencionamos no incio deste Captulo, uma rotina de controle pode ser usada para gerenciar quase todos os elementos do DataEase, inclusive combinando menus, Formatos para a Entrada de Registros, rotinas, aes condicionais, e sadas em aplicaes comerciais totalmente automatizadas.

Uma rotina de controle pode ser usada para: Executar qualquer opo de um menu DataEase de dentro da rotina. Observando-se por este ngulo, rotinas de controle so similares aos menus CHAIN disponveis em verses anteriores do DataEase. No entanto, rotinas de controle permitem que voc combine a lgica condicional da DQL com a capacidade de processamento encadeado Ligar rotinas DQL, e execut-las automaticamente Passar valores entre rotinas

Agora, ns vamos demonstrar como a Correio Elegante pode ligar as trs rotinas de processamento para automatizar o processo completo de incluir e emitir pedidos. Para fazer isto, voc deve criar uma nova Query que combina as trs rotinas de processamento em uma rotina de controle.

4-20

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A Query para a rotina de controle est impressa abaixo. Seguindo a Query, o propsito de cada linha da rotina de controle explicado.

A Query para a Rotina de Controle Pedidos Correio


A Query da rotina de controle PEDIDOS CORREIO possui apenas dez linhas: if current date < 25/12/89 then record entry ENTRADA DE PEDIDOS . run procedure ENVIA PEDIDOS . run procedure CALCULA DESCONTOS . run procedure IMPRIME PEDIDOS . else message <Feliz Natal!>| Existem apenas 300 dias teis antes de ns| enviarmos o nosso prximo catlogo de Natal. window . end

Explicao da Rotina de Controle


A rotina de controle comea com um comando if, o qual determina uma ao condicional:

if current date < 25/12/89 then


Isto diz ao DataEase para executar os comandos entre if e else enquanto a data de hoje for anterior a 25 de dezembro. Se a data for 25 de dezembro ou posterior, o DataEase ignora os comandos entre if e else, e continua o processamento no primeiro comando aps else. A rotina de controle ento introduz a primeira ao:

record entry ENTRADA DE PEDIDOS .


O comando record entry permite que voc inclua registros enquanto executa uma rotina. Os dados incluidos podem ser processados por outras rotinas especificadas na rotina de controle. Este comando diz ao DataEase para executar uma ao: mostrar o Formato especificado. Neste caso, ele mostra o Formato ENTRADA DE PEDIDOS, para que o operador possa incluir novos pedidos.

Exemplo de Query de Nvel Alto

4-21

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O Formato ENTRADA DE PEDIDOS foi definido de forma que o DataEase gere automaticamente o PEDIDO # (um campo sequenciado) para cada pedido que for incluido. As informaes de nome e endereo para novos clientes so introduzidas manualmente pelo operador. O nome e endereo de clientes existentes so recuperados automaticamente do Formato CLIENTES quando o operador digitar o CLIENTE # no Formato ENTRADA DE PEDIDOS. A terceira linha da rotina de controle :

run procedure ENVIA PEDIDOS .


O comando run procedure executa uma rotina, como se voc tivesse selecionado a opo Executa Rotina do Menu DQL. Quando o DataEase atingir o fim da rotina, ele executar automaticamente o prximo comando da rotina de controle. Quando a rotina ENVIA PEDIDOS est sendo executada, o DataEase cria um novo registro no Formato CLIENTES para cada novo cliente, copiando o nome e o endereo do Formato ENTRADA DE PEDIDOS. A mercadoria pedida para o catlogo de Natal enviada para o Formato ITENS, e a quantidade de itens pedidos subtraida dos campos QTD DISPONIVEL correspondentes no Formato ESTOQUE. A quarta linha especifica:

run procedure CALCULA DESCONTO .


Este comando executa a rotina CALCULA DESCONTO que 1) calcula o valor total pedido por um cliente do catlogo de Natal, 2) calcula o valor total pedido por um cliente desde o comeo do ano, e 3) calcula o desconto sobre o pedido do catlogo de Natal com base nos valores adquiridos por cada cliente. A quinta linha da rotina de controle :

run procedure IMPRIME PEDIDOS .


Este comando executa a rotina final IMPRIME PEDIDOS. Esta rotina imprime um pedido para cada pedido do catlogo de Natal feito por um cliente 1) recuperando e totalizando o custo de todos os itens pedidos constantes no Formato ITENS e 2) aplicando o desconto a ser dado para este cliente (como calculado na rotina anterior) para fornecer um total lquido. A sexta linha da rotina de controle contm o comando else. O comando else diz ao DataEase que ao executar se a data de hoje for igual ou posterior a 25 de dezembro.

4-22

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

else

end

message <Feliz Natal!>| Existem apenas 300 dias teis antes de ns| enviarmos o nosso prximo catlogo de Natal. window .

A prxima linha contm o comando DQL message. O comando message diz ao DataEase para mostrar o texto entre aspas. No texto da mensagem, os sinais de maior e menor <> dizem ao DataEase para mostrar o texto em vermelho (uma opo de cor definida pelo usurio), cada linha vertical | diz ao DataEase para inserir uma quebra de linha, e o comando window seguindo o fechamento de aspas diz ao DataEase para mostrar a mensagem numa janela no centro da tela. A ltima linha da rotina de controle contm o comando end. Ele marca o fim das aes iniciadas pelo comando if. A rotina de controle no exige um segundo if, assim como nenhum outro comando da rotina de controle exigem este comando.

Sumrio (Colocando as Rotinas Juntas)


Neste exemplo, quando voc seleciona Executa Rotina no Menu DQL, e especifica a rotina de controle PEDIDOS CORREIO (ou especifica uma opo PEDIDOS PELO CORREIO de um menu sob medida), o DataEase mostra o Formato ENTRADA DE PEDIDOS. Voc pode ento incluir registros usando as caractersticas de Entrada de Registros conhecidas. A cada vez que voc pressionar F5 LIMPA FORMATO, o DataEase mostra um registro vazio, como se fosse uma Entrada de Registros normal. Quando voc termina de incluir registros e pressiona ESC, o DataEase executa automaticamente cada um dos comandos da rotina de controle at atingir o fim da rotina IMPRIME PEDIDOS. Quando a rotina de controle estiver completa, o DataEase automaticamente retorna para o Formato ou menu de onde a rotina foi originalmente chamada.

Exemplo de Query de Nvel Alto

4-23

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta pgina foi mantida vazia intencionalmente

4-24

Exemplo de Query de Nvel Alto

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 5 A SADA DO RELATRIO


DQL so frequentemente usadas para criar sadas de relatrios para Rotinas impresso e apresentao em tela. O DataEase fornece oito formas pr-definidas que permitem que voc produza relatrios facilmente. Alm disto, voc pode criar suas prprias formas sob medida. Todas as opes de formatao da DQL tambm podem ser usadas em Relatrios Rpidos para criar ou melhorar a sada da rotina. Para um controle mais preciso de sua sada, o DataEase tambm fornece o comando DQL output. O comando output pode ser usado em qualquer parte de uma Query para especificar a localizao exata do processamento. Para maiores informaes sobre o comando output, consulte a lexicografia DQL do Captulo 6 deste volume.

O PROPSITO DA FORMA DO RELATRIO


Embora a Query diga ao DataEase que valores de campo e estatsticas incluir num relatrio, ela no especifica como distribuir fisicamente as informaes. A forma diz ao DataEase como arranjar a sada para produzir cartas, etiquetas, pedidos, listagens de verificao e relatrios tabulares. Definir a forma complementar definio de um Formato. Na definio do Formato, voc define a forma para os dados serem incluidos; a forma do relatrio define como os dados so apresentados.

OS ELEMENTOS DA FORMA DO RELATRIO


A forma do relatrio consiste de trs elementos: Comandos da Forma: Comandos especiais que dizem ao DataEase como definir a apresentao enviada pela Query. Existem oito comandos da forma: .header, .footer, .group header, .items, .group trailer, .end, .page e .call. Todos os comandos so precedidos por um ponto, sendo por esta razo que eles so chamados de comandos ponto. Uma forma precisa conter um comando .items e .ENd. Os outros comandos so opcionais. Os comandos ponto precisam comear na coluna 1 da forma. Texto da Forma: Texto descritivo como Ttulos, Cabealhos, Nmeros de Pginas, Linhas Demarcatrias, etc. Voc digita o texto da forma diretamente na tela, onde voc deseja que ele aparea na sada. O texto da forma uma parte opcional da forma.

Definindo a Sada do Relatrio

5-1

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Campos: Locais onde os valores dos campos dos registros processados pela Query aparecem na sada do relatrio. Para inserir um campo na forma, mova o cursor para a posio desejada e pressione F10 CAMPO, selecionando o campo no menu que o DataEase mostra, ou pressione RETURN e digite uma nova frmula.

A Figura 5-1 uma amostra de um relatrio que usa vrios comandos da forma. O texto mostrado no relatrio (como o Total do Departamento) o Texto da Forma, e os retngulos em negro representam reas onde os valores dos campos de cada registro processado so mostrados ou estatisticamente sumarizados. Note que a Figura 5-1 representa a sada do relatrio (com os comandos da forma anotados), no a forma do relatrio. Na forma, cada comando precisa comear na coluna 1 de uma linha separada. Exemplos de formas de relatrios aparecem nas pginas de referncia deste Captulo.

Figura 5-1

COMO ESTE CAPTULO EST ORGANIZADO


Este Captulo diz a voc como selecionar, criar e modificar formas. Ele inclui vrios exemplos com a Query que gera a forma e a sada produzida (como na Figura 5-1). As formas pr-definidas so apresentadas em primeiro lugar. Elas so seguidas por instrues sobre como criar uma forma sob medida ou editar uma forma pr-definida. Ser de grande auxlio revisar os exemplos deste Captulo antes de tentar criar suas prprias formas.

5-2

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

FORMAS PR-DEFINIDAS
O DataEase fornece vrias formas pr-definidas as quais voc pode usar para ganhar tempo. Estas formas definidas pelo sistema podem ser usadas como esto ou podem ser editadas para refletir um gosto pessoal. Em geral, vrios usurios concordaro que a melhor maneira de formatar um relatrio gerar o mesmo numa forma pr-definida, e modific-la at ficarem satisfeitos com a aparncia do relatrio.

FORMAS SOB MEDIDA


Alternativamente, voc pode criar uma forma sob medida, que permite que voc defina a forma do relatrio segundo suas prprias especificaes. Ao criar uma forma sob medida, voc digita os comandos da forma que dizem ao DataEase como voc quer o relatrio. No entanto, uma forma de relatrio tambm inclui ttulos, linhas demarcatrias, nmeros de pginas, nomes de campos e outras informaes descritivas. Quando voc est definindo uma forma sob medida, voc precisa posicionar estas informaes onde voc quer que elas apaream no relatrio. Digitar o texto da forma e posicionar os campos na forma feito de maneira idntica definio dos Formatos. Por exemplo, se voc quiser uma linha centralizada no topo do relatrio, voc deve digitar o texto do ttulo no topo da forma, e centraliz-lo exatamente onde voc deseja que ela aparea. De maneira semelhante, voc deve posicionar um campo onde voc o desejar, e pressionar F10 CAMPO para inserir o campo na forma. Aps cada campo ser inserido, pressione F2 GRAVA para gravar a localizao do campo como parte da forma.

FORMA PADRO DO RELATRIO


Se voc no definir uma forma para a rotina, o DataEase automaticamente cria uma forma colunar padro. A forma colunar mostra cada registro numa linha separada, com os campos posicionados um ao lado do outro, como em colunas verticais. Se voc selecionou agrupamentos na Query, o DataEase automaticamente pergunta pelas informaes adicionais necessrias para formatar apropriadamente o relatrio.

GRAVANDO UMA FORMA


Para gravar uma forma, pressione F2 GRAVA. Isto grava a forma temporariamente na memria do computador. Para gravar a forma permanentemente, selecione Grava Rotina (a opo 7) no Menu DQL. Isto grava a rotina e a forma no disco.

Definindo a Sada do Relatrio

5-3

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

MODIFICANDO UMA FORMA


Uma vez gravada uma forma, a opo Define Forma do Menu DQL troca seu nome para Modif. Forma. Voc pode modificar uma forma a qualquer momento. Para modificar uma forma previamente definida, a rotina precisa estar carregada na memria. Se a rotina no estiver na memria de trabalho do computador, selecione a opo 8, Carrega Rotina no Menu DQL, e selecione o nome da rotina do menu que o DataEase mostra na poro direita da tela. Uma vez carregada a rotina, selecione a opo 5, Modif. Forma. Quando voc modificar uma forma, o DataEase pergunta:

Deseja manter a forma existente da rotina?


Responda sim se voc quiser manter a forma anteriormente definida. Se voc responder no, o DataEase abandona completamente a forma anterior, e voc precisar defini-la novamente, desde o incio.

TIPOS DE FORMAS DO RELATRIO


Quando voc seleciona Define Forma no Menu DQL (ou no Menu de Relatrios Rpidos), o DataEase mostra um menu com as nove formas disponveis, como sumarizadas na prxima pgina:

SUMRIO DAS OPES DO MENU DE FORMAS


1. Colunar A forma Colunar mostra um registro em cada linha com os campos posicionados um ao lado do outro (similar Viso de Tabela). A forma Campo por Linha mostra um campo em cada linha. A forma Entrada de Registros usa o Formato de Entrada de Registros como a forma do relatrio (idntica Viso do Formato). A forma Template usa um Formato definido pelo usurio como forma do relatrio. A forma GrafTalk Chart envia automaticamente os dados do relatrio para o DataEase GrafTalk, para produzir um grfico. Voc precisa possuir o GrafTalk para usar com sucesso esta forma.
Definindo a Sada do Relatrio

2. 3.

Campo por Linha Entrada de Registros

4. 5.

Template GrafTalk Chart

5-4

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

6. 7.

Sob Medida Exportao

8. 9.

Etiquetas CrossView

A forma Sob Medida permite que voc defina uma forma de acordo com suas prprias especificaes. A forma Exportao formata os dados para serem usados por outros programas. As formas de exportao incluem o WordPerfect, o Mail-Merge, o MultiMate, o GrafTalk, o Lotus 1-2-3/Lotus Symphony, DIF (Data Interchange Format), e arquivos ASCII de comprimento de registro fixo ou varivel. A forma Etiquetas usada para formatar automaticamente a sada para etiquetas uma ao lado da outra. A forma CrossView envia automaticamente os dados do relatrio para o DataEase CrossView, para anlise estatstica dos dados. Voc precisa possuir o CrossView para usar com sucesso esta forma.

Se voc selecionar qualquer forma, exceto Sob Medida, o DataEase pergunta por informaes adicionais necessrias, e ento mostra a forma do relatrio. Voc pode usar a forma como est ou edit-la (exceto a forma exportao Lotus, a qual no deve ser editada). Para usar a forma no modificada, pressione F2 GRAVA. Para mostrar o relatrio na forma escolhida, selecione Gera Rotina (a opo 1) no Menu DQL. As pginas referncia deste Captulo explicam cada forma em detalhes.

Como Definir uma Forma: Viso Geral


A forma definida aps voc escrever uma Query DQL (ou selecionar Define Campos a serem Listados, no Menu de Relatrios Rpidos). Siga os passos abaixo para definir uma forma. Veja as pginas referncia especficas para mais informaes sobre um tpico em particular. 1. 2. 3. Selecione Define Forma no Menu DQL ou de Relatrios Rpidos. O DataEase mostra as formas disponveis. Selecione o tipo de forma que voc quer usar para o relatrio. Responda s questes que o DataEase faz. As questes variam de forma para forma. Veja as pginas referncia da forma que voc escolheu para maiores informaes sobre questes especficas. O DataEase mostra a forma. Voc pode agora edit-la, se desejado, exceto no caso da forma exportao Lotus, a qual no deve ser editada.
5-5

4.

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

5.

Inclua o texto da forma, simplesmente digitando-o na forma onde voc quer que ele aparea. Voc pode incluir ttulos, desenhar bordas ou incluir qualquer texto desejado na forma. Inclua os campos na forma, posicionando o cursor e pressionando F10 CAMPO. Quando o DataEase mostrar o menu com os campos disponveis, selecione o campos que voc quer inserir na forma. Voc pode cortar e montar campos e texto da forma; exatamente da mesma maneira que na Definio de Formatos. Quando a forma estiver definida da maneira desejada, pressione F2 GRAVA para gravar a forma na memria do computador. Para gravar a forma no disco, selecione Grava Rotina (a opo 7) no Menu DQL (ou selecione Grava Relatrio, no Menu de Relatrios Rpidos).

6.

7. 8.

Para ilustrar o processo de formatao de um relatrio, a Figura 5-2 mostra a Query, forma e sada de uma rotina que imprime os campos ESTADO, ULTIMO NOME e BALANO FINAL de cada registro do Formato CLIENTES. Query for CLIENTES ; list records
ESTADO ; ULTIMO NOME ; BALANO FINAL

end Forma

ESTADO ULTIMO NOME =================================== .ITems __ __________ .ENd =================================== Sada do Relatrio

BALANO FINAL $________

ESTADO ULTIMO NOME BALANO FINAL =================================== NJ Adams $595,00 NY Anderson $350,00 CT Brown $250,00 NY Cooper $725,00 CT Davis $300,00 =================================== Figura 5-2
5-6 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Na Figura 5-2, os nomes dos campos (ESTADO, ULTIMO NOME e BALANO FINAL), o cifro e as linhas demarcatrias (===) so Texto da Forma. Os comandos .items e .ENd so Comandos da Forma. As trs linhas contnuas so campos. Note que embora exista apenas um campo na forma para cada item da lista da Query, um valor de campo impresso na sada para cada registro processado pela Query.

Tipos de Forma Forma Colunar


A forma colunar coloca cada campo numa coluna vertical separada, e usa os Nomes dos Campos como cabealhos de coluna no relatrio. Se o Nome do Campo for grande demais para se ajustar na coluna, o DataEase divide automaticamente o nome em duas ou mais linhas. Se voc no gostar da maneira a qual o DataEase dividiu o Nome do Campo, voc pode editar a forma.

Largura do Relatrio
Num relatrio colunar, o DataEase automaticamente define cada coluna com uma largura igual ao Comprimento do Campo e ento totaliza a largura de todas as colunas mais espaos intermedirios, para determinar a largura necessria para o relatrio. Voc necessita deste espao em uma linha, para ser capaz de imprimir o relatrio corretamente. Aps fazer o clculo, o DataEase mostra a mensagem:

O comprimento mnimo da rotina colunar nnn


onde nnn a largura da linha em caracteres. Se a largura mnima for menor que 80 caracteres, o DataEase gera a forma sem outras mensagens. Se a largura mnima exceder 80 caracteres (o padro de exibio na tela), o DataEase pergunta se voc quer especificar a largura desejada para o relatrio, e construir a forma. O DataEase sempre insere 2 espaos ao incio da linha, de 1 a 4 espaos entre cada coluna vertical, e de 1 a 4 espaos ao final da linha. Veja a seguir para um exemplo.

Definindo a Sada do Relatrio

5-7

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Por exemplo, assuma que ns queremos incluir os campos PRIMEIRO NOME, ULTIMO de cada cliente na sada do relatrio. A Query contm os seis seguintes itens da lista:
NOME, ENDEREO, CIDADE, ESTADO e CEP

Nome do Campo
PRIMEIRO NOME ULTIMO NOME ENDEREO CIDADE ESTADO CEP

Comprimento do Campo 20 20 40 20 2 5

Total

107

O comprimento mnimo de linha para esta forma colunar de 114 caracteres. os 107 caracteres dos campos 5 espaos (1 espao entre cada uma das seis colunas) 1 espao ao incio da linha 1 espao ao fim da linha

Se voc especificar um comprimento de linha menor que 114, o DataEase mostra a mensagem:

Voc precisa editar a rotina para este comprimento! OK?


Se voc responder sim, o DataEase define um relatrio de 114 caracteres de largura. Voc precisar editar a forma para fazer com que ela se adapte na largura desejada. Se voc responder no, o DataEase retorna questo do tipo da forma para permitir a alterao de sua seleo.

Espaamento Automtico
Se voc especificar um relatrio com uma largura maior que a largura mnima exigida, o DataEase tenta espaar a linha. Por exemplo, se voc especificar uma largura de 150 caracteres, o DataEase constroi uma forma de 133 caracteres, calculando o seguinte: 107 caracteres dos campos, 20 espaos entre campos (4 espaos entre cada campo), 2 espaos ao incio da linha e 4 espaos ao final da linha. A largura atual do relatrio (133 caracteres) menor que a largura especificada de 150 caracteres, pois o espaamento mximo definido pelo sistema foi utilizado. As duas prximas pginas mostram exemplos da Query, forma e sada para dois relatrios colunares diferentes.
5-8 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta pgina contm a forma colunar padro e parte da sada do relatrio para uma Query que diz ao DataEase para imprimir os registros de CLIENTES, mostrando os campos ESTADO, ULTIMO NOME e BALANO FINAL para cada cliente. Query

for CLIENTES ; list records


ESTADO ; ULTIMO NOME BALANO FINAL

end
Forma

in order ; .

ESTADO ULTIMO NOME BALANO FINAL =================================== .ITems __ __________ $__________ .ENd =================================== Sada do Relatrio ESTADO ULTIMO NOME BALANO FINAL =================================== NJ Adams $595,00 NY Anderson $350,00 CT Brown $250,00 NY Cooper $725,00 CT Davis $300,00 NY Evans $865,00 NJ Hill $525,00 NY Ivers $675,00 NY Jenkins $140,00 FL McDonald $425,00 =================================== NOTA: Quando a forma padro criada, cada cabealho de coluna (ou nome de campo) possui a mesma largura da coluna (ou comprimento do campo). Se o cabealho for maior que o comprimento do campo, os caracteres extras sero movidos para quantas linhas forem necessrias. Mais tarde neste Captulo, ns iremos discutir como modificar a forma para que os cabealhos de colunas apaream em uma linha, como mostrado acima.

Definindo a Sada do Relatrio

5-9

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma Colunar com Agrupamentos e Estatsticas Estatsticas de Grupos


Se voc especificou agrupamentos em quaisquer campos na Query, o DataEase pergunta:

Voc deseja Cabeas e Finais de Grupos?


Se voc responder sim, o DataEase cria cabeas e finais de grupos para cada campo agrupado. Cabeas de Grupos so nomes de grupos. O campo usado para agrupar os dados na Query automaticamente incluido na cabea do grupo. Finais de Grupo mantm totais estatsticos do grupo; eles imprimem totais de grupo para quaisquer estatsticas especificadas. Voc tambm pode gerar totais gerais posicionando o campo aps o comando .end. Esta posio diz ao DataEase para gerar um total geral, no lugar de um total de grupo. Usando o exemplo da pgina anterior, ns podemos agrupar os registros por ESTADO e gerar totais estatsticos para cada estado atravs da seguinte Query: Query

for CLIENTES ; list records ESTADO in groups with group-totals ; ULTIMO NOME ; BALANO FINAL : item sum . end
Forma ESTADO ULTIMO NOME =================================== .GRoup header __ .ITems __________ .GRoup trailer Total do Estado .ENd =================================== Total Geral BALANO FINAL

$__________ $__________ $____________

5-10

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Neste exemplo, o texto .group header o campo ESTADO. O texto .group trailer (Total do Estado), o qual no um valor de campo, digitado na forma diretamente onde voc quer que o texto aparea na sada do relatrio. As linhas demarcatrias do relatrio (====) so inseridas manualmente na forma do relatrio onde voc quer que as mesmas apaream. Sada do Relatrio ESTADO ULTIMO NOME =================================== CT Brown Davis Total do Estado FL McDonald Total do Estado NJ Adams Hill Total do Estado NY Anderson Cooper Evans Ivers Jenkins Total do Estado =================================== Total Geral BALANO FINAL $250,00 $300,00 $550,00 $425,00 $425,00 $595,00 $525,00 $1.120,00 $350,00 $725,00 $865,00 $675,00 $140,00 $2.755,00 $4,840,00

Alm de totais de grupos, esta forma do relatrio inclui uma estatstica de Total Geral, a qual aparece aps o comando de formatao .end.

Definindo a Sada do Relatrio

5-11

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma Campo por Linha


A forma campo por linha produz um relatrio com um campo em cada linha do relatrio. Esta forma usada para imprimir um grande nmero de campos os quais no podem ser acomodados na largura da pgina. Quando voc seleciona campo por linha, o DataEase posiciona cada campo de sada numa linha separada. O nome do campo aparece na margem esquerda, e o campo se inicia na posio 40. Os campos de cada registro aparecem diretamente um abaixo do outro. Uma linha vazia inserida entre os registros. Por exemplo, sunponha que voc quer incluir todos os campos do Formato ESTOQUE na sada do relatrio. A Query a seguinte: Query

for ESTOQUE ; list records


ITEM # ; DESCRIO ; LOCAL ARMAZENAMENTO ; CODIGO VENDEDOR ; NOME VENDEDOR ; CUSTO UNITARIO ; QTD DISPONIVEL ; RESSUPRIMENTO ; TEMPO DE VIDA ; QTD REPOSIO

end
Forma .items

.ENd
5-12

ITEM # ___ DESCRIO _______________ LOCAL ARMAZENAMENTO ___ CODIGO VENDEDOR ___ NOME VENDEDOR ____________________ CUSTO UNITARIO ___ QTD DISPONIVEL ___ RESSUPRIMENTO ___ TEMPO DE VIDA ___ QTD REPOSIO ___

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sada do Relatrio
ITEM # DESCRIO LOCAL ARMAZENAMENTO CODIGO VENDEDOR NOME VENDEDOR CUSTO UNITARIO 12,50 QTD DISPONIVEL RESSUPRIMENTO TEMPO DE VIDA QTD REPOSIO ITEM # DESCRIO LOCAL ARMAZENAMENTO CODIGO VENDEDOR NOME VENDEDOR CUSTO UNITARIO 24,75 QTD DISPONIVEL 215 RESSUPRIMENTO TEMPO DE VIDA QTD REPOSIO ITEM # DESCRIO LOCAL ARMAZENAMENTO CODIGO VENDEDOR NOME VENDEDOR CUSTO UNITARIO QTD DISPONIVEL RESSUPRIMENTO TEMPO DE VIDA QTD REPOSIO ITEM # DESCRIO LOCAL ARMAZENAMENTO CODIGO VENDEDOR NOME VENDEDOR CUSTO UNITARIO 45,00 QTD DISPONIVEL RESSUPRIMENTO 25 TEMPO DE VIDA QTD REPOSIO A05 CAMISA DE FLANELA 70A 303 SASQUATCH INC. 80 144 45 144 A06 CALAS CORDUROY 71B 299 PANTAMINE CO.

110 45 50 A07 MEIAS DE ALGODO 23B 130 BURLY BENS WOOL FACTORY 6,25 250 24 15 300 A08 CAPAS DE FLANELA 70A 303 SASQUATCH INC. 96 45 10

Definindo a Sada do Relatrio

5-13

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma Entrada de Registros


A forma entrada de registros produz um relatrio que duplica o layout do Formato de Entrada de Registros. Quando voc seleciona a forma entrada de registros, o DataEase cria uma forma com o mesmo layout do Formato de Entrada de Registros especificado. O DataEase automaticamente usa todos os campos do Formato; voc precisa apenas especificar os itens da lista quando deseja agrupamentos, ordenaes ou gerao de estatsticas.
ENDEREO, CIDADE, ESTADO e CEP de

Por exemplo, suponha que voc queira incluir os campos NOME COMPLETO, cada cliente na sada do relatrio. A Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP .

end
Forma .items nosplit
NOME ENDEREO CIDADE

____________________ ______________________ ________________ ESTADO_________ CEP

_____

.ENd

5-14

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sada do Relatrio
NOME ENDEREO CIDADE NOME ENDEREO CIDADE NOME ENDEREO CIDADE

8 Smallwood Drive Longbranch ESTADO NJ


Lynn Anderson 30 Bainbridge Ave

John Adams

CEP

07740

Commak
Pat Brown

ESTADO NY

CEP

11725

25 Evergreen Circle Norwalk ESTADO CT

CEP

06851

Forma Template
A forma template usada para criar uma forma genrica que pode ser distribuida entre vrios usurios para criar relatrios padronizados. Mesmo os usurios cujos bancos de dados tm nomes e estruturas diferentes podem usar relatrios com templates para relatrios comuns a todos. O template precisa antes estar definido, usando a Definio de Formatos e Relaes. Voc define um template justamente como outro Formato, a no ser o fato de voc inserir os comandos de formatao do relatrio diretamente no Formato (os comandos de formatao so explicados na seo Forma Sob Medida). Digite o texto do Formato e posicione os campos nos locais apropriados do Formato. Especifique o Tipo do Campo e o Comprimento, ignorando as outras questes. Use Nomes de Campo genricos (como NOME, NMERO, etc.) para fazer a forma compatvel com as vrias necessidades de sada, sempre que possvel. Ns recomendamos que voc crie e armazene seus Formatos template num banco de dados separado para que voc no os confunda com Formatos de Entrada de Registros. Tambm importante conhecer os nomes DOS da cada Formato template, pois voc vai precisar dele para especificar o template. Quando voc seleciona template, o DataEase pergunta:

Nome do arquivo Template:


Digite o nome DOS do Formato template (incluindo a letra do drive), e pressione RETURN. O DataEase ento pergunta:

Combinar os campos do Template por: 1:Por Ordem de Campo 2:Por Nome de Campo
Definindo a Sada do Relatrio 5-15

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Se voc selecionar Por ordem de campo, a sada do relatrio ser combinada com os campos do template na medida em que os campos so impressos pela Query. Se voc escolher Por nome de campo, a sada do relatrio ser combinada com os campos do template por Nome de Campo (o campo NOME da sada ser combinado com o campo NOME do Formato template, etc.). Para maximizar a flexibilidade, voc pode usar os caracteres coringa * e ? nos Nomes dos Campos do template para facilitar a combinao dos campos da sada com os campos do template (por exemplo, um campo do template chamado *# pode ser combinado com CLIENTE #, PEDIDO #, etc.). Por exemplo, assuma que ns queremos criar um template com um campo chamado NOME. Ns queremos incluir os campos NOME COMPLETO, ENDEREO, CIDADE, ESTADO e CEP de cada cliente na sada do relatrio. A Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP .

end

Neste exemplo, se ns dissermos para o DataEase combinar Por Ordem de Campo, os dados do campo NOME COMPLETO seriam combinados no primeiro campo do Formato template. Se ns dissermos para o DataEase combinar Por Nome de Campo, as informaes do campo NOME COMPLETO ser combinado com o primeiro campo do Formato template que tenha um nome de campo que contenha uma cadeia de caracteres contendo a palavra nome. Em ambos os casos, a forma template a mostrada a seguir: Forma .items
NOME COMPLETO ENDEREO CIDADE ______________ ____________________ _________________________ ESTADO _______ CEP _____

........................................................ .end

5-16

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A sada do relatrio para esta Query aparece a seguir. Sada do Relatrio


NOME COMPLETO ENDEREO CIDADE NOME COMPLETO ENDEREO CIDADE NOME COMPLETO ENDEREO CIDADE

John Adams 8 Smallwood Drive Longbranch ESTADO NJ Lynn Anderson 30 Bainbridge Ave Commak ESTADO NY

CEP 07740

CEP 11725

Pat Brown 25 Evergreen Circle Norwalk ESTADO CT CEP 06851 A linha com os pontos (...) que aparece entre um registro e outro texto da forma. Ele digitado imediatamente acima do comando .end.

Forma GrafTalk Chart


A forma GrafTalk Chart permite que voc mostre de maneira transparente uma apresentao de um grfico gerado pelo GrafTalk de dentro de uma aplicao em DataEase. Para usar a forma GrafTalk Chart, o DataEase e o GrafTalk precisam estar em diretrios indicados em seu comando DOS PATH. Por exemplo, imagine que ns queremos produzir um grfico que mostra as informaes do BALANO FINAL para cada ESTADO. A Query a seguinte: Query

for CLIENTES ; list records ESTADO in groups ; BALANO FINAL : sum . end
Quando voc seleciona a forma GrafTalk Chart, o DataEase mostra a tela da forma. A forma a seguinte: Forma ESTADO BALANO FINAL .ITems __ _______ .ENd .CAll GrafTalk /D %r %e Esta forma explicada abaixo:
Definindo a Sada do Relatrio 5-17

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O GrafTalk coloca os Nomes dos Campos no topo da forma como cabealhos de colunas para o grfico. O comando .call no final da forma diz ao DataEase para executar o GrafTalk aps todos os registros selecionados pela Query tenham sido processados. O parmetro /D diz para o GrafTalk para desenhar um grfico usando os dados transferidos pelo DataEase. O parmetro %r especifica o nome do arquivo do GrafTalk (o nome do relatrio com uma extenso .DBG). O parmetro %e especifica o nome do arquivo de dados do DataEase (com a extenso .DAT).

Quando a forma GrafTalk Chart mostrada na tela, voc pode editar os cabealhos das colunas, respeitando as seguintes restries: 1. O GrafTalk usa os oito primeiros caracteres do nome do campo como o nome da coluna, a qual pode incluir apenas um espao entre palavras. O primeiro caracter de cada coluna precisa ser uma letra. Os nomes das colunas precisam estar separados por dois ou mais espaos. A linha com os nomes das colunas precisa permanecer acima do comando de formatao .items.

2. 3.

Na primeira vez que voc executar a rotina, o DataEase automaticamente executa o GrafTalk para que voc possa definir o grfico (a no ser que voc j tenha criado o grfico). No GrafTalk, voc especifica os detalhes sobre o grfico, se ele ser um grfico de linha ou de barra, e se ele deve ser impresso na tela ou no plotter, por exemplo. Consulte o Menu de Referncia do GrafTalk para maiores detalhes em como definir grficos. NOTA: Voc tambm pode criar o grfico no GrafTalk antes de executar a rotina DQL. Certifique-se de dar ao grfico o mesmo nome que a rotina DQL, com uma extenso .DBG. Consulte o Manual de Referncia do GrafTalk para maiores detalhes sobre a criao de grficos. Para exportar dados para o GrafTalk, de forma a utiliz-lo independentemente do DataEase, use a forma exportao GrafTalk (veja a seo Exportao neste Captulo para maiores detalhes).

5-18

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O DataEase define automaticamente um destino em disco na tela do Estilo de Impresso quando voc grava uma forma GrafTalk Chart. Quando a rotina executada, a sada gravada a um arquivo o qual passado para o GrafTalk. O DataEase cria automaticamente um nome de arquivo nico para este arquivo. Se voc desejar, voc pode digitar outro nome de arquivo na tela do Estilo de Impresso (certifique-se de incluir a letra do drive se ele for diferente do drive de dados atual). Quando a rotina gerada, o DataEase executa o comando .call, executando o GrafTalk e fornecendo ambos o nome do grfico (o parmetro %r) e o nome do arquivo de dados DataEase (o parmetro %e). Aps o grfico ser gerado, o GrafTalk automaticamente retorna o controle para o DataEase. Para modificar a definio do grfico GrafTalk, entre no GrafTalk e use a opo Restore Chart, para carregar o grfico e efetuar as mudanas necessrias. Aps gravar o grfico modificado no GrafTalk, o mesmo ser automaticamente utilizado pelo DataEase sempre que voc executar a rotina. No necessrio gravar novamente ou modificar a rotina DQL para refletir as mudanas feitas no GrafTalk. Sempre que voc executar esta rotina, o GrafTalk recriar o grfico com os novos dados.

Como Criar uma Forma GrafTalk Chart


Os passos para uma forma GrafTalk Chart do DataEase so sumarizados abaixo: 1. 2. 3. Defina a sua Query como desejar. Selecione a forma GrafTalk Chart. Grave a rotina utilizando a opo 7 (Grava Rotina) do Menu DQL. Voc precisa gravar a rotina antes de ir adiante, pois o DataEase usa o nome da rotina quando ele d um nome aos arquivos usados pelo GrafTalk. Selecione a opo 2 (Inicia Nova Rotina) do Menu DQL. Isto limpa a memria do computador, para ajudar o DataEase a executar a rotina. Selecione a opo 1 (Executa Rotina), e selecione a rotina que voc acabou de gravar. Se a tela do Estilo de Impresso aparecer, pressione F2 GRAVA. No altere nada nesta tela. O GrafTalk usa os valores que foram incluidos automaticamente a pelo DataEase. Em poucos momentos, o Menu Principal do GrafTalk aparece. Defina o seu grfico como desejado, seguindo as instrues dos manuais do GrafTalk sobre como criar um grfico. Certifique-se de especificar se voc quer mostrar o grfico na tela (o padro adotado pelo GrafTalk), ou imprimi-lo.
5-19

4. 5. 6.

7.

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

8.

Voc no precisa incluir dados, pois os dados viro do DataEase automaticamente. No entanto, voc precisa usar a opo Select Data do GrafTalk para selecionar os dados a serem incluidos no grfico. Veja o Manual do GrafTalk para maiores informaes. Use a opo Chart Utilities para gravar o grfico. No altere o nome padro fornecido pelo DataEase. O DataEase usa este nome para encontrar o grfico quando a rotina for executada. Certifique-se de responder no questo save data?, pois o DataEase fornecer os novos dados a cada vez que o grfico for utilizado. Daqui para a frente, sempre que voc executar esta rotina, o grfico ser automaticamente mostrado (ou impresso). Voc no precisar usar os menus do GrafTalk novamente. Quaisquer alteraes que voc fizer nos dados sero automaticamente refletidas no grfico na prxima vez que voc executar a rotina. Se voc quiser alterar o grfico, voc precisa edit-lo no GrafTalk. Use a opo do GrafTalk Restore Chart para carregar o grfico na memria, e faa as alteraes necessrias. As alteraes sero refletidas na prxima vez que a rotina DQL for executada novamente. O DataEase e o GrafTalk criam nomes de arquivos nicos para o grfico, com base no nome do relatrio DataEase. No altere este nome e no grave os dados atuais com o grfico. Simplesmente pressione F3 para gravar o grfico, e retorne ao Menu Principal do GrafTalk para sair. Voc retorna automaticamente para o menu de onde a rotina do DataEase foi executada.

9.

10.

11. 12.

NOTA:

Forma Etiquetas
A forma etiquetas permite que voc gere rapidamente etiquetas para malas diretas que podem ser usadas com etiquetas pr formatadas. Ela tambm pode ser usadas para qualquer tipo de relatrio com itens um ao lado do outro. A forma etiquetas produz uma sada semelhante forma campo por linha. O DataEase posiciona cada campo da sada em uma linha separada. Os Nomes dos Campos so omitidos da forma. Cada valor de campo comea na margem esquerda. Os campos de cada registro aparecem um abaixo do outro. Uma linha vazia inserida para separar os registros. Quando voc seleciona a forma etiquetas, o DataEase pergunta:

Quantas etiquetas uma ao lado da outra?


5-20 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Digite o nmero de etiquetas a serem impressas uma ao lado da outra (na direo horizontal). O DataEase pergunta:

Quantas colunas por etiqueta?


Digite o nmero de caracteres do maior campo. Quando voc responder a estas duas perguntas, pressione F2 GRAVA para gravar a forma. Por exemplo, ns queremos imprimir os campos NOME COMPLETO, ENDEREO, CIDADE, ESTADO e CEP de cada cliente em etiquetas impressas em grupos de trs horizontais. Ns iremos assumir que o campo mais largo ocupa 25 caracteres. A Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP

end

Em resposta pergunta quantas etiquetas uma ao lado da outra?, responda 3. Em resposta pergunta quantas colunas por etiqueta?, responda 25 (cada coluna corresponde a um caracter). A forma do relatrio e a sada so mostradas a seguir. Forma .items across 2 wide 25 _______________ _________________________ __________ __ _____ .ENd Para imprimir a cidade, estado e CEP numa mesma linha, na forma, 1) mova o cursor para o campo CIDADE, pressionando F10 em seguida e respondendo sim questo suprimir espaos. 2) digite uma vrgula aps o campo CIDADE. 3) Corte e monte os campos ESTADO e CEP para a mesma linha.

Definindo a Sada do Relatrio

5-21

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sada do Relatrio John Adams 8 Smallwood Drive Longbranch, NJ 07740 NOTA: Lynn Anderson 30 Bainbridge Ave Commack, NY 11725

Quando estiver imprimindo em formulrios contnuos de etiquetas, certifique-se de especificar a altura da pgina como sendo 0 na tela Estilo de Impresso. Tambm pode ser necessrio modificar a forma, incluindo linhas vazias extras entre registros.

Forma CrossView
A forma CrossView permite que voc utilize a potncia analtica do DataEase CrossView em conjunto com o DataEase. A forma CrossView permite que voc envie dados gerados por um Relatrio Rpido ou Rotina DQL para o CrossView, e analise os dados na tela do CrossView. Para usar esta forma o DataEase e o CrossView devem estar em diretrios separados, e ambos os diretrios precisam estar no comando DOS PATH. Quando voc seleciona a forma CrossView, o DataEase usa o comando .call para executar o CrossView. Quando o CrossView for executado, a sada do relatrio automaticamente transformada na forma CrossView. Voc pode ento usar o CrossView para analisar os dados. Quando voc pressionar ESC para sair do CrossView, voc retorna automaticamente para o DataEase.

Forma Exportao
A forma exportao cria um arquivo em disco para exportar dados para outros programas. Ela frequentemente usada para misturar um arquivo de dados do DataEase com um documento criado por um processador de textos, como uma carta, ou para exportar dados numricos do DataEase para uma planilha ou um programa grfico comercial. O DataEase fornece oito formas de exportao, incluindo para Lotus 1-2-3, Lotus Symphony, WordPerfect, WordStar, MultiMate e a maioria dos outros programas. Quando voc seleciona a forma exportao, o DataEase pergunta:

Qual a forma de exportao?


e mostra as formas de exportao disponveis:

5-22

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

1: 2: 3:. 4: 5: 6: 7: 8:

Lotus 1-2-3 - Exporta para o Lotus 1-2-3 ou Lotus Symphony. GrafTalk Exporta para o DataEase GrafTalk.

MultiMate - Exporta para um documento MultiMate. WordPerfect - Exporta para um documento WordPerfect. MailMerge - Exporta para um documento WordStar. ASCII Varivel - Exporta registros ASCII de comprimento varivel. ASCII Fixo - Exporta registros ASCII de comprimento fixo. DIF - Exporta registros na forma Data Interchange Format.

Os arquivos criados usando formas de exportao tm a inteno de serem lidos por outros programas. Portanto, as formas no incluem cabealhos, rodaps, ou outras sadas que no sejam dados. Quando estiver criando uma exportao, certifique-se de direcionar a sada do relatrio para disco na tela do Estilo de Impresso, e que nenhuma impressora est selecionada.

Forma Exportao MailMerge


A forma exportao MailMerge gera um arquivo em disco que pode ser misturado com documentos WordStar (como incluir informaes de endereos em cartas). A forma exportao MailMerge mostra um registro por linha. Um retorno de carro usado para separar os registros e uma vrgula usada para separar os campos. Campos Nmero e String Numrica so impressos sem aspas (se forem necessrias aspas, voc pode editar a forma, antes dos separadores de campos). Aps selecionar MailMerge, voc tm a opo de incluir os Nomes dos Campos como a primeira linha da sada (os Nomes dos Campos tambm estaro entre aspas).
ENDEREO, CIDADE, ESTADO e CEP

Por exemplo, suponha que voc quer incluir os campos NOME COMPLETO, de cada cliente na sada do relatrio. A Query a seguinte:

Definindo a Sada do Relatrio

5-23

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP

end
Forma

NOME COMPLETO, ENDEREO, CIDADE, ESTADO, CEP

.ITems _______________,"_____________","_______","______","_____" .ENd Sada do Relatrio


NOME COMPLETO,"ENDEREO","CIDADE","ESTADO","CEP"

John Adams,"8 Smallwood Drive","Longbranch","NJ",07740 Lynn Anderson,"30 Bainbridge Ave.","Commack","NY",11725 Pat Brown,"25 Evergreen Circle","Norwalk","CT",06851

MultiMate
A forma exportao MultiMate gera um arquivo em disco que pode ser misturado com documentos MultiMate. Quando voc cria um arquivo de exportao MultiMate, lembre-se de adicionar a extenso de arquivo .DOC usada pelo MultiMate. A forma exportao MultiMate posiciona cada Nome de Campo numa linha separada. O valor do campo inserido aps o Nome do Campo na forma. O DataEase insere cdigos especiais na forma para delimitar campos (|-) e registros (_|_).
CIDADE, ESTADO e CEP

Por exemplo, suponha que voc quer incluir os campos NOME COMPLETO, ENDEREO, com os Nomes dos Campos na sada do relatrio. A Query a seguinte:

5-24

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP

end
Forma

.items |-NOME COMPLETO|_____________________||-ENDEREO|__________________________||-CIDADE|__________________||-ESTADO|__||-CEP|_____| .ENd .CAll MMERGE -q %m %e Nesta forma, os comandos de formatao do MultiMate (|-) so inseridos em ambos os lados dos Nomes dos Campos e aps cada valor de campo. O comando de formatao (_|_) reconhecido pelo MultiMate como o smbolo do fim de um registro. O comando .call chama um programa de converso especial do DataEase chamado MMERGE que converte a sada para a forma necessria MultiMate. Aps o DataEase gerar a forma: 1. 2. 3. 4. Pressione F2 GRAVA para gravar a forma na memria. Selecione a opo 6 (Define Estilo de Impresso) no Menu DQL. Quando a tela do Estilo de Impresso for mostrada, selecione a sada em disco. Quando voc identificar o nome do arquivo em disco, certifique-se de incluir o PATH DOS do diretrio MultiMate, e o nome do arquivo MultiMate, com a extenso .DOC, como mostrado abaixo:

Definindo a Sada do Relatrio

5-25

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

C:\MM\MALADIR.DOC
Quando voc selecionar Executa Rotina (a opo 1), o arquivo de sada automaticamente formatado para uso como um documento de merge secundrio do MultiMate, com as seguintes restries do prprio MultiMate: O nmero mximo de registros que podem ser convertidos de uma vez 254. Os registros em excesso so descartados. O comprimento mximo de um campo de 156 caracteres. O nmero mximo de campos por registro de 64. Nomes de Campos com mais de 127 caracteres so truncados.

WordPerfect
A forma exportao WordPerfect gera um arquivo em disco que pode ser misturado com documentos WordPerfect. A forma exportao WordPerfect posiciona os valores dos campos em uma linha contnua, separada por um cdigo hexadecimal (@[120A]) que sinaliza o fim de cada campo. Os Nomes dos Campos so omitidos. Por exemplo, suponha que voc quer incluir os campos NOME COMPLETO, ENDEREO, CIDADE, ESTADO e CEP de cada cliente na sada do relatrio. A Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP .

end
Forma

.items _____@[120A]_____@[120A]_____@[120A]_____@[120A]_____@[050A]\ .ENd

5-26

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Nesta forma, o cdigo @[120A] que inserido pelo DataEase gera o cdigo de merge do WordPerfect (^R) aps cada valor de campo. O cdigo @[050A] gera o cdigo de merge do WordPerfect (^E), que significa o final do registro. Aps o DataEase gerar a forma: 1. 2. 3. 4. Pressione F2 GRAVA para gravar a forma na memria. Selecione a opo 6, Define Estilo de Impresso. Quando a tela do Estilo de Impresso aparecer, selecione o destino do relatrio para disco. Quando voc identificar o nome do arquivo, certifique-se de incluir o PATH DOS completo para o diretrio do WordPerfect, ou para o diretrio onde voc quer armazenar o arquivo.

Quando voc gerar Executa Rotina (a opo 1), o arquivo de sada gerado como um arquivo de merge secundrio WordPerfect. No existem restries quanto ao nmero de registros ou comprimento dos campos.

GrafTalk
A forma exportao GrafTalk cria um arquivo para uso externo pelo DataEase GrafTalk. Para criar um grfico GrafTalk como parte integrante de uma rotina DataEase, use a forma GrafTalk Chart, descrita anteriormente neste Captulo. Quando voc seleciona exportao GrafTalk, o DataEase pergunta se voc quer incluir os nomes dos campos na forma. Se voc responder sim, o primeiro registro da sada conter os Nomes dos Campos os quais so usados como cabealhos de colunas pelo DataEase GrafTalk. Se voc responder no, os Nomes dos Campos no sero incluidos na sada do relatrio. Aps criar o arquivo de exportao, execute o GrafTalk e use os dados para criar o grfico. No GrafTalk, especifique a entrada como sendo um arquivo DataEase, e digite o nome DOS do arquivo criado pelo DataEase. Os primeiros oito caracteres dos Nomes dos Campos do DataEase esto disponveis para uso como os nomes das colunas do GrafTalk. Por exemplo, suponha que voc quer produzir um grfico que mostra as informaes do balano final para cada cliente. A Query a seguinte:

Definindo a Sada do Relatrio

5-27

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Query

for CLIENTES ; list records


CLIENTE # ; BALANO FINAL .

end
Forma
CLIENTE#

.ITems ___ __ .ENd

BALFINAL

________ Quando estiver usando o GrafTalk, os nomes dos campos no podero ser maiores que 8 caracteres. Por esta razo, ns modificamos a forma para CLIENTE# e BALFINAL.

NOTA:

Sada do Relatrio CLIENTE# 2235 4009 3525 6420 1248 5512 7860 1514 0900 6002 BALFINAL 595,00 350,00 250,00 725,00 300,00 865,00 525,00 675,00 140,00 425,00

Uma vez criada a forma exportao GrafTalk, voc pode alterar os nomes das colunas, respeitando as seguintes restries: 1. O GrafTalk usa os oito primeiros caracteres dos Nomes dos Campos como os nomes das colunas, os quais podem incluir apenas um espao entre palavras. O primeiro caracter do nome da coluna precisa ser uma letra. Os nomes das colunas precisam estar separados por dois ou mais espaos. A linha com os nomes das colunas precisa estar acima do comando de formatao .items.

2. 3.

Para outras informaes sobre o DataEase GrafTalk, consulte os Manuais de Referncia do DataEase GrafTalk. A seo Reader fornece informaes sobre o Modo Menu do GrafTalk.
5-28 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lotus 1-2-3
Quando voc seleciona a forma exportao Lotus 1-2-3, o DataEase cria um arquivo que pode ser lido pelo Lotus 1-2-3 ou pelo Lotus Symphony. Para criar uma forma exportao Lotus 1-2-3, especifique o nome do arquivo em disco com a extenso apropriada, na tela do Estilo de Impresso: .WKS .WK1 .WRK Para o Lotus 1-2-3 Verso 1 Para o Lotus 1-2-3 Verso 2 Para o Lotus Symphony

Quando o programa Lotus l o arquivo, os dados esto arranjados numa forma colunar na planilha. O DataEase cria uma linha na planilha para cada registro do arquivo de dados fonte, com cada coluna contendo um campo. Como o DataEase exporta valores, no frmulas, os dados exportados pelo DataEase so compatveis com todas as trs formas do Lotus. A forma para uma exportao Lotus 1-2-3 :

.export Lotus 1-2-3


Existem trs consideraes especiais que devem ser ponderadas, quando se produz uma forma exportao Lotus: 1. 2. 3. O DataEase no mostra a disposio dos campos, e voc no pode editar a forma exportao Lotus. A sada para a exportao Lotus no feita na forma ASCII. Envi-la para a tela poder comprometer o funcionamento do sistema. Voc no pode utilizar in groups, in groups with group-totals, ou qualquer tipo de operador estatstico DQL numa exportao Lotus.

ASCII Varivel
A forma ASCII Varivel gera um arquivo ASCII que pode ser facilmente importado pela maioria dos programas mais populares. A forma ASCII Varivel mostra um registro em cada linha. Se o programa empregar caracteres especficos para separar campos e registros, use-os na forma. Se no, utilize um Retorno de Carro para separar registros, e qualquer outro caracter que no aparea nos dados para separar os campos. O DataEase tambm pergunta se voc quer incluir os Nomes dos Campos na primeira linha da sada.
Definindo a Sada do Relatrio 5-29

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Por exemplo, suponha que voc quer incluir os campos NOME COMPLETO, ENDEREO, CIDADE, ESTADO e CEP de cada cliente na sada do relatrio, e especifica um til (~) como o caracter separador de campos. A Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP

end
Forma

NOME COMPLETO~ENDEREO~CIDADE~ESTADO~CEP

.ITems ______________~_________~_____~______~___ .ENd

Sada do Relatrio
NOME COMPLETO~ENDEREO~CIDADE~ESTADO~CEP

John Adams~8 Smallwood Drive~Longbranch~NY~11725 Lynn Anderson~30 Bainbridge Ave.~Commack~NY~07740 Pat Brown~25 Evergreen Circle~Norwalk~CT~06851

Quando escolher os separadores de campos e registros, tenha o cuidado de no usar um caracter que aparece em seus dados. Se voc fizer isto, a leitura do programa interpretar incorretamente os caracteres dos dados como separadores de campos ou registros. Se voc usar qualquer outro caracter que no um Retorno de Carro como separador de registros, digite o caracter no fim da linha da forma, seguido por uma barra invertida. Por exemplo, se o caracter @ usado para separar registros, ele deve ser inserido no fim da linha da forma, seguido por uma barra invertida, como mostrado abaixo : __________~__________~_____~___~_____@\

5-30

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ASCII Fixo
A forma exportao ASCII Fixo cria um arquivo ASCII que pode ser lido por vrios programas, mas ela deve ser usada apenas quando nenhuma outra forma de exportao pode ser usada pelo programa destino. Como cada registro da sada tm o mesmo comprimento, a forma exportao ASCII Fixo produz um arquivo que contm uma cadeia contnua de dados ASCII. No existem separadores de campos e registros. Por exemplo, para incluir os campos NOME COMPLETO, ENDEREO, CIDADE, ESTADO e CEP de cada cliente, a Query a seguinte: Query

for CLIENTES ; list records


NOME COMPLETO ; ENDEREO ; CIDADE ; ESTADO ; CEP .

end
Forma

.items ______________________________________________________\ .ENd O DataEase insere automaticamente uma barra invertida no final da linha da forma, para suprimir o retorno de carro. Este caracter no aparece na sada. Sada do Relatrio
John Adams Lynn Anderson Pat Brown 8 Smallwood Drive 30 Bainbridge Ave. 25 Evergreen Circle Longbranch Commack Norwalk NJ 07740 NY 11725 CT 06851

NOTA:

Como a forma exportao ASCII fixo no possui separadores de campos ou registros, ela pode induzir a erros de importao de dados no programa destino. Por esta razo, ns recomendamos que voc use esta forma apenas se nenhuma outra forma for aceitvel.

Definindo a Sada do Relatrio

5-31

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

DIF (Data Interchange Format)


A forma exportao DIF gera um arquivo na forma citada acima (Data Interchange Format significa Forma de Intercmbio de Dados). A forma DIF foi estabelecida para o VisiCalc, e pode ser usada por vrios outros programas para importar e exportar dados. Quando voc selecione a forma exportao DIF, o DataEase pergunta se voc quer:

Incluir os nomes dos campos na forma?


Se voc responder sim, o DataEase inclui os Nomes dos Campos entre aspas como sendo o primeiro registro, imediatamente antes dos dados. Se voc responder no, os Nomes dos Campos no sero incluidos na forma. DIF uma forma especializada; no tente editar uma exportao DIF, a no ser que voc esteja bem familiarizado com esta forma.

Tipos de Formas Forma Sob Medida


A forma sob medida permite que voc crie qualquer tipo de forma que desejar. Ela particularmente til para gerar cartas ou montar uma sada apropriada para formulrios pr impressos. No entanto, como voc precisa criar a forma desde seu incio, ela s deve ser usada quando nenhuma das formas disponveis se aproximar do que voc deseja. Se uma forma pr definida tiver uma aparncia aproximada da que voc deseja, use a forma pr definida, e edite-a para que ela sirva s suas necessidades. Quando voc seleciona sob medida, o DataEase mostra uma tela vazia. Voc cria a forma a partir deste ponto, usando qualquer combinao de comandos de formatao, texto da forma e campos. A tela vazia na qual voc cria a forma sob medida mostrada abaixo:

5-32

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Figura 5-3

Especificando Campos na Forma Sob Medida


Quando voc cria uma forma sob medida, voc tm duas opes para especificar os campos. Um mtodo selecionar todos os campos dos itens da lista da Query, e simplesmente posicion-los na forma. O outro mtodo especificar apenas os campos que exigem ordenao, agrupamento ou sadas estatsticas como itens da lista. Os campos restantes podem ser diretamente especificados na forma. No entanto, voc no ter o auxlio dos menus para selecionar os Nomes dos Campos, se resolver utilizar este mtodo.

O Movimento do Cursor na Tela da Forma


As formas do DataEase podem ter at 4000 caracteres de largura, e at 16 pginas de altura. Para rolar a tela para a direita ou esquerda, simplesmente mova o cursor para o limite desejado da tela. A tela rolar imediatamente meia tela (40 caracteres) na direo escolhida. Alternativamente, pressione a tecla CTRL enquanto estiver pressionando a tecla de seta, para aumentar a velocidade do rolamento. CTRL move o cursor 40 posies para a direita; CTRL retorna imediatamente para a coluna 1. NOTA: Os comandos de formatao e rotinas descritas nas pginas a seguir podem ser usadas para criar uma forma sob medida, ou para editar uma forma pr definida.

Definindo a Sada do Relatrio

5-33

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma Sob Medida Comandos da Forma


O DataEase fornece oito comandos da forma que controlam a aparncia da sada do relatrio, seja ele mostrado na tela ou impresso. Os comandos so inseridos na forma do relatrio, mas no so mostrados na sada do relatrio. Cada comando precedido de um ponto, e precisa ser posicionado na coluna 1, na margem esquerda da forma. Quando voc digita um ponto na primeira coluna da forma, o DataEase mostra o seguinte menu:

1: items 2: end 3: page 4: header 5: footer 6: group header 7: group trailer 8: call
Os oito comandos da forma so divididos em quatro grupos, sendo sumarizados a seguir: Os comandos obrigatrios so .items e .end. Estes comandos especificam em que lugar da sada do relatrio os valores de campos e sumrios de estatsticas devem ser mostrados. Os comandos obrigatrios precisam estar presentes em qualquer forma. Os comandos a nvel de grupo so .group header e .group trailer. Os comandos de grupo so usados apenas em relatrios onde existirem agrupamentos especificados na Query. Os comandos de agrupamento indicam o incio das reas de cabealho e final de cada grupo de dados. Precisa existir um comando .group trailer para cada .group header na forma do relatrio. E tambm, o nmero de comandos .group header e .group trailer precisa ser o mesmo que o nmero de grupos especificado na Query ou Relatrio Rpido. Os comandos a nvel de pgina so .page, .header e .footer. Os comandos de pgina podem ser usados em qualquer forma de relatrio. Os comandos .header e .footer especificam texto e/ou valores de campo que voc quer imprimir no topo ou na base de cada pgina do relatrio. O comando .page avana o relatrio para uma nova pgina, mesmo que a sada ainda no tenha atingido o final da pgina.
Definindo a Sada do Relatrio

5-34

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando de chamada externa pode ser usado como uma opo no final de qualquer forma. Quando todos os registros tiverem sido processados, e a sada tiver sido criada, o programa especificado pelo comando .call automaticamente executado. Quando o programa completado, o controle retorna para o DataEase. Voc precisa selecionar Inicia Nova Rotina antes de executar uma rotina que contenha um comando .CAll

Os comandos da forma da DQL podem ser usados em qualquer combinao, conquanto que a forma contenha um comando .items, um comando .end e comandos .group header e .group trailer para cada grupo especificado pela Query. A Figura 5-4 mostra uma forma bsica que inclui apenas os comandos obrigatrios .items e .end. Todos os comandos da forma sero discutidos em detalhes a seguir.

Figura 5-4

Comandos da Forma Obrigatrios


Os comandos de formatao obrigatrios so .items e .end. Uma forma precisa conter um comando .items e um comando .ENd, e no pode conter mais de um de cada.

Definindo a Sada do Relatrio

5-35

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O Comando .items
Na forma, a rea entre .header e .items conhecida como a rea de Cabealho do Relatrio. Quaisquer informaes colocadas na rea de Cabealho do Relatrio antes do primeiro comando da forma impressa uma vez apenas, no incio do relatrio. A rea entre os comandos .items e o prximo comando conhecida como a rea dos Itens. Quaisquer informaes colocadas entre o comando .items e o prximo comando impressa uma vez para cada registro processado pela Query. A rea dos Itens normalmente contm todos os campos e textos da forma que voc quer repetidos para cada registro.

O Comando .end
O comando .end especifica o fim do processamento dos registros. A rea a seguir do comando .end conhecida como a rea de Fim do Relatrio. Quaisquer informaes colocadas aps o comando .ENd so impressas uma vez, ao final do relatrio. Se voc colocou um campo aps o comando .end, sero geradas estatsticas para todos os registros utilizados pelo relatrio, e no apenas um grupo individual. Por exemplo, se voc especificou sum para um campo, e colocou este campo aps o comando .end, o total geral para todos os registros ser criado. Se um comando .page for colocado aps todas as linhas da rea de Fim do Relatrio, a impressora posicionar o papel no topo da prxima pgina quando o relatrio terminar. Se um comando .call for usado, ele precisa ser colocado na rea de Fim do Relatrio, e precisa ser a ltima linha da forma. Para ilustrar os comandos da forma obrigatrios, o exemplo abaixo mostra uma Query, uma forma colunar pr definida e a sada do relatrio que imprime os campos ESTADO, ULTIMO NOME e BALANO FINAL de cada cliente. Query

for CLIENTES ; list records


ESTADO ; ULTIMO NOME ; BALANO FINAL

end

5-36

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma ESTADO ULTIMO NOME =================================== .ITems __ ____________ .ENd =================================== Sada do Relatrio ESTADO ULTIMO NOME =================================== NJ Adams NY Anderson CT Brown NY Coope CT Davis =================================== BALANO FINAL $595,00 $350,00 $250,00 $725,00 $300,00 BALANO FINAL $_____

Lembre-se que tudo entre a linha com o comando .items e o prximo comando mostrado uma vez para cada registro processado pela Query. Por exemplo, se ns editarmos a forma, e incluirmos uma linha pontilhada entre cada linha da rea de Itens, como: Forma ESTADO ULTIMO NOME =================================== .ITems ___ ____________ .ENd =================================== A sada alterada seria a seguinte: ESTADO ULTIMO NOME =================================== NJ Adams NY CT NY CT Anderson Brown Cooper Davis BALANO FINAL $595,00 $350,00 $250,00 $725,00 $300,00 BALANO FINAL $_____

===================================
Definindo a Sada do Relatrio 5-37

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Opes dos Comandos da Forma Obrigatrios


Existem duas opes que voc pode incluir ao comando .items para controlar como as informaes da rea de Itens devem aparecer na sada:

O Comando .items nosplit


O comando .items nosplit diz para o DataEase no dividir as informaes de um registro em duas pginas. Quando a sada se aproxima do fim de uma pgina, se no existirem linhas suficientes para imprimir o registro atual, o DataEase avana automaticamente para a prxima pgina. O comando .items nosplit faz com que cada sada de um registro se inicie numa pgina nova, e usa quantas pginas por registro tantas necessrias.

O Comando .items across N wide M


Normalmente, as informaes da rea de Itens so impressas uma vez para cada registro em linhas de sada verticais. O comando .ITems across N wide M permite que voc imprima estas informaes tanto horizontalmente quanto verticalmente (como exigem frequentemente as etiquetas para malas diretas). Quando voc usa esta opo, o DataEase imprime N registros um ao lado do outro na pgina, comeando cada novo registro a cada M caracteres. Voc pode definir qualquer valor para N e M, enquanto o produto N * M no exceder a largura total especificada para o relatrio. Quando estiver usando o comando .items across N wide M, qualquer um dos valores poder ser especificado primeiro. Se voc especificar um e no o outro, o DataEase vai dividir a largura do dispositivo de sada pelo valor especificado, para calcular o outro valor. Por exemplo, se voc estiver usando uma impressora de 80 colunas, .items across 3 imprimir o segundo registro na coluna 27, e o terceiro na coluna 53 (80 / 3 = 26 arredondado). As opes nosplit e/ou across N wide M precisam aparecer aps o comando .items na mesma linha da forma. Estas duas opes no podem ser usadas em conjunto com outros comandos da forma.

Como Usar o Comando .items across


Se voc est imprimindo etiquetas para malas diretas, e o formulrio possui duas etiquetas por linha e cada etiqueta (incluindo o espao entre etiquetas) tiver 30 caracteres de largura, voc pode inserir o comando .items across N wide M numa forma pr definida, como a seguir:

5-38

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma .items across 2 wide 30 _____________ ________________ _______________, __ _____ .ENd A sada resultante do relatrio ser semelhante a esta, com a segunda etiqueta comeando na coluna 31: Sada do Relatrio John Adam 8 Smallwood Drive Longbranch, NJ 07740 Pat Brown 25 Evergreen Circle Norwalk, CT 06851 NOTA: Lynn Anderson 30 Bainbridge Ave. Commack, CT 11725 Paul Carter 64 Lake Street Alameda, CA 94501

A forma etiquetas, a qual criada para acelerar a impresso de etiquetas de endereamento, incorpora a opo .items across N wide M, perguntando pelos valores de N e M.

Comandos da Forma a Nvel de Grupo


Os comandos a nvel de grupo so .group header e .group trailer. Os comandos a nvel de grupo so usados com uma Query que inclui os parmetros in groups ou in groups with group-totals (ou groups, em Relatrios Rpidos). Os comandos a nvel de grupo controlam como e onde as informaes dos campos agrupados pela Query aparecem na sada. Os comandos da forma a nvel de grupo so sempre utilizados em pares. Precisa existir um comando .group header e um .group trailer na forma para cada item da lista que possua in groups ou in groups with group-totals na Query. Para cada comando .group header na forma precisa existir um .group trailer correspondente. Se voc tm mais de um .group header e .group trailer na forma, a correspondncia entre cada um deles a seguinte: o primeiro .group header corresponde ao ltimo .group trailer, o segundo .group header corresponde ao penltimo .group trailer, e assim por diante. A correspondncia entre os comandos mostrada na Figura 5-5.

Definindo a Sada do Relatrio

5-39

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Figura 5-5 A rea entre um comando .group header e o prximo comando da forma conhecida como a rea de Cabea de Grupo. Quaisquer informaes colocadas na rea de Cabea de Grupo impressa uma vez no incio de cada grupo. A rea entre o comando .group trailer e o prximo comando conhecido como a rea de Final de Grupo. Quaisquer informaes colocadas na rea de Final de Grupo sero impressas uma vez no final de cada grupo. Campos com estatsticas a nvel de grupo precisam ser colocadas na rea de Final de Grupo. Um campo que possui estatsticas especificadas na Query podem aparecer em mais de uma posio na forma. Por exemplo, voc pode querer que o campo BALANO FINAL aparea na rea .items, o total deste campo para cada grupo na rea .group trailer, e o total do campo BALANO FINAL no final do relatrio. NOTA: Voc pode incluir um comando .page na rea de Cabea de Grupo ou na rea de Final do Grupo, para imprimir cada grupo numa pgina separada.

O exemplo desta e da prxima pgina contm uma Query, a forma e parte da sada para um relatrio que pede para o DataEase imprimir os campos ESTADO, ULTIMO NOME e BALANO FINAL de cada cliente do Formato CLIENTES. Totais a nvel de grupo so incluidos na sada. Query

for CLIENTES ; list records ESTADO in groups with group-totals ;


ULTIMO NOME ;

end
5-40

BALANO FINAL :

item sum .
Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma ESTADO ULTIMO NOME BALANO FINAL =================================== .GRoup header __ .ITems .GRoup trailer __________ $_______

Total do Estado $_______ .ENd =================================== Total Geral $_______ Neste exemplo, o texto de .group header o valor do campo ESTADO. O texto do comando .group trailer (Total do Estado), o qual no o valor de um campo, digitado diretamente na forma onde voc quer que o texto aparea na sada do relatrio. Alm de totais de grupos, esta forma inclui uma estatstica de total geral, a qual aparece aps o comando de .end Sada do Relatrio ESTADO ULTIMO NOME BALANO FINAL =================================== CT Brown $250,00 Davis $300,00 FL Total do Estado $550,00 McDonald $245,00 Total do Estado $245,00 Adams Hill $595,00 $525,00 Total do Estado $1.120,00 Anderson Cooper Evans Ivers Jenkins $350,00 $725,00 $865,00 $675,00 $140,00

NJ

NY

Total do Estado $2.755,00 =================================== Total Geral $4.850,00


Definindo a Sada do Relatrio 5-41

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Criando um Relatrio Sumrio


Em contraste com um relatrio que combina valores de campos com estatsticas a nvel de grupos, voc tambm pode criar um relatrio que possui estatsticas de grupo, mas no possui dados de registros individuais. Para fazer isto, coloque o campo agrupado na rea de Final de Grupo da forma. Exclua todos os campos da rea .items. Voc ainda precisa ter um comando .group header e .items, mesmo que no existam dados nestas reas.

Comandos da Forma a Nvel de Pgina


Os comandos da forma a nvel de pgina dizem ao DataEase que informaes imprimir no topo e no final de cada pgina, alm de mostrar quando avanar para uma nova pgina. Os comandos .page, .header e .footer so explicados abaixo. Um exemplo que usa o cabealho do relatrio, o comando .header e o comando .footer mostrado na prxima pgina.

O Comando .page
O comando .page diz ao DataEase para avanar imediatamente para o topo da prxima pgina, antes de continuar a imprimir qualquer outra sada. Se o comando .page for colocado na primeira linha da rea de Cabea de Grupo, cada grupo iniciar sua impresso numa nova pgina. Se ele for colocado na primeira linha da rea do Fim do Relatrio, o DataEase avanar para o topo da prxima pgina quando o relatrio terminar sua impresso. Se ele for colocado na primeira ou ltima linha da rea de Itens, cada registro ser impresso em uma pgina nova (coloc-lo entre campos faz com que o registro seja dividido). Qualquer nmero de comandos .page pode ser usado numa forma.

O Comando .header [N]


O comando .header especifica as informaes a imprimir no topo de cada pgina, durante o relatrio. O comando .header deve ser colocado no incio da forma. S pode existir um comando .header numa forma, embora ele seja opcional. A rea entre o comando .header e o prximo comando da forma conhecida como a rea de Cabealho da Pgina. Quaisquer informaes colocadas na rea de Cabealho da Pgina so impressas uma vez, no topo de cada pgina do relatrio. O uso mais comum de um Cabealho da Pgina repetir os cabealhos de colunas no topo de cada pgina de um relatrio que imprime mais de uma pgina. Se voc no quiser que o cabealho aparea antes de uma determinada pgina, voc pode incluir o parmetro opcional N no comando .header, onde N um nmero de pgina. Por exemplo, se voc especificar @SUBMINOR HEAD = Forma

5-42

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Por exemplo, a seguinte forma: PROGRAMAO DE CURSOS DA EQUACAO CIDADE DATA LOCAL ===================================

produz um relatrio cujo ttulo (Programao de Cursos da Equacao) aparece apenas na primeira pgina, e as informaes de cabealhos de colunas (CIDADE, DATA e LOCAL) aparecem no topo de cada pgina. importante entender a diferena entre a rea de Cabealho do Relatrio (a rea acima do comando .header) e a rea de Cabealho da Pgina. As informaes da rea de Cabealho do Relatrio so impressas uma vez, na primeira pgina do relatrio. As informaes da rea de Cabealho de Pgina so impressas uma vez no incio de cada pgina do relatrio. Note que, se o relatrio incluir uma rea de Cabealho do Relatrio e uma rea de Cabealho de Pgina a ser impressa na primeira pgina do relatrio, o Cabealho de Pgina ser impresso antes do Cabealho do Relatrio. No exemplo acima, para no imprimir os cabealhos de colunas antes do ttulo do relatrio, ele colocado sob o ttulo do relatrio na rea de Cabealho (impresso apenas na pgina 1) e repetido na rea de Cabealho da Pgina, usando .header 2 (impresso em cada pgina, a partir da pgina 2).

O Comando .footer [N]


O comando .footer especifica as informaes a serem impressas no rodap de cada pgina de um relatrio. O comando .footer deve ser colocado no incio da forma, logo aps o comando .header. S pode existir um comando .footer na forma, embora este comando seja opcional. A rea entre o comando .footer e o prximo comando de formatao conhecida como a rea de Rodap de Pgina. Quaisquer informaes colocadas na rea de rodap da Pgina so impressas uma vez ao final de cada pgina. O uso mais comum de um rodap de pgina a colocao de nmeros de pginas impressas, totais intermedirios, rodaps, etc, na base de cada pgina de um relatrio.

Definindo a Sada do Relatrio

5-43

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Se voc no quiser que as informaes da rea de rodap da Pgina sejam impressas at uma determinada pgina, voc pode incluir o parmetro opcional N no comando .footer, onde N um nmero de pgina. Por exemplo, se voc especificar .footer 3 na forma, as informaes de rodap comearo na pgina 3, e sero impressas em todas as pginas seguintes. Campos com estatsticas de sumarizao (por exemplo: SALRIO : sum) podem ser colocadas na rea de Rodap da Pgina. Estatsticas de campos colocadas na rea de Rodap da Pgina representam as informaes estatsticas para todos os registros processados at o final da pgina atual (de modo diferente do comando .end, onde as informaes estatsticas usam os valores de todos os registros processados pela Query).

O Comando .call
O comando .call um comando da forma que permite que voc execute um programa ao final de uma rotina DataEase. O DataEase vai se transferir para o disco ou para a memria expandida (EMS), liberando assim a maior memria convencional possivel para o programa a ser executado. O comando .call inserido aps o comando .end. O comando .call precisa estar na ltima linha da forma do relatrio. Ele executado por ltimo, no importando onde ele aparea na forma. Quando a rotina DataEase completada, o DataEase libera o mximo de memria possvel, e imediatamente chama o programa especificado. O programa chamado precisa estar no mesmo diretrio do DataEase, ou num outro diretrio especificado no comando DOS PATH. Quando o programa terminar a sua execuo, o controle retorna automaticamente para o menu do DataEase que executou a rotina. A sintaxe para o comando .call a seguinte:

.call PROGRAMA [/D] [%e] [%r]


PROGRAMA e o nome do programa a ser executado (com extenses .BAT, @BULLET 1 = A opo /D gera um nome de arquivo nico para ser usado pelo programa para armazenar qualquer sada que possa ser gerada. A opo %e retorna o nome do arquivo contido na tela de Estilo de Impresso. Este o nome do arquivo de dados criado pelo DataEase, a ser usado pelo programa chamado. A opo %r retorna o nome DOS da rotina DataEase. Ela usada para retornar o controle para o DataEase quando o programa chamado terminar a sua execuo.

5-44

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Existe um exemplo do comando .call a seguir. O seguinte comando chama o DataEase GrafTalk no fim de uma rotina, e desenha um grfico usando os dados gerados pelo comando list records da Query (ou Define Itens a serem Listados, em Relatrios Rpidos). Os dados gerados pela Query so armazenados num arquivo cujo nome est na tela do Estilo de Impresso.

.call GrafTalk /D %e %r
O parmetro /D cria um nome de arquivo nico para a definio do grfico no GrafTalk. O parmetro %e passa o nome do arquivo especificado na tela do Estilo de Impresso. O parmetro %r passa o nome do arquivo da rotina DataEase. NOTA: Uma rotina que contm o comando .call no pode ser executada enquanto estiver carregada na memria. Voc precisa antes descarregar a rotina, usando a opo Inicia Nova Rotina, no Menu DQL (certifique-se de grav-la primeiro). Use ento Executa Rotina, e selecione o nome apropriado da relao.

Editando Formas As Teclas de Funo para a Edio


Quando voc cria uma forma sob medida, ou modificar uma forma pr definida criada pelo DataEase, siga as mesmas rotinas bsicas que voc seguiu para definir ou modificar um Formato de Entrada de Registros. As teclas de funo possuem funes de edio, como mostrado abaixo: Tecla de Funo F2 GRAVA F3 CORTA F5 COPIA F6 MONTA F7 DEL LINHA F8 INS LINHA SHIFT-F9 IMPRIME F10 CAMPO Uso Grava a forma na memria temporria do computador. Remove campos ou texto para montagem posterior ou excluso. Copia campos e/ou texto. Monta textos cortados ou copiados na forma. Exclui a linha na qual est o cursor. Insere uma linha imediatamente acima da linha onde est o cursor. Imprime a especificao da rotina/relatrio. Inclui o campo especificado na forma do relatrio, na posio atual do cursor.

Definindo a Sada do Relatrio

5-45

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOTA:

Quando estiver editando uma forma, tenha em mente que todos os comandos da forma precisam comear com um ponto (.) na coluna 1 da margem esquerda da forma. Embora todos os comandos da forma possam ser editados, movidos e excluidos como qualquer texto, voc precisa ter cuidado para trocar ou reposicionar estes comandos, pois eles controlam como e quando as vrias linhas da sada so criadas.

Texto da Forma
Voc pode editar, excluir, ou alterar completamente qualquer texto da forma. Os ttulos do relatrio, nmeros de pginas, informaes dos cabealhos de colunas, linhas demarcatrias e outros textos da forma podem ser trocados sem afetar a sada dos dados. Por exemplo, se voc estiver usando a forma colunar padro, voc poder querer alterar os cabealhos de coluna especificados pelo DataEase. Simplesmente mova o cursor para o texto, e digite o texto desejado por cima do antigo. Alternativamente, voc pode pressionar F7 DEL LINHA para excluir os Nomes de Campo padro. Pressione ento F8 INS LINHA para inserir uma linha vazia, e digite seus prprios cabealhos de coluna.

O Conjunto de Caracteres ASCII Extendido


Quando voc pressiona ALT-F10, o DataEase lhe d o acesso ao conjunto de caracteres ASCII Extendido. Estes caracteres podem ser usados para criar vrios efeitos especiais na forma, incluindo molduras, de borda simples ou dupla, em volta de todo ou parte do relatrio. Consulte o Volume 2, Captulo 2, Definio de Formatos e Relaes, para maiores informaes sobre como usar os caracteres ASCII especiais na definio e modificao de Formatos.

Incluindo e Modificando Campos Como Incluir ou Modificar Campos


Voc pode incluir ou modificar campos numa forma da mesma maneira que voc costuma fazer nos Formatos. Simplesmente posicione o cursor onde voc quer incluir o campo (ou dentro do campo que voc quer modificar) e pressione F10 CAMPO. Se voc estiver incluindo um campo, o DataEase mostra a tela de Definio dos Campos do Relatrio, alm de um menu com os nomes de todos os campos de sada especificados na Query do relatrio (ou na opo Define Campos a serem Listados, em Relatrios Rpidos), como mostrado na Figura 5-6. Selecione o campo desejado, posicionando a barra do menu sobre o item, e pressione RETURN. O campo (representado por um retngulo negro) imediatamente inserido na posio do cursor dentro da tela da forma.
5-46 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Figura 5-6 Se voc estiver modificando um campo, quando voc posicionar o cursor dentro do mesmo e pressionar F10 CAMPO, a definio atual do campo ser mostrada na Tela de Definio dos Campos do Relatrio. Se o campo que voc especificou for um nmero, o DataEase vai perguntar pelo tipo do nmero. Se voc quiser modificar a apresentao do nmero no relatrio, voc pode mudar o tipo na forma (por exemplo, de Ponto Flutuante para Inteiro, ou Ponto Fixo). Esta modificao afeta apenas a apresentao do campo no relatrio, no a definio do campo atual. Se voc quiser incluir um campo no especificado na Query, ignore as opes do menu e pressione RETURN. O DataEase mostra ento uma janela dentro da tela de Definio dos Campos do Relatrio (veja a Figura 5-7).

Figura 5-7

Definindo a Sada do Relatrio

5-47

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Na janela da Frmula do Campo do Relatrio, voc pode digitar o nome de um campo de qualquer formato especificado na Query, uma varivel do sistema (como current date, current page number, etc), ou uma Frmula de Derivao com at 4000 caracteres de comprimento. Voc no pode usar o operador all, ou quaisquer operadores de ordenao ou agrupamento, alm de operadores estatsticos (exceto operadores de estatsticas condicionais) na Frmula do Campo do Relatrio. Voc pode usar operadores de estatsticas condicionais na frmula. Quando a rotina DQL (ou relatrio) executada, os campos digitados nesta janela so incluidos na sada do relatrio como se fossem itens da lista especificados na Query. Em certos casos, se voc identificar erroneamente um campo numa frmula de campo do relatrio, o DataEase poder at usar o campo correto. Por exemplo, se o campo ENVIAR PARA estiver erradamente identificado como ENVIAR PARA ENDERECO em uma frmula de campo do relatrio, o DataEase ir aceitar a frmula, e usar o valor do campo ENVIAR PARA.

Tamanhos e Tipos de Campos


A segunda questo da tela de Definio dos Campos do Relatrio o Comprimento do Campo. Se voc quiser, voc pode especificar um comprimento maior ou menor que o comprimento prprio do campo. Voc pode fazer isto para evitar o truncamento de um valor de sada ou para eliminar espaos desnecessrios na sada do relatrio. Novamente, estas alteraes s tm efeito na sada do relatrio atual, no afetando as definies atuais dos campos. Se voc especificou mais de uma estatstica para o campo na Query, o DataEase tambm vai perguntar que valor estatstico deve ser mostrado nesta poro do relatrio. Se voc quiser que o valor do campo aparea, especifique item; se voc quiser o total dos valores do campo (como para um total de grupo ou total geral), especifique sum, e assim por diante. Dependendo do Tipo de Campo especificado, o DataEase far de uma a trs questes adicionais quando voc estiver criando ou modificando uma forma. Se voc especificar um campo Nmero, o DataEase vai perguntar:

Suprimir os separadores de milhares?


Pressione RETURN para aceitar a resposta padro no, e incluir os pontos separadores de milhares na sada. Responda sim se voc no quiser os pontos separadores na sada do relatrio. Voc pode usar isto para uma forma de exportao na qual os pontos so usados como separadores de registros. Se voc especificar um nmero no inteiro, o DataEase vai perguntar:

Suprimir a decimal?
5-48 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Pressione RETURN para aceitar a resposta padro de no, e incluir a vrgula decimal na sada. Responda sim se voc no quiser a vrgula decimal impressa na sada. Voc pode usar isto para uma exportao onde o programa destino trabalha com um ponto decimal assumido, ou se o valor do campo normalmente no possui decimais (por exemplo, porcentagens, etc).

Suprimindo Espaos
Para qualquer tipo de campo, o DataEase pergunta:

Suprimir Espaos?
Pressione RETURN para aceitar a resposta padro no, e incluir os espaos na sada. Responda sim se voc no quiser que os espaos extras apaream na sada. Isto permite que voc imprima campos relacionados (como PRIMEIRO NOME e ULTIMO NOME) adjacentes um ao outro sem vrios espaos intermedirios. Se voc responder sim, todos os espaos no usados antes do primeiro caracter e aps o ltimo sero descartados. Os outros campos da mesma linha sero deslocados para a esquerda do nmero correspondente de caracteres ignorados, na sada do relatrio. Por exemplo, se a forma possuir os campos PRIMEIRO NOME e ULTIMO NOME: ____________ Resposta sim: Resposta no: __________ John Adams John Adams

Se a forma possuir uma linha composta apenas por campos (sem texto da forma), e todos os campos estiverem definidos para Suprimir Espaos, a linha no ser impressa se todos os campos de um mesmo registro estiverem vazios. Em vez disto, a linha vazia ser movida para o fim da rea de impresso. Esta caracterstica pode ser de muita utilidade se voc estiver imprimindo etiquetas de mala direta com um nmero varivel de linhas (como linhas opcionais para o ttulo da pessoa ou um segundo endereo). Todas as linhas so impressas juntas, sem linhas vazias no apropriadas, e a primeira linha da prxima etiqueta (ou formulrio pr impresso) ser sempre impressa no local correto. Para outras informaes sobre a impresso em etiquetas, veja a forma etiquetas, discutida anteriormente neste Captulo, e o exemplo do Estilo de Impresso: Imprimindo em Etiquetas Contnuas, no final deste Captulo.

Definindo a Sada do Relatrio

5-49

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Gravando uma Forma


Aps inserir ou modificar campos na forma, pressione F2 GRAVA para incluir o campo na forma. Quando terminar as incluses ou alteraes, pressione F2 GRAVA novamente para gravar a forma na memria. Selecione ento a opo 7, Grava Rotina no Menu DQL. Isto gravar a forma no disco, como parte da rotina sendo definida.

Os Comandos de Controle da Impressora


O DataEase fornece vrios comandos especiais para controlar a impressora, que voc pode usar os destaques e o espaamento em qualquer parte do relatrio. Alm dos comandos fornecidos pelo DataEase, voc pode enviar qualquer cadeia de caracteres de controle para a impressora. Quando voc especifica a cadeia de caracteres de controle na forma, voc precisa delimit-la com colchetes, e preced-la com um sinal @, como por exemplo: @[1B4333]. No entanto, o DataEase no verifica estas cadeias para validar ou antecipar os resultados. Consulte o manual de sua impressora para maiores informaes sobre as cadeias de controle aceitas por ela.

O Smbolo @
O comando @ permite que voc destaque informaes do relatrio em negrito, itlico, sublinhado, ou qualquer caracterstica especial suportada pela sua impressora. O @ pode ser colocado em qualquer lugar da forma, exceto numa linha onde exista um comando de formatao. O smbolo @ precisa ser seguido por um caracter especial ou por um grupo de caracteres que representa a funo da impressora que voc quer usar. O smbolo @ e seus caracteres seguintes no ocupam espao na sada do relatrio; eles no avanam a cabea de impresso. Os comandos @ so ignorados quando o relatrio mostrado na tela ao invs de uma impressora, ou seja, o texto que aparece colorido no Formato de Entrada de Registros no mostrado colorido na forma entrada de registros. No entanto, o comando de impresso correspondente usado. Por exemplo, se texto destacado com o comando @u durante a Entrada de Registros, quando a forma entrada de registros for mostrada, este texto estar sublinhado. Consulte a seo sobre destaques de campos, no Volume 2, Captulo 2, Definio de Formatos e Relaes, para maiores informaes. Se o relatrio for enviado para disco, a sada vai ser dependente da impressora identificada na tela do Estilo de Impresso. Se houver uma impressora definida na tela do Estilo de Impresso, os cdigos de controle da impressora gerados pelos comandos @ sero gravados no disco como cdigos de impressora. Se no houver nenhuma impressora definida na tela do Estilo de Impresso, os comandos @ sero ignorados.
5-50 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Definindo a Sada do Relatrio

5-51

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOTA:

Se voc quiser que o sinal (@) aparea na sada do relatrio, digite dois @ consecutivos (@@) na forma.

Se a definio da sua impressora incluir opes de efeitos especiais, voc poder acess-los no relatrio utilizando o sinal @ e um dos comandos especificados abaixo na forma. Para informaes mais completas sobre como definir impressoras, veja o Volume 2, Captulo 4, Administrao do Sistema. Comando u nu b nb i ni s1 ns1 s2 ns2 Efeito de Impresso Sublinhado Desliga sublinhado Negrito Desliga negrito Itlico Desliga itlico Efeito especial 1 Desliga efeito especial 1 Efeito especial 2 Desliga efeito especial 2

Por exemplo, se voc digitar a seguinte cadeia na forma do relatrio:

itlico.@ni
O comando @i far a impressora ativar o tipo itlico. O comando @ni far a impressora desativar o tipo itlico. NOTA: Existe um total de nove efeitos especiais (s1-9).

Caracteres por Polegada (CPP)


Se a definio de sua impressora incluir vrias opes de caracteres por polegada, voc pode acess-las especificando o sinal @ e algum dos seguintes comandos na forma: Comando c1 c2 c3 c4 Efeito de Impresso Primeiro conjunto de CPP (Caracteres Por Polegada) da definio da impressora. Segundo conjunto de CPP da definio da impressora. Terceiro conjunto de CPP da definio da impressora. Quarto conjunto de CPP da definio da impressora.

5-52

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Por exemplo, se a definio de sua impressora suporta 10, 12, 16 e 4 CPP, e o padro 10 (o primeiro especificado), se voc digitar o seguinte comando na forma do relatrio:
@c3 Ser impresso em dezesseis caracteres por polegada.@c1

O comando @c3 far com que a impressora ative o tipo de 16 CPP. O comando @c1 far com que a impressora ative o tipo padro de 10 CPP. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre definies de impressoras.

Linhas por Polegada (LPP)


Se a definio de sua impressora incluir vrias opes de linhas por polegada, voc poder acess-las especificando o comando @ e algum dos comandos seguintes na forma: Comando l1 l2 l3 l4 Efeito na Impresso Primeiro conjunto de LPP (Linhas Por Polegada) da definio da impressora. Segundo conjunto de LPP da definio da impressora. Terceiro conjunto de LPP da definio da impressora. Quarto conjunto de LPP da definio da impressora.

Por exemplo, se a definio da sua impressora suporta 6, 8, 12 e 16 LPP, e o padro 6, se voc digitar o seguinte comando: @l4 Deve aparecer no menor conjunto de LPP disponvel, neste caso, 16 LPP (como existem mais de 6 linhas por polegada, o texto mais comprimido). Isto se chama impresso comprimida.@l1 O comando @l4 far a impressora ativar o tipo 16 LPP. O comando @l1 far a impressora ativar o tipo padro 6 LPP. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre definies de impressoras.

Definindo a Sada do Relatrio

5-53

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Tamanho da Pgina
O DataEase cria e transmite cadeias de caracteres de controle da impressora com base no uso dos comandos de formatao especiais @. No entanto, eles no ajustam quebras de pginas, contabilizando as alteraes no espaamento feitas por smbolos @. O DataEase fornece quebras de pginas automticas com base apenas no tamanho da pgina, margens, e linhas por polegada especificadas na tela do Estilo de Impresso. Portanto, se no meio de uma pgina, voc trocar o tipo de caracter e passar a imprimir menos linhas por polegada, a pgina poder se encher antes do DataEase fornecer a quebra de pgina automtica. Se voc alterar o estilo para imprimir mais linhas em uma polegada, poder sobrar espao na base de uma pgina. Problemas similares podem ocorrer se voc alterar os tamanhos dos tipos no meio de uma linha. Voc pode compensar estes ajustes de formatao especificando tamanhos de pginas e margens diferentes na tela do Estilo de Impresso. Por exemplo, quando voc estiver usando LPPs mais comprimidas ou CPPs menores, especifique um tamanho de pgina menor; com LPPs menos comprimidas, use um tamanho de pgina maior.

A Especificao do Estilo de Impresso


A tela de Especificao do Estilo de Impresso um Formato do Sistema DataEase que usado para especificar o destino, margens, espaamento, tamanho do tipo e outras caractersticas fsicas para a sada do relatrio. Quando voc seleciona a opo 6 (Define Estilo de Impresso) no Menu DQL, o DataEase mostra a tela do Estilo de Impresso (mostrada abaixo). Os valores que voc digitar nesta tela definiro o destino do relatrio e a aparncia fsica da sada do relatrio.

5-54

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Figura 5-8 NOTA: Se voc no especificar um Estilo de Impresso, a sada ser enviada para a tela, como padro.

Definindo o Destino do Relatrio


A primeira opo na tela do Estilo de Impresso permite que voc escolha o destino do relatrio. Voc pode enviar um relatrio para a tela, uma impressora ou um arquivo em disco. O destino padro Tela. Cada destino definido como se segue: Tela: mostra o relatrio no monitor do computador. Impressora: envia o relatrio para uma impressora, para gerar sada impressa. Disco: cria um arquivo em disco para armazenamento. O arquivo pode ser impresso posteriormente ou usado como entrada por outro programa.

Cada destino de relatrio descrito em detalhes a seguir.

Destino do Relatrio: Tela


Se voc selecionou Tela como o destino do relatrio, voc no precisa responder nenhuma das outras questes da tela do Estilo de Impresso. Simplesmente pressione F2 GRAVA para gravar o destino. Quando um relatrio enviado para a tela, ele sempre faz uma pausa quando cada pgina mostrada. Voc precisa pressionar a barra de espao para continuar a gerao do relatrio.
Definindo a Sada do Relatrio 5-55

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Rolamento da Tela do Relatrio


Quando um relatrio enviado para a tela, as seguintes teclas so usadas para rolar o relatrio: Tecla HOME END PgDn PgUp CTRL CTRL Rola para Incio do relatrio Fim do relatrio Prxima tela Tela anterior Meia tela (40 caracteres) para a direita Meia tela (40 caracteres) para a esquerda

Relatrios com Dois Destinos


Se um relatrio normalmente enviado para a tela mas pode ser ocasionalmente enviado para a impressora, preencha os campos como se o relatrio fosse impresso sempre, e retorne para a tela do Estilo de Impresso para trocar o destino para Tela antes de pressionar F2 GRAVA. Se voc tambm instruir o DataEase para mostrar a tela do Estilo de Impresso antes de gerar o relatrio, quando o relatrio for gerado voc precisa apenas mudar o destino do relatrio para Impressora. Se um relatrio for normalmente impresso, mas ocasionalmente precisar ser exportado, no especifique nenhuma impressora (eles podem causar problemas no programa destino). Ao invs disto, escolha o destino para Disco. Quando o relatrio for gerado, especifique o nome da impressora e pressione F3 VER PADRO para gerar os cdigos de controle da impressora.

Destino do Relatrio: Disco


Se voc selecionar Disco como o destino do relatrio, voc tambm precisa identificar o nome e diretrio do arquivo em disco no qual voc quer armazenar o relatrio. Digite esta informao no campo que segue a mensagem: Se a sada for para disco, qual o nome do arquivo: O DataEase aceita ou uma letra indicando o drive ou o diretrio completo. Por exemplo, ou

C:\WP\ENDER.DTA
5-56 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ou

A:IMPRIME.DOC
so aceitveis. NOTA: Se voc especificar o destino em Disco e definir tambm uma impressora, os cdigos de controle desta impressora sero incluidos no arquivo em disco. O DataEase assume que o relatrio ser eventualmente impresso, em vez de ser processado por outro programa. Se voc est planejando processar o relatrio em lugar de imprimi-lo mais tarde, voc deve manter os campos relativos impressora vazios.

Destino do Relatrio: Impressora


Se voc selecionar Impressora como sendo o destino do relatrio, voc precisa responder vrias perguntas sobre sua impressora e a maneira que voc quer que o relatrio seja impresso. As pginas seguintes discutem as vrias questes relativas a impressoras em detalhes (aps a pgina que fala sobre Modificao do Estilo de Impresso). Em primeiro lugar, voc precisa especificar o nome da impressora que voc quer usar. Todas as impressoras ligadas ao sistema esto definidas na opo Define Impressoras da Administrao do Sistema. Para mostrar o nome e especificaes da impressora padro como gravadas no Formato Configurao do Sistema, pressione F3 PADRO. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre definies de impressoras. Quando perguntado pelo nome da impressora, a resposta mais flexvel colocar um asterisco (*) no campo. Quando o relatrio for gerado, a sada ser enviada para a impressora padro especificada no Formato Configurao do Sistema. Alternativamente, voc pode especificar o nmero da impressora (Local 1, Local 2, Rede 1 ou Rede 2) como relacionadas no Formato Configurao do Sistema. Quando o relatrio executado, o DataEase usa os cdigos de controle apropriados para a impressora, alm das informaes da tela do Estilo de Impresso, quando o relatrio estiver sendo gerado.

Modificao do Estilo de Impresso


A mensagem na tela do Estilo de Impresso que segue o destino do seu relatrio ou rotina :

Permitir a modificao do Estilo?


Definindo a Sada do Relatrio 5-57

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Se voc responder sim, o DataEase mostrar a tela do Estilo de Impresso a cada vez que voc executar a rotina, para que voc possa alterar as especificaes atuais. Se voc alterar o Estilo de Impresso sem gravar a rotina posteriormente, as alteraes no sero gravadas no disco. Se voc gravar a rotina aps fazer modificaes, a Especificao do Estilo de Impresso alterada ser gravada no disco, substituindo a antiga. Se voc respondeu sim a esta questo, mas quiser executar esta rotina sem alterar o Estilo de Impresso, simplesmente pressione F2 GRAVA quando a tela do Estilo de Impresso aparecer. O DataEase vai ento executar a rotina no modificada. Se voc respondeu no a esta questo, o DataEase no vai mostrar esta tela. Ele vai executar a rotina imediatamente, usando as opes do Estilo de Impresso gravadas com a rotina. Aps executar uma rotina, voc pode chamar a ltima tela de Estilo de Impresso usada, atravs de F5 FORMATO PADRO. Se voc quiser apenas alguns campos do Estilo de Impresso antigo, posicione o cursor no campo e pressione F6 CAMPO PADRO. No entanto, uma vez que voc saia da rotina ou carregue uma nova rotina, voc s poder acessar a Especificao do Estilo de Impresso que foi gravado com a rotina.

Completando a Especificao: Tamanho da Pgina


Aps escolher o destino do relatrio, pressione F3 PADRO se o relatrio estiver sendo enviado para uma impressora, ou sendo enviado para disco com cdigos de controle de impressora anexados (para impresso posterior). O DataEase mostra as respostas padro para as questes remanescentes. Voc pode trocar cada uma destas respostas como explicado abaixo: A prxima questo :

Pausa aps cada pgina?


Responda sim se voc estiver imprimindo em folhas soltas ou envelopes. O DataEase vai fazer uma pausa aps cada pgina, permitindo a troca do papel. Pressione qualquer tecla para continuar a impresso. Responda no se voc estiver imprimindo em formulrios contnuos. A prxima parte da tela do Estilo de Impresso permite que voc altere os valores padro para a Altura da Pgina, a Largura da Pgina e a Posio Inicial. Digite a Altura da Pgina e a Largura da Pgina se alguma delas for diferente da padro.

5-58

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O campo Posio Inicial deve ser deixado vazio a menos que o mecanismo de alimentao de formulrio no permitir que voc alinhe a margem esquerda do papel com a extremidade esquerda do rolo pressor. Neste caso, especifique a distncia entre a margem esquerda do papel e a extremidade esquerda do rolo pressor, em polegadas. NOTA: Estes valores afetam relatrios impressos e relatrios enviados para disco; eles no afetam a sada na tela.

Completanto a Especificao: Margens


As margens esquerda, direita, superior e inferior so especificadas nos prximos seis campos da tela do Estilo de Impresso. Todos os valores de margens devem ser expressos em polegadas. As margens so definidas como se segue: 1. 2. 3. Esquerda: A distncia entre a extremidade esquerda do papel e a primeira coluna do texto. Direita: A distncia entre a ltima coluna do texto e a extremidade direita do papel. Topo/Cabealho: A distncia entre a extremidade superior e a primeira linha do cabealho. Se no existir cabealho, esta a distncia entre a extremidade superior do papel e a primeira linha de texto. Cabealho/Texto: A distncia entre a ltima linha do cabealho e a primeira linha do texto. Se no existir cabealho, este campo ignorado. Texto/Rodap: A distncia entre a ltima linha de texto e a primeira linha do rodap. Se no existir rodap, este campo ignorado. Rodap/Base: A distncia entre a ltima linha do rodap e a extremidade inferior do papel. Se no existir rodap, esta margem ignorada. Voc precisa incluir um comando .footer na forma para criar uma margem no fim da pgina. Os campos Margens mantidos vazios possuem um valor padro indicando 0. O grfico esquerda da tela do Estilo de Impresso um guia para mostrar quais campos afetam qual rea da margem.

4. 5. 6.

NOTA:

Completando a Especificao: Estilo do Tipo


Os ltimos cinco campos na tela do Estilo de Impresso permitem que voc especifique o estilo de tipos usado para o relatrio como um todo. Voc pode alterar estas definies para pores especficas do relatrio, inserindo smbolos de controle de impresso (@) na forma. As cinco opes de estilo de tipo so as seguintes:
Definindo a Sada do Relatrio 5-59

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

1.

Caracteres por Polegada: Para impresso normal, este valor deve ser 10. Se a sua impressora suporta outros conjuntos de caracteres por polegada, especifique um valor maior para impresso condensada, ou um valor menor para impresso expandida. O valor especificado precisa estar definido no Formato Impressoras. Linhas por Polegada: Para impresso normal, este valor deve ser 6. Se a sua impressora suporta linhas por polegada variveis, especifique um valor maior para impresso condensada, ou um valor menor para impresso expandida. O valor especificado precisa estar definido no Formato Definio de Impressoras. Destaques: Voc pode especificar at 12 destaques definidos pelo usurio e suportados pela sua impressora. Os destaques precisam estar definidos no Formato Definio de Impressoras, nos Efeitos Especiais. O relatrio completo destacado como especificado pelas suas opes. As opes do menu so:

2.

3.

1:Negrito 2:Sublinhado 3:Itlico 4:Especial 1 5:Especial 2 . . . 12:Especial 9


Para maiores informaes sobre definies de impressoras, veja o Volume 2, Captulo 4, Administrao do Sistema.

Gravando a Especificao do Estilo de Impresso


Quando voc terminar de preencher o Formato Estilo de Impresso, pressione F2 GRAVA para gravar suas especificaes. O DataEase verifica se todos os campos obrigatrios foram preenchidos, e grava o Formato. Se um ou mais campos obrigatrios no foram preenchidos, o DataEase responde:

A especificao est incompleta Deseja complet-la ao gerar o relatrio?


Se voc responder sim, e tambm tiver respondido sim questo de modificao do Estilo de Impresso ao gerar o relatrio, a especificao incompleta ser aceita, e o DataEase retorna para o Menu DQL. Se a especificao estiver incompleta, e
5-60 Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

voc respondeu no questo de modificao do Estilo de Impresso, o DataEase responde:

Preenchimento obrigatrio
O Formato Estilo de Impresso permanece na tela, com o cursor posicionado no primeiro campo obrigatrio vazio. Complete o Formato e pressione F2 GRAVA de novo.

Modificando o Estilo de Impresso


Se voc respondeu sim questo:

Permitir a modificao do Estilo


o Formato Estilo de Impresso aparece na tela sempre que voc executa o relatrio. Voc pode ento alterar quaisquer campos desejados antes de executar o relatrio. Quando terminar de alterar os campos, pressione F2 GRAVA para gerar o relatrio com estas mudanas. Voc pode alterar sua resposta para a questo de modificao do Estilo de Impresso, selecionando Modif. Estilo de Impresso no Menu DQL e respondendo novamente a esta questo.

Exemplos
Destino em Tela: Para enviar a sada do relatrio para tela, mantenha vazios o campo Nome da Impressora e campos relacionados.

Definindo a Sada do Relatrio

5-61

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Previso em Tela: Para prever um relatrio impresso na tela, especifique o destino para Impressora. Aps todas as questes relacionadas terem sido respondidas, troque o destino do relatrio para Tela. A sada em tela ser formatada como ela apareceria se estivesse sendo impressa na impressora especificada (dentro das limitaes da tela).

Destino em Impressora: Para imprimir rolos contnuos de etiquetas, especifique a Altura da Pgina como sendo 0. Mantenha os campos Margens vazios.

5-62

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Destino em Impressora: Para imprimir em pginas inseridas manualmente, especifique o Estilo de Impresso completo, e responda sim para a questo Pausa aps cada pgina?. O DataEase para aps cada pgina, e permite que voc insira a prxima folha ou envelope.

Destino em Disco: Para exportar a sada do relatrio para outro programa, especifique o nome do arquivo, incluindo o diretrio apropriado. Certifique-se de que o campo Nome da Impressora e campos relacionados estejam vazios.

Definindo a Sada do Relatrio

5-63

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Destino em Disco: Para gravar o relatrio em disco para impresso posterior, especifique o destino do relatrio como sendo Impressora. Aps preencher todos os campos relacionados, troque o destino do relatrio para Disco, e digite o nome do arquivo, incluindo o diretrio apropriado. O arquivo em disco resultante pode ser impresso posteriormente, usando o comando DOS COPY. Esta sada no pode ser impressa em folhas soltas, apenas em formulrios contnuos.

5-64

Definindo a Sada do Relatrio

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta pgina foi mantida vazia intencionalmente

Definindo a Sada do Relatrio

5-65

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Captulo 6 LEXICOGRAFIA DQL


INTRODUO
A lexicografia da DQL uma relao completa de todos os conceitos, termos e smbolos da DataEase Query Language, apresentados em ordem alfabtica. Cada termo da DQL identificado e explicado na lexicografia da seguinte forma: Nome da Palavra Chave Palavra Chave: Tipo: O termo ou smbolo como aparece na DQL. Identifica o tipo do termo. Os termos da DQL so divididos em cinco grupos principais: comandos, funes, palavras chave, operadores e smbolos. Cada um destes grupos contm vrios tipos subordinados. Viso geral que explica os propsitos principais do termo. Um comando da Query genrico que demonstra a forma apropriada na qual o termo usado numa Query. Para uma explicao da prpria forma da sintaxe, veja as convenes tipogrficas na prxima pgina. O tipo de valor retornado por uma funo ou operador. Detalhes adicionais referentes ao uso do termo em geral e em contextos especiais. Consideraes especiais ou restries que governam o uso do termo quando o DataEase estiver sendo executado numa rede local. Um ou mais exemplos que demonstram o uso do termo num comando da Query, ou uma Query completa. Quando uma Query completa apresentada, uma explicao da mesma e um exemplo do relatrio geralmente incluido. Uma referncia cruzada dos termos correlatos, incluindo todos os termos do mesmo tipo e outros termos importantes usados no exemplo precedente.
6-1

Propsito: Sintaxe:

Retorna: Uso: Rede:

Exemplo:

Veja Tambm:

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

CONVENES TIPOGRFICAS DA LEXICOGRAFIA DQL


Exceto como notado abaixo, as convenes tipogrficas so as mesmas usadas nlos captulos anteriores. Estas convenes so explicadas no Captulo 1, Introduo ao Processamento Avanado DQL.

Diagramas de Sintaxe
Nos diagramas de sintaxe, os itens entre colchetes [] podem ou no ser incluidos ao comando. Se eles forem incluidos, as vrgulas e parnteses devero aparecer onde forem mostrados. Quandos os itens forem separados por uma ou mais barras verticais |, um dos itens dever ser utilizado. Por exemplo, na sintaxe do comando: any FORMATO | RELAO [named NOME][with (critrios)] CAMPO ; Use FORMATO ou RELAO no comando. Um NOME pode ser incluido ou no. Se critrios de seleo forem incluidos no comando, os mesmos devero estar entre parnteses. Um CAMPO deve estar no fim do comando, seguido por ponto e vrgula. Nos diagramas de sintaxe, os termos mostrados em minsculas (any, named e with) so termos da DQL. As palavras mostradas em maisculas (FORMATO, RELAO NOME e CAMPO) so termos genricos. Numa Query atual, voc deve substituir estes termos com dados especficos, digitando os nomes dos Formatos atuais ou selecionando os itens apropriados a partir dos menus interativos.

Formatos DataEase Usados nos Exemplos


A maioria dos exemplos na lexicografia so baseados nos Formatos CLIENTES e PEDIDOS, mostrados na figura 3-1 no incio do Captulo 3.

Smbolos
Smbolos so ferramentas que esclarecem o significado de uma Query, executam operaes matemticas bsicas, e auxiliam a recuperao de dados quando voc no possui os valores exatos que deseja que a Query recupere. Os smbolos abaixo podem ser usados nas Frmulas de Derivao em Formatos, assim como em operaes no Processamento Avanado DQL. Existem trs grupos de smbolos DQL, os quais so mostrados abaixo:

6-2

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Pontuao
Smbolos de pontuao so usados para esclarecer, separar e concluir vrias operaes especificadas numa Query. Dois sinais de menos agrupados so usados para anotar comentrios numa Query.

Matemticos
Smbolos matemticos so usados para executar operaes aritmticas em valores numricos.

Coringa
Smbolos coringa so usados para especificar caracteres desconhecidos nos valores dos critrios de seleo. Para uma explicao mais completa de qualquer um dos smbolos DQL, veja a entrada da lexicografia. Os smbolos so apresentados em primeiro lugar, comeando na prxima pgina.

Lexicografia DQL

6-3

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

+ Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo: + (adio) Smbolo aritmtico. O smbolo + informa ao DataEase para somar Valor2 a Valor1. O resultado a soma da adio. Valor1 + Valor2 Um valor numrico. PREO := PREO UNITRIO + TAXAS DE VENDA. Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo: - (subtrao) Smbolo aritmtico. O smbolo - informa ao DataEase para subtrair Valor2 de Valor1. O resultado o resto da subtrao. Valor1 - Valor2 Um valor numrico. PREO := PREO UNITRIO - DESCONTO . / Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo: / (diviso) Smbolo aritmrico. O smbolo / informa ao DataEase para dividir Valor1 por Valor2. O resultado o quociente da diviso. Valor1 / Valor2 Um valor numrico. ALUGUEL := ALUGUEL ANUAL / 12 .

6-4

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

* Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo: * (multiplicao) Smbolo aritmtico. O smbolo * informa ao DataEase para multiplicar Valor1 por Valor2. O resultado o produto da multiplicao. Valor1 * Valor2 Um valor numrico. PAGAMENTO SEMANAL := PAGAMENTO POR HORA * HORAS NA SEMANA . * Palavra Chave: Tipo: Propsito: * (Coringa) Smbolo coringa (substituio de caracteres). O coringa * pode ser usado para substituir qualquer nmero de caracteres no especificados numa cadeia alfanumrica. Ele pode ser usado at duas vezes numa cadeia para especificar que um nmero no especificado de caracteres foi omitido. O smbolo pode ser usado em qualquer operao de comparao lgica ou num contexto de seleo de registros. for CLIENTES with ULTIMO NOME = *son ; list records ULTIMO NOME in order . end Esta Query diz ao DataEase: Imprima os registros para os clientes cujo ltimo nome termine com as letras son. A sada do relatrio para esta Query, arranjada em ordem alfabtica pelo ULTIMO NOME, parecida com o seguinte: ULTIMO NOME ======== Anderson Bateson Davidson Hanson Robertson =======

Exemplo 1:

Lexicografia DQL

6-5

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

for CLIENTES with ULTIMO NOME = *s?n ; list records ULTIMO NOME in order . end Esta Query diz ao DataEase: Imprima os clientes cujo ltimo nome termine com as letras s e n, com um caracter desconhecido entre as duas. A sada do relatrio para esta Query, arranjada em ordem alfabtica pelo ULTIMO NOME, parecida com o seguinte: ======== Andersen Anderson Bateson Davidson Hansen Hanson Robertson ======== ?

Palavra Chave: Tipo: Propsito:

? (coringa) Smbolo coringa (reconhecimento de um caracter). O caracter coringa ? usado para substituir exatamente um caracter no especificado em uma cadeia alfanumrica. Ele pode, no entanto, ser usado repetidamente em um campo para especificar o nmero exato de caracteres omitidos. O smbolo pode ser usado em qualquer operao lgica de comparao ou num contexto de seleo de registros. for CLIENTES with ULTIMO NOME = Anders?n ; list records ULTIMO NOME in order ; PRIMEIRO NOME . end Esta Query diz ao DataEase: Imprima os registros para clientes chamados Andersen e Anderson (ela tambm vai imprimir registros para Andersan, Andersin e Andersun, se existirem). A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o abaixo:

Exemplo 1:

6-6

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ULTIMO NOME PRIMEIRO NOME ====================================== Andersen Hans Andersen Paul Andersen Roger Anderson Brad Anderson Linda ====================================== Exemplo 2: for CLIENTES with ULTIMO NOME = W*s?n ; list records ULTIMO NOME in order . end Esta Query diz ao DataEase: Imprima os clientes cujo ltimo nome contiver uma letra W, seguida de um nmero qualquer de caracteres, ento s, um caracter desconhecido, e um n. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o abaixo: ULTIMO NOME ============== Waterson Watson Wilson Woodson Woolson ============== ~ Palavra Chave: Tipo: Propsito: ~ (til) Smbolo coringa (pesquisa soundex). O caracter coringa ~ usado para encontrar dados os quais tm som semelhante cadeia de caracteres especificada. O smbolo ~ pode ser usado antes de quaisquer nmero de caracteres ou palavras; ele localiza todos os registros que possuem um som similar cadeia especificada. Ao fazer comparaes com ~, o DataEase combina o padro de consoantes; vogais e espaos entre palavras so desprezados. Consoantes com sons similares (como s e c) so tratadas como o mesmo caracter. O smbolo ~ pode ser usado em qualquer operao lgica de comparao ou seleo de registros, e pode ser usado numa cadeia alfanumrica aps outro caracter coringa (* ou ?). Veja o Captulo Entrada de Registros no Volume 1, para mais informaes.

Lexicografia DQL

6-7

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTE with ULTIMO NOME = ~Foster ; list records ULTIMO NOME in order ; PRIMEIRO NOME . end Esta Query diz: Imprima todos os registros para CLIENTES cujo ltimo nome tenha o som de Foster. A sada, em ordem alfabtica por ULTIMO NOME, parecida com o abaixo: ULTIMO NOME PRIMEIRO NOME ====================================== Faster Dave Fastre John Foster Donald Fuster Lynn Phoster Keith ======================================= :

Palavra Chave: Tipo: Propsito:

: (dois pontos). Smbolo de pontuao. Dois pontos so inseridos entre um nome de campo e um ou mais operadores estatsticos quando voc deseja estatsticas na sada do relatrio. VALOR : operadores estatsticos for CLIENTES; list records end

Sintaxe: Exemplo:

ULTIMO NOME in order ; BALANO FINAL : item sum

Esta Query diz: Imprima registros de CLIENTES mostrando e o total de BALANO FINAL ao fim do relatrio. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o abaixo:
LTIMO NOME, BALANO FINAL

6-8

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ULTIMO NOME BALANO FINAL ====================================== Adams $595,00 Cooper $725,00 Evans $865,00 Hill $525,00 Ivers $675,00 ====================================== Total $3.385,00 () Palavra Chave: Tipo: Propsito: ( ... ) (parnteses) Smbolo de pontuao Parnteses so usados em critrios de seleo de registros e argumentos de funes, e para esclarecer a sequncia de operaes matemticas. O uso dos parnteses importante ao se utilizar um critrio de seleo que possui os operadores and e or ou quando se esclarece a ordem de avaliao de expresses ou operaes de outra maneira ambguas. for CLIENTES with BALANO FINAL > 500 and (ESTADO = SP or ESTADO RJ); list records ULTIMO NOME in order ; BALANO FINAL ; ESTADO . end Com os parnteses como mostrados, esta Query diz ao DataEase para imprimir todos os clientes de So Paulo ou Rio de Janeiro cujo BALANO FINAL maior que 500. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o abaixo:
ULTIMO NOME BALANO FINAL ESTADO =================================================== Adams $595,00 RJ Cooper $725,00 SP Evans $865,00 SP Hill $525,00 RJ Ivers $675,00 SP ====================================================

Exemplo:

Sem os parnteses, esta Query ambgua (ela pode ser interpretada como todos os clientes de So Paulo cujo balano maior de 500 e todos os clientes do Rio de Janeiro).
Lexicografia DQL 6-9

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

. Palavra Chave: Tipo: Propsito: . (ponto) Smbolo de pontuao. Um ponto marca o fim de uma ao que pode ou no ser seguida de outras aes. Numa Query, voc precisa inserir um ponto aps: 1. Qualquer comando de controle DQL. 2. Qualquer comando procedural assign, break, define ou exit, e aps cada ao em um comando case, if ou while. 3. O ltimo item e um comando de processamento list records, modify records, delete records ou enter a record. Exemplo: for CLIENTES; list records

end

ULTIMO NOME in order BALANO FINAL ; ESTADO .

Esta Query diz ao DataEase: Imprima os campos ULTIMO NOME, BALANO FINAL e ESTADO dos registros do Formato CLIENTES. A sada desta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo:
ULTIMO NOME BALANO FINAL ESTADO =================================================== Adams $595,00 RJ Anderson $350,00 SP Brown $250,00 RS Cooper $725,00 SP Davis $300,00 RS Evans $865,00 SP Hill $525,00 RJ Ivers $675,00 SP Jenkins $140,00 SP McDonald $425,00 SC ====================================================

6-10

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

; Palavra Chave: Tipo: Propsito: ; (ponto-e-vrgula) Smbolo de pontuao. Um ponto-e-vrgula usado para separar itens numa ao da Query. O ponto-e-vrgula sempre usado em um comando for que especifica o Formato primrio da Query; aps especificar critrios de seleo ad-hoc; e aps cada item da lista exceto o ltimo em um comando list records, modify records ou enter a record. NOME DE CAMPO | VALOR CONSTANTE ; for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL ; ESTADO . end Esta Query diz ao DataEase: Para os clientes cujo BALANO FINAL maior do que 500, imprima o LTIMO NOME do cliente, o BALANO FINAL e o ESTADO. A sada desta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo:
ULTIMO NOME BALANO FINAL ESTADO =================================================== Adams $595,00 RJ Cooper $725,00 SP Evans $865,00 SP Hill $525,00 RJ Ivers $675,00 SP ===================================================

Sintaxe: Exemplo:

... Palavra Chave: Tipo: Propsito: ... (aspas) Smbolo de pontuao. As aspas so sempre usadas para delimitar um texto constante. As aspas tambm so usadas para delimitar o nome de uma varivel em um comando define e para delimitar o nome opcional de uma relao quando ele especificado pela primeira vez numa Query pelo operador named.

Lexicografia DQL

6-11

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe:

CONSTANTE TEXTO define temp NOME DA VARIVEL sum of CLIENTES named MAIOR VOLUME with BALANO FINAL > 500 ;

Exemplo:

for CLIENTES with ESTADO = SP ; list records ULTIMO NOME in order ; BALANO FINAL ; ESTADO . end Esta Query diz ao DataEase: Para os clientes que moram em So Paulo, imprima o ULTIMO NOME, o BALANO FINAL e o ESTADO para cada registro. A sada do relatrio, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo:
ULTIMO NOME BALANO FINAL ESTADO =================================================== Anderson $350,00 SP Cooper $725,00 SP Evans $865,00 SP Ivers $675,00 SP Jenkins $140,00 SP ====================================================

:= Palavra Chave: Tipo: Propsito: Sintaxe: := (operador de valorizao) Smbolo operador. O operador de valorizao usado sempre que o valor de uma varivel ou campo valorizado ou modificado. NOME DO CAMPO := VALOR ; NOME DA VARIVEL := VALOR . Exemplo 1:
ENDEREO :=

data-entry ENDEREO ;

Este comando da Query diz ao DataEase para modificar o campo ENDEREO, copiando o valor do campo ENDEREO do Formato data-entry.

6-12

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

assign temp DESCONTO := PEDIDOS TOTAL DO PEDIDO * 0,10 . Este comando da Query define um valor a uma varivel temporria chamada DESCONTO. O valor definido para a varivel 10% do valor total do pedido. <

Palavra Chave: Tipo: Propsito:

< (menor que) Smbolo operador de comparao. O smbolo < (menor que) usado para comparar um valor com outro. Ele especifica que o valor esquerda do smbolo menor que o valor direita do smbolo. Valor1 < Valor2 for CLIENTES with BALANO FINAL < 500 ; Este comando da Query seleciona os registros de CLIENTES que possuem um valor menor que 500 no campo BALANO FINAL. <=

Sintaxe: Exemplo:

Palavra Chave: Tipo: Propsito:

<= (menor ou igual a) Smbolo operador de comparao. O smbolo <= (menor ou igual a) usado para comparar um valor com outro. Ele especifica que o valor esquerda do smbolo menor ou igual ao valor direita do smbolo. Valor1 <= Valor2 for CLIENTES with BALANO FINAL <= 500 ; Este comando da Query seleciona registros do Formato CLIENTES que possuem um valor menor ou igual a 500 no campo BALANO FINAL.

Sintaxe: Exemplo:

Lexicografia DQL

6-13

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

= Palavra Chave: Tipo: Propsito: = (igual) Smbolo operador de comparao. O smbolo = (igual) usado para comparar um valor com outro. Ele especifica que o valor esquerda do smbolo igual ao valor direita do smbolo. Valor1 = Valor2 for CLIENTES with BALANO FINAL = 500 ; Este comando da Query seleciona registros do Formato CLIENTES que possuem um valor igual a 500 no campo BALANO FINAL. > Palavra Chave: Tipo: Propsito: > (maior que) Smbolo operador de comparao. O smbolo > (maior que) usado para comparar um valor a outro. Ele especifica que o valor esquerda do smbolo maior que o valor direita do smbolo. Valor1 > Valor2 for CLIENTES with BALANO FINAL > 500 ; Este comando da Query seleciona registros de CLIENTES que possuem um valor maior que 500 em BALANO FINAL. >= Palavra Chave: Tipo: Propsito: >= (maior ou igual a) Smbolo operador de comparao. O smbolo >= (maior ou igual a) usado para comparar um valor com outro. Ele especifica que o valor esquerda do smbolo maior ou igual ao valor direita do smbolo. Valor1 >= Valor2 for CLIENTES with BALANO FINAL >= 500 ; Esta linha da Query seleciona registros de CLIENTES que possuem um valor maior ou igual a 500 em BALANO FINAL.
Lexicografia DQL

Sintaxe: Exemplo:

Sintaxe: Exemplo:

Sintaxe: Exemplo:

6-14

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Palavra Chave: Tipo: Propsito: Sintaxe: Exemplo: (comentrios) Smbolo de pontuao. O smbolo (comentrios) usado para inserir comentrios a uma Query. Comentrios no afetam a execuo da Query. Texto do Comentrio ESTA QUERY IMPRIME OS GRANDES COMPRADORES for CLIENTES with BALANO FINAL >= 500 ; list records ULTIMO NOME ; BALANO FINAL . end Esta Query seleciona registros em CLIENTES que possuem um valor maior ou igual a 500 em BALANO FINAL, e imprime os campos ULTIMO NOME e BALANO FINAL. O comentrio ao incio da Query no tm nenhum efeito nela. O DataEase ignora o texto que segue o smbolo de comentrio. Para maiores informaes, veja Comentrios nesta lexicografia. abs Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: Exemplos: abs (valor absoluto) Funo matemtica. A funo abs converte um valor numrico para um valor numrico positivo, sem sinal. abs(VALOR NUMRICO) Um valor numrico. A funo abs pode ser usada apenas com um valor numrico. Um valor no numrico retorna sempre 0. abs(-453) Retorna: 453 abs(4,53) Retorna: 4,53

Lexicografia DQL

6-15

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

acos Palavra Chave: Tipo: Propsito: Retorna: Uso: acos (arco cosseno) Funo trigonomtrica. A funo acos calcula o arco cosseno de um valor numrico. O resultado um ngulo expresso em radianos entre 0 e . Um valor numrico. A faixa vlida para o parmetro de entrada est entre -1 e 1. Se o parmetro de entrada estiver fora desta faixa, isto poder causar o congelamento do sistema, a no ser que um co-processador matemtico esteja instalado. acos(0,5) Retorna: 1,04195755 acos(-0,8) Retorna: 2,49809154 Ad-hoc, Relao Palavra Chave: Tipo: Propsito: Relao ad-hoc Conceito. Como uma relao pr definida, uma relao ad-hoc uma relao entre dois conjuntos de registros, mas uma relao ad-hoc criada durante a Query, ao invs de ser especificada no Formato Relaes durante o processo de Definio de Formatos. Uma relao ad-hoc permite acessar registros facilmente em outros Formatos, enquanto executa uma rotina. No entanto, por causa das relaes ad-hoc no serem parte fixa do banco de dados, elas devem ser redefinidas em cada rotina. Uma relao ad-hoc criada combinando-se um operador relacional (ou estatstico) com um nome de um Formato no relacionado, ou o nome de uma relao existente, para a qual novos critrios de seleo sero especificados. Quando voc cria uma relao ad-hoc, o operador named usado para fornecer um nome nico para o conjunto de registros relacionados. Isto permite que o DataEase identifique cada conjunto distinto de registros selecionados de um Formato.

Exemplo:

6-16

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe: Uso:

operador relacional FORMATO | RELAO [named NOME] [with (critrios de seleo)] ; Uma vez criada uma relao ad-hoc com um determinado critrio de seleo, os critrios no podero ser mudados at o final da Query. Se voc quiser selecionar outro conjunto de registros, voc precisa criar uma nova relao ad-hoc, e dar um novo nome a ela, usando o operador named. for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; sum of PEDIDOS named MAIO with ( CLIENTE # = CLIENTES CLIENTE # and DATA between 01/05/89 to 31/05/89 ) . end Aqui existe uma relao pr-definida entre CLIENTES e PEDIDOS, com base no campo CLIENTE #. O comando:
CLIENTE #

Exemplo:

sum of PEDIDOS named MAIO with ( CLIENTE # = CLIENTES and DATA between 01/05/89 to 31/05/89 ) .

cria uma relao ad-hoc, incluindo o critrio de seleo adicional DATA relao existente. Esta Query diz ao DataEase: 1) Selecione todos os registros de CLIENTES que possuem um BALANO FINAL maior do que 500. 2) Encontre todos os pedidos destes clientes no Formato relacionado PEDIDOS com data de maio de 1989. 3) Para cada registro selecionado do Formato CLIENTES, imprima o ltimo nome do cliente e o total dos pedidos de maio deste cliente. Note que se precisarmos que o DataEase imprima tambm o total dos pedidos de junho, ns teremos de criar uma nova relao ad-hoc, e dar a ela um nome nico, como abaixo: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; sum of PEDIDOS named MAIO with ( CLIENTE # = CLIENTES CLIENTE # and DATA between 01/05/89 to 31/05/89 ) ; sum of PEDIDOS named JUNHO with ( CLIENTE # = CLIENTES CLIENTE # and DATA between 01/06/89 to 30/06/89 ) . end

Lexicografia DQL

6-17

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

all Palavra Chave: Tipo: Propsito: all Operador relacional. O operador all seleciona todos os registros de um Formato relacionado que combinem com o registro atualmente sendo processado. all FORMATO | RELAO [named NOME] [with (critrios)] CAMPO ; O valor especificado de todos os registros do Formato relacionado que combinem com o registro atualmente sendo processado. O tipo do valor retornado o mesmo do campo especificado. Por exemplo, se voc est selecionando campos texto, o valor retornado ser texto. O operador all pode ser usado apenas para especificar itens de sada em um comando list records. Ele no pode ser usado para especificar critrios de seleo ou para selecionar registros relacionados em mais de um nvel de relao (isto , um Formato secundrio, um Formato tercirio, etc.). Veja o Exemplo 2. for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in groups ; all PEDIDOS PEDIDO # ; all PEDIDOS TOTAL PEDIDO . end Esta Query diz ao DataEase: 1) Selecione todos os registros de CLIENTES que tenham mais de 500 em BALANO FINAL. 2) Encontre todos os pedidos destes clientes no Formato PEDIDOS, imprimindo os campos PEDIDO # e TOTAL PEDIDO. A sada para esta Query, arranjada em grupos pelo ULTIMO NOME, parecida com o mostrado a seguir: ULTIMO NOME PEDIDO # TOTAL ========================================== Adams A117095 895,00 P218159 710,75 Cooper W225250 505,80 Evans G301457 420,00 F777651 365,40 Ivers W330910 625,00 ==========================================
6-18 Lexicografia DQL

Sintaxe: Retorna:

Uso:

Exemplo 1:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O operador all permite que voc recupere informaes de um Formato em cada nvel de relao. Para demonstrar isto, o Exemplo 2 introduz um terceiro Formato, chamado RETORNOS. O Formato RETORNOS armazena mercadorias retornadas e o valor pago pela devoluo da mercadoria. O Formato RETORNOS se relaciona com PEDIDOS atravs do campo PEDIDO #. Exemplo 2: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in groups ; all PEDIDOS PEDIDO # ; all PEDIDOS TOTAL PEDIDO ; all PEDIDOS all RETORNOS DEVOLVIDO . end Esta Query diz ao DataEase: 1) Selecione todos os registros em CLIENTES que possuam mais de 500 no campo BALANO FINAL. 2) Encontre todos os pedidos destes clientes no Formato PEDIDOS. 3) Para cada registro selecionado em PEDIDOS, imprima os campos PEDIDO # e TOTAL PEDIDO. Para cada pedido, encontre os registros relacionados no Formato RETORNOS (isto , os registros com o mesmo PEDIDO #), e imprima o campo TOTAL DEVOLVIDO. A sada para esta Query, arranjada em grupos pelo ULTIMO NOME (do Formato CLIENTES), parecida com o mostrado a seguir:
NOME PEDIDO # TOTAL DEVOLVIDO ======================================================= Adams A117095 895,00 45,00 P218159 710,75 70,00 Cooper W225250 505,80 Evans G301457 420,00 39,50 F777651 365,40 65,80 Ivers W330910 625,00 25,00 ========================================================

Na Query, CLIENTES o Formato primrio, PEDIDOS um Formato secundrio, e RETORNOS um Formato tercirio. Aqui existe apenas um registro de RETORNOS que combina com cada registro selecionado no Formato PEDIDOS.

Lexicografia DQL

6-19

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ampm Palavra Chave: Tipo: Propsito: ampm Funo tempo. A funo ampm avalia um valor expresso no relgio de 24 horas (HH:MM:SS), e retorna a abreviao apropriada AM (antes do meio dia), ou PM (aps o meio dia). ampm(VALOR TEMPO) Um valor texto (ou AM ou PM). As horas entre meia noite (00:00:00) at 11:59:59 retornam AM. As horas entre meio dia (12:00:00) e 23:59:59 retornam PM. ampm(08:15:25) Retorna: AM ampm(15:30:50) Retorna: PM and Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: and Operador lgico. O operador and combina dois conjuntos de critrios de seleo. CRITRIO DE SELEO 1 and CRITRIO DE SELEO 2 Os valores dos registros que satisfazem a ambos os critrios de seleo. O operador and exige que o registro atenda a todos os critrios de seleo especificados, para que o mesmo possa ser processado. O operador or exige que o registro atenda qualquer um dos critrios de seleo especificados. Quando critrios de seleo so combinados com os operadores and e or, os critrios devem estar entre parenteses, para evitar ambiguidades no significado. for CLIENTES with (ESTADO = SP and BALANO FINAL > 500) ;

Sintaxe: Retorna: Uso: Exemplos:

Exemplos:

6-20

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Este comando diz ao DataEase: Processe apenas os registros de CLIENTES que contenham SP no campo ESTADO e um valor maior que 500 no campo BALANO FINAL. Apenas registros que satisfazem ambos estes critrios so processados. for CLIENTES with (ESTADO = SP or ESTADO = RJ) and BALANO FINAL > 500 ; Este comando diz ao DataEase: Processe apenas os registros de CLIENTES que contenham ou SP ou RJ no campo ESTADO e um valor maior que 500 no campo BALANO FINAL. Novamente, apenas os registros que satisfazem ambos os critrios so processados. any Palavra Chave: Tipo: Propsito: any Operador relacional. O operador relacional any seleciona o primeiro registro em um Formato relacionado que satisfaz o registro atualmente sendo processado. any FORMATO | RELAO [named NOME] [with (critrio)] CAMPO ; O valor especificado do primeiro registro do Formato relacionado que combina com o registro atualmente sendo processado. O tipo do valor retornado o mesmo do campo especificado. O operador any pode ser usado para: 1. Especificar itens de sada em um comando list records. 2. Especificar critrios de seleo. 3. Selecionar registros relacionados em mais de um Formato por nvel de relacionamento (isto , Formatos secundrios, Formatos tercirios, etc.). Veja Formato Primrio para maiores detalhes sobre nveis de relacionamento.

Sintaxe: Retorna:

Uso:

Lexicografia DQL

6-21

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for PEDIDOS with TOTAL PEDIDO > 500 ; list records PEDIDO # in order ; TOTAL PEDIDO ; any CLIENTES ULTIMO NOME . end Esta Query diz ao DataEase: 1) Selecione todos os registos de PEDIDOS que tenham um TOTAL PEDIDO maior do que 500. 2) Para cada registro selecionado do Formato PEDIDOS, imprima os campos PEDIDO # e TOTAL PEDIDO. 3) Para cada registro selecionado do Formato PEDIDOS, encontre o primeiro (e apenas o primeiro) registro relacionado do Formato CLIENTES. 4) Para cada registro selecionado do Formato CLIENTES, imprima o campo ULTIMO NOME. A sada desta Query, arranjada em ordem crescente pelo PEDIDO #, parecida com o mostrado a seguir:
PEDIDO # TOTAL PEDIDO ULTIMO NOME ========================================= A117095 895,00 Adams H218159 710,75 Adams W225250 505,80 Cooper W330910 625,00 Ivers =========================================

asin Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: asin Funo trigonomtrica. A funo asin calcula o arco seno de um valor numrico. O resultado um ngulo expresso em radianos entre -/2 a /2. asin(VALOR NUMRICO) Um valor numrico. A faixa vlida do parmetro de entrada est entre -1 e 1. Se o parmetro de entrada estiver fora desta faixa, isto poder causar o congelamento do sistema, a no ser que ele possua um co-processador aritmtico. asin(1) Retorna: 1,570796 asin(-0,50) Retorna: -0,5235988

Exemplo:

6-22

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

assign Palavra Chave: Tipo: Propsito: assign Comando procedural. O comando assign usado para dar um valor a uma varivel global ou temporria. Uma varivel usada para armazenar um valor, como uma cadeia de caracteres ou o resultado de um clculo, que pode mudar durante o processamento da rotina. Atravs da especificao do nome da varivel, o valor armazenado pode ser usado como qualquer outro valor em uma Query. O status de uma varivel pode ser global (denotado pela palavra global), ou temporrio (denotado pela palavra temp). Uma varivel temporria pode manter seu valor apenas durante o processamento da rotina atual. Uma varivel global pode passar seu valor de uma rotina para outra. Para passar um valor de uma varivel global de uma rotina para outra, a mesma deve ser definida de forma idntica em cada rotina. Sintaxe: Uso: assign global | temp NOME DA VARIVEL := VALOR . O comando assign seguido por: o status da varivel (global ou temporria). o nome da varivel (sem aspas). o operador de valorizao (:=). o valor a ser dado a esta varivel. um ponto final. define temp DESCONTO Nmero . for PEDIDOS with TOTAL PEDIDO > 500 ; assign temp DESCONTO := PEDIDOS TOTAL PEDIDO * 0,15 . modify records TOTAL PEDIDO := TOTAL PEDIDO - temp DESCONTO . end Esta Query diz ao DataEase: 1) Crie (define) uma varivel temporria chamada DESCONTO para armazenar um nmero enquanto estiver processando a Query atual. 2) Encontre todos os registros de PEDIDOS que tenham mais de 500 no campo TOTAL PEDIDO. 3) D (assign) varivel DESCONTO um valor numrico multiplicando TOTAL PEDIDO por 15%. 4) Modifique o campo TOTAL PEDIDO destes registros, subtraindo deles o valor de DESCONTO.

Exemplo:

Lexicografia DQL

6-23

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

atan Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: atan Funo trigonomtrica. A funo atan calcula o arcotangente de um valor numrico. O resultado um ngulo expresso em radianos entre -/2 at /2. atan(VALOR NUMRICO) Um valor numrico. atan(500,3) Retorna: 1.56879753 atan(-359,4) Retorna: -1,5680139 atan2 Palavra Chave: Tipo: Propsito: atan2 Funo trigonomtrica. A funo atan2 calcula o arcotangente de Valor1 dividido por Valor2. O resultado um ngulo expresso em radianos, entre - at . atan2(VALOR NUMRICO 1 , VALOR NUMRICO 2) Um valor numrico. atan2(3, 127) Retorna: 0,02361766 atan2(1, 1) Retorna: 0,7854

Sintaxe: Retorna: Exemplos:

6-24

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

backup db Palavra Chave: Tipo: Propsito: backup db (backup do Banco de Dados) Comando de controle. O comando backup db cria uma cpia de segurana do banco de dados. Quando o processamento atingir backup db, o DataEase automaticamente trava o banco de dados. Ele faz ento uma srie de questes para especificar o drive no qual a cpia backup dever ser criada, alm de informaes sobre como manipular erros que possam ocorrer durante o backup. backup db . Quando voc faz uma cpia backup usando backup db, o DataEase copia o banco de dados usando uma forma especial de armazenamento; a cpia backup s pode ser recuperada usando o comando restore db ou atravs da Manuteno do Banco de Dados. Quando voc faz um backup do banco de dados, todos os registros excluidos desde a ltima operao de backup e restore sero permanentemente apagados. Rede: Numa rede local, se outro usurio estiver usando o mesmo recurso exigido pelo comando backup db, o DataEase mostra uma mensagem de conflito de recursos. Enquanto ela estiver sendo mostrada, o DataEase vai tentar executar o comando aps pequenos intervalos. Para interromper a operao neste momentos, voc vai precisar reinicializar o computador. Quando o recurso necessrio se tornar novamente disponvel, o DataEase continua o processamento, e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos, e Opes de Travamento Multi-Usurio. Exemplo: record entry CLIENTES . run procedure IMPRIME PEDIDOS . backup db . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES para que o operador possa incluir novos registros de clientes. 2) Quando o operador terminar a entrada de registros, execute a rotina chamada IMPRIME PEDIDOS. 3) Aps executar a rotina IMPRIME PEDIDOS, faa uma cpia backup do banco de dados.

Sintaxe: Uso:

Lexicografia DQL

6-25

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

between Palavra Chave: Tipo: Propsito: between Operador de comparao. O operador between usado para indicar que um valor deve estar dentro de uma faixa determinada. Ele especifica que o valor que est sendo testado maior ou igual a Valor1 e menor ou igual a Valor2. VALOR between VALOR1 to VALOR2 Todos os registros para os quais a comparao verdadeira. for CLIENTES with BALANO FINAL between 0 to 499 ; Este comando da Query seleciona os registros de CLIENTES que possuem um valor entre 0 e 499 no campo BALANO FINAL. blank Palavra Chave: Tipo: Propsito: Sintaxe: Uso: blank Palavra chave. A palavra chave BLANK usada para determinar um valor nulo para um campo ou varivel. blank Um valor nulo um valor no especificado, e no zero. Quando estatsticas so calculadas sobre um campo, valores BLANK no so incluidos no clculo. Valores zero so incluidos na gerao das estatsticas. Valores de campos ou variveis podem ser comparadas com BLANK, e BLANK pode ser determinado como um valor para quaisquer campos ou variveis. Exemplo: for CLIENTES with BALANO FINAL = BLANK ; delete records end Esta Query diz ao DataEase: Exclua os registros de CLIENTES que possuem o valor BLANK no campo BALANO FINAL. Isto pode ser usado para excluir registros de CLIENTES inativos.

Sintaxe: Retorna: Exemplo:

6-26

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

break Palavra Chave: Tipo: Propsito: break Comando procedural. O comando break usado para parar imediatamente a ao de um comando case, for, if ou while, continuando o processamento da rotina. Quando o processamento atinge um comando break, o DataEase imediatamente abandona a ao atual. Ele continua a processar a rotina com a primeira ao colocada aps o comando end correspondente. Sintaxe: AO 1 . AO 2 . AO 3 . break end PRXIMO COMANDO . for CLIENTES ; list records
BALANO FINAL ULTIMO NOME .

Exemplo:

in reverse ;

end for PEDIDOS ; delete records with (DATA < 01/01/80) . end Esta Query diz ao DataEase: Imprima os campos BALANO FINAL e ULTIMO NOME de cada cliente, arranjando a sada do maior para o menor valor de BALANO FINAL. Quando cem registros de CLIENTES tiverem sido processados, pare de imprimir registros e execute o prximo comando (excluir registros de PEDIDOS com DATA anterior a 1 de janeiro de 1980).

if current item number > 100 then break . end

Lexicografia DQL

6-27

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

call menu Palavra Chave: Tipo: Propsito: Sintaxe: Uso: call menu Comando de controle. O comando call menu mostra o menu especificado. call menu NOME DO MENU . O comando call menu pode ser usado para mostrar ou um menu de sistema DataEase ou um menu definido pelo usurio a qualquer ponto de uma rotina de controle. Quando o menu mostrado, voc pode selecionar opes nele, e executar as operaes associadas opo normalmente. Quando um menu chain mostrado, ele automaticamente executado, mas o menu no mostrado. Os menus de sistema DataEase so chamados pelos seguintes nomes: main forms records quick reports DQL procedures maintenance utilities administration Menu Principal do DataEase Menu de Definio de Formatos Menu de Entrada de Registros Menu de Relatrios Rpidos Menu DQL Menu de Manuteno Menu de Utilidades Menu de Administrao

Quando uma funo do menu completada e voc pressionar ESC, a rotina de controle continua com a ao seguinte ao comando call menu. Exemplo: record entry CLIENTES . run procedure IMPRIME PEDIDOS . call menu Maintenance . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES para que o operador possa efetuar a incluso de registros. 2) Execute a rotina IMPRIME PEDIDOS. 3) Mostre o Menu de Manuteno.
6-28 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

call program Palavra Chave: Tipo: Propsito: Sintaxe: Uso: call program Comando de controle. O comando call program executa o programa DOS especificado. call program NOME DO PROGRAMA [ARGUMENTOS] . O comando call program usado para carregar e executar outro programa em qualquer ponto de uma rotina de controle. O programa carregado pode ser qualquer programa .BAT, o programa a ser carregado e executado se ele no estiver localizado no diretrio atual. O comando pode incluir argumentos opcionais. O comando pode ser uma constante (Exemplo 1) ou uma expresso envolvendo funes e variveis (Exemplo 2). Quando o programa carregado terminar a sua execuo, o DataEase retorna o processamento da rotina na ao seguinte ao comando call program. PRECAUO: No tente carregar um programa residente de dentro do DataEase. Fazer isto poder danificar o seu sistema. NOTA: O DataEase pode ser transferido para a memria expandida (EMS) ou para disco para liberar a memria necessria para a execuo do programa. Se houver memria expandida suficiente, o DataEase se transferir automaticamente para ela. Se no existir memria expandida suficiente, voc pode fazer com que o DataEase se transfira para o disco. Para fazer isto, voc precisa digitar o nome do programa e sua necessidade de memria (em bytes) no programa DataEase PROGCALL.DAT. Este um arquivo ASCII que pode ser editado com qualquer editor de textos. A seguinte informao deve ser digitada EM PROGCALL.DAT para cada programa que voc quer executar a partir do DataEase: NOME_PROGRAMA bytes

NOME_PROGRAMA o nome do arquivo .BAT, .COM ou .EXE sem parmetros. Os parmetros podem ser incluidos no
Lexicografia DQL 6-29

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

comando call program, mas no no arquivo .DAT. No necessrio colocar a extenso do programa. Seguindo o nome do programa, insira um espao seguido de um nmero que representa a necessidade de memria em bytes. Este nmero deve ser digitado sem vrgulas ou pontos (por exemplo, 384 K deve ser digitado 384000). Se voc no possui memria expandida, voc precisa digitar esta informao para cada programa que voc pretende executar a partir do DataEase. Se voc no possui memria expandida suficiente, a chamada no ser executada at que a informao do programa esteja em PROGCALL.DAT. Para se assegurar que todas as chamadas sejam executadas, recomendamos que voc coloque todos os programas que voc pretende executar a partir do DataEase, mesmo que voc saiba que voc possui memria expandida suficiente para determinados programas. No pacote original do DataEase, o arquivo PROGCALL.DAT inclui trs programas (GRAFTALK, CONVERT e COMMAND), cada um dos quais necessitando de 360 Kbytes. Exemplo 1: run procedure VENDAS MENSAIS . call program C:\GT\GRAFTALK BARRA.1" . Esta Query diz ao DataEase: 1) Execute a rotina pr definida VENDAS MENSAIS, a qual grava um sumrio das vendas mensais para um arquivo em disco. 2) Carregue o programa DataEase GrafTalk e execute o grfico GrafTalk chamado BARRA.1, o qual usa o arquivo criado pela rotina anterior para desenhar um grfico das vendas mensais. Exemplo 2: define temp GRAFICO Text . assign temp GRAFICO := BARRA.1" . define temp PROG" Text . assign temp PROG := C:\GT\GRAFTALK . run procedure VENDAS MENSAIS . call program jointext(PROG , GRAFICO) . Esta Query faz exatamente a mesma coisa que a Query anterior, mas mostra o uso apropriado de uma expresso como um argumento do comando call program. NOTA: Os argumentos da funo jointext (PROG , GRAFICO) no esto entre aspas, pois eles so compostos de variveis.

6-30

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

case Palavra Chave: Tipo: Propsito: case Comando procedural. O comando case funciona como um comando if-then-else com vrios ifs. Ele diz ao DataEase para comparar uma expresso com uma srie de valores e executar uma ao diferente (ou grupo de aes), com base em qual valor de comparao verdadeiro. Quando o processamento atingir um comando case, o DataEase compara a expresso que segue case para cada um dos comandos especificados pela palavra chave value. Se a primeira comparao for verdadeira, o DataEase executa todos os comandos entre este value e a prxima palavra chave value. Se a primeira comparao no for verdadeira, a expresso case comparada com a prxima palavra chave value. Esta comparao de valores continua de cima para baixo at que a expresso case tenha sido comparada com cada palavra chave value. Assim que as aes forem executadas, o processamento passa para a primeira ao que seguir o comando end da estrutura case. Se nenhuma das comparaes value for verdadeira, o DataEase executa as aes especificadas aps a palavra chave others. Se a palavra chave others no estiver presente, o DataEase no executa nenhuma das aes especificadas, e continua o processamento da Query. Sintaxe: case(EXPRESSO) value COMPARAO 1: SRIE DE AES 1 . [value COMPARAO 2: SRIE DE AES 2.] . . [value COMPARAO N: SRIE DE AES N .] [others: SRIE DE AES OTHERS .] end

Lexicografia DQL

6-31

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

O comando case exige uma expresso, pelo menos uma palavra chave value, e um comando end. Comandos value subsequentes, aes e a palavra chave others so opcionais. Se others for usada, ela precisa seguir a ltima palavra chave value. A expresso de case precisa estar entre parenteses. Ela pode ser um campo, uma varivel, ou qualquer outra expresso, exceto uma expresso booleana (que retorna verdadeiro ou falso). Cada comparao value pode ser uma constante, uma varivel, uma expresso ou uma faixa de valores. Uma ao pode especificar quaisquer comandos procedurais vlidos, inclusive comandos if, while, for ou case. Cada comando encadeado precisa ser completado antes que o processamento possa prosseguir aps o end correspondente a case. (veja aes encadeadas nesta lexicografia). Quando comandos case so encadeados, o primeiro end corresponde ao ltimo case, e cada comando case precisa ter um comando end correspondente. Esta regra se aplica para todos os comandos procedurais encadeados (inclusive case, for, if e while).

Exemplo:

case(current user name) value FRANK: value TOM: value CAROL: others: end

call menu ADMINISTR . call menu ATUALIZAR . run procedure DIARIO . record entry CLIENTES .

Esta Query diz ao DataEase: Se o nome do usurio atual for Frank, mostre o Menu de Administrao. Se o usurio atual for Tom, mostre o Menu Atualizao. Se o nome do usurio atual for Carol, execute a rotina DIARIO. Se o nome do usurio atual for outro que no Frank, Tom ou Carol, mostre o Formato CLIENTES, para a entrada de registros.

6-32

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ceil Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: ceil Funo matemtica. A funo ceil arredonda um valor numrico para o inteiro imediatamente superior. ceil(VALOR NUMRICO) Um valor numrico. ceil(5,000) Retorna: 5 ceil(5,001) Retorna: 6 Comentrios Palavra Chave: Tipo: Propsito: Sintaxe: Uso: (comentrios) Smbolo. O smbolo (comentrios) usado para inserir comentrios numa Query. Comentrios no afetam a execuo da rotina. Texto do Comentrio Comentrios s podem ser inseridos numa Query no Modo Edio. O DataEase trata cada caracter entre os dois traos e o fim da linha como fazendo parte do comentrio. Para continuar um comentrio por mais de uma linha, use os dois traos no incio de cada linha. Exemplo: for CLIENTES with BALANO FINAL >= 500 ; list records end ESTA QUERY IMPRIME GRANDES CLIENTES ELA DEVE SER ATUALIZADA NO DECIMO DIA DE CADA MES.
ULTIMO NOME ; BALANO FINAL .

Lexicografia DQL

6-33

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query seleciona registros de CLIENTES que possuem 500 ou mais em BALANO FINAL, e imprime ULTIMO NOME e BALANO FINAL. O comentrio aps o comando end no afeta o processamento da Query. O DataEase ignora o texto que segue os dois traos. NOTA: Comentrios so apenas para propsitos de referncia particular. O DataEase ignora os comentrios quando processa a Query. Comparao, Operadores de Palavra Chave: Tipo: Propsito: Operadores de Comparao Operador. Os operadores de comparao so usados para comparar um valor com outro nos critrios de seleo de registros, frmulas matemticas, e em outras expresses texto ou numricas. A DQL usa sete operadores de comparao: = < Ambos os lados da comparao tm o mesmo valor. O valor do lado esquerdo da comparao menor que o valor do lado direito. O valor do lado esquerdo da comparao maior que o valor do lado direito. O valor do lado esquerdo da comparao menor ou igual ao valor do lado direito. O valor do lado esquerdo da comparao maior ou igual ao valor do lado direito. O valor situa-se dentro da faixa especificada (inclusive os extremos). Inverte o significado do operador que imediatamente o segue.

>

<=

>=

between

not

6-34

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

for CLIENTES with BALANO FINAL > 500 and ESTADO not = RJ ; for PEDIDOS with DATA between 01/01/89 to 31/01/89 ; Condicionais, Operadores de Estatsticas

Palavra Chave: Tipo: Propsito:

Operadores de Estatsticas Condicionais Operador. Os operadores de estatsticas condicionais geram informaes estatsticas sobre condies especficas que ocorrem num conjunto de registros. A DQL usa trs operadores de estatsticas condicionais: item, count e percent. item Retorna uma resposta SIM ou NO indicando se a comparao foi verdadeira ou falsa. Retorna o nmero de respostas verdadeiras em todos os registros especificados e nos grupos de registros. Retorna a percentagem de respostas verdadeiras (o nmero de respostas verdadeiras pelo total de registros processados, multiplicado por 100). percent tambm trabalha ao nvel de grupos.

count

percent

Uso:

Numa Query, o operador de estatsticas condicionais inserido aps um item da lista que comparado com um valor especfico. O operador separado da comparao por dois pontos. for CLIENTES ; list records

Exemplo:

end

ULTIMO NOME in order ; BALANO FINAL ; BALANO FINAL > 500 : item

count percent .

Lexicografia DQL

6-35

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz ao DataEase: 1) Processe todos os registros do Formato CLIENTES. 2) Imprima os campos ULTIMO NOME e BALANO FINAL. 3) Para cada cliente, mostre uma resposta SIM ou NO indicando se o campo BALANO FINAL maior que 500. 4) Mostre o nmero total de clientes com o campo BALANO FINAL maior que 500. 5) Mostre o nmero de clientes que possuem BALANO FINAL > 500 como uma percentagem de todos os clientes.
ULTIMO NOME, ULTIMO NOME

A sada para esta Query, arranjada em ordem alfabtica por parecida com o mostrado abaixo:
BALANO MAIS DE 500

================================================= ===== Adams 595,00 SIM Anderson 350,00 NO Brown 250,00 NO Cooper 725,00 SIM Davis 300,00 NO Evans 865,00 SIM Hill 525,00 SIM Ivers 675,00 SIM Jenkins 140,00 NO McDonald 425,00 NO ================================================= ==== count 5 percent 50

Constante Palavra Chave: Tipo: Propsito: Constante Conceito. Um valor constante um valor o qual no alterado durante o processamento de uma rotina (o oposto de uma varivel). Valores constantes so usados em comparaes de critrios de seleo, frmulas matemticas, nomes prprios, e outras expresses texto ou numricas. Uso: Numa Query, um valor constante pode ser usado sempre que o seu tipo de valor for permitido. Os tipos de valores de constantes so os mesmos que os tipos bsicos de campos: texto, string numrica, nmero, data, hora e moeda.
Lexicografia DQL

6-36

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-37

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A forma de digitao de valores constantes a seguinte: Coloque aspas em constantes texto (TEXTO). Use barras em constantes data (01/01/89). Use dois pontos em constantes hora (09:30:00). No digite caracteres de formatao em strings numricas. No digite separadores de milhar em constantes numricas. Exemplo: for CLIENTES with ULTIMO NOME = SPENCER and CEP > 90000 ; Neste comando da Query, ambos os nomes SPENCER e o CEP 90000 so valores constantes. Controle, Rotina de Palavra Chave: Tipo: Propsito: Rotina de Controle Conceito. Uma rotina de controle uma rotina de nvel Alto a qual permite que voc ligue outras rotinas a ela com ou sem processamento condicional especificado pelos comandos procedurais. Uma rotina de controle pode ligar qualquer nmero de rotinas a ela, e pode invocar qualquer nmero de operaes mostradas nos menus do DataEase. Uso: Uma rotina de controle pode incluir qualquer combinao de rotinas de controle e comandos procedurais. Embora uma rotina de controle possa interligar vrias rotinas de processamento, voc no pode usar um comando de processamento dentro de uma rotina de controle. Note tambm que uma rotina de controle por si s no pode incluir, excluir ou modificar registros, nem gerar sada de dados. Para uma explicao completa dos vrios comandos de controle da DQL, veja os itens individuais nesta lexicografia. Exemplo: if current user name = PAUL then call menu utilities . run procedure MALA DIRETA . else call menu main . end

6-38

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta rotina de controle diz ao DataEase: Se o usurio atual for Paul, 1) Mostre o Menu de Utilidades do Banco de Dados. 2) Execute a rotina que gera uma mala direta atualizada. 3) Se o usurio atual no for Paul, mostre o Menu Principal do DataEase. copy all from Palavra Chave: Tipo: Propsito: copy all from Comando de processamento. O comando copy all from copia valores de campos de nomes idnticos de um Formato para outro. O comando copy all from no mostrado no menu de comandos do nvel Alto porque ele somente pode ser usado aps um comando modify records ou enter a record. Quando voc selecionar um destes comandos, o DataEase vai perguntar se voc quer usar o comando copy all from para transferir os dados de um Formato para outro. Sintaxe: Uso: copy all from FORMATO | data-entry O comando copy all from precisa especificar um Formato fonte. O Formato fonte pode ser qualquer Formato ou relao previamente especificada na Query, ou o Formato data-entry. O Formato destino especificado ao fim do comando modify records ou enter a record. O Formato destino pode ser qualquer Formato que voc especificar; o padro o Formato primrio. Os dados so copiados em cada campo destino do campo do Formato fonte que tiver o nome idntico. Exemplo: Assuma que ns definimos um Formato destino chamado CATALOGO CLIENTES. Este Formato contm apenas aqueles clientes os quais receberam um catlogo promocional especial no natal. for CLIENTES with any PEDIDOS TOTAL PEDIDO > 500 ; enter a record in CATALOGO CLIENTES copy all from CLIENTES . end

Lexicografia DQL

6-39

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz ao DataEase: 1) Selecione todos os registros de CLIENTES que possuam pelo menos um registro em PEDIDOS com mais de 500 no campo TOTAL PEDIDO. 2) Para cada registro de CLIENTES selecionado, inclua um registro no Formato CATALOGO CLIENTES e copie todas as informaes do Formato fonte CLIENTES para o Formato destino CATALOGO CLIENTES, com base nos nomes de campo que combinarem. cos Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: cos (cosseno) Funo trigonomtrica. A funo cos calcula o cosseno de um ngulo expresso em radianos. O valor retornado est situado entre -1 e 1. cos(VALOR NUMRICO) Um valor numrico. cos(3,1415928) Retorna: -1 cos(-22) Retorna: .9271838 cosh Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: cosh (cosseno hiperblico) Funo trigonomtrica. A funo cosh calcula o cosseno hiperblico de um ngulo expresso em radianos. cosh(VALOR NUMRICO) Um valor numrico. cosh(2,34) Retorna: 5,23878166 cosh(-5,4) Retorna: 110,70547

6-40

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

count Palavra Chave: Tipo: Propsito: count Operador de estatsticas condicionais. O operador count conta o nmero de registros no Formato sendo processado que satisfazem uma condio especificada por uma comparao entre dois valores. O resultado aparece como uma estatstica na rea de sumrio no final do relatrio. CONDIO : count [outros operadores estatsticos]; Para contar todos os registros processados numa Query, use uma condio sempre verdadeira, assim como A = A. for CLIENTES ; list records

Sintaxe: Uso: Exemplo 1:

end

ULTIMO NOME in order ; BALANO FINAL ; BALANO FINAL > 500 : count

Esta Query diz ao DataEase: 1) Imprima todos os registros de CLIENTES, mostrando ULTIMO NOME e BALANO FINAL. 2) Conte quantos registros que possuem mais de 500 no campo BALANO FINAL. A sada desta Query, por ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ========================== Adams 595,00 Cooper 225,00 Evans 865,00 Hill 525,00 Ivers 675,00 ========================== count 4 Exemplo 2: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL ; A = A : count . end O Exemplo 2 idntico ao Exemplo 1, exceto por Cooper ser excluido pois BALANO FINAL menor que 500. A estatstica count 4, mas neste caso ela representa todos os registros processados (os registros processados satisfazem count).
Lexicografia DQL 6-41

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

count of Palavra Chave: Tipo: Propsito: count of Operador de estatsticas condicionais O operador count of conta quantos registros em um Formato relacionado satisfazem determinado critrio. O resultado pode aparecer como um item da lista, ou numa estatstica ao final do relatrio. count of FORMATO | RELAO [named NOME] [with (critrios)] ; for CLIENTES ; list records

Sintaxe: Exemplo:

end

ULTIMO NOME in order ; BALANO FINAL ; BALANO FINAL > 500 : item count ; count of PEDIDOS with (TOTAL PEDIDO

> 100) .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES. 2) Imprima ULTIMO NOME e BALANO FINAL. 3) Em cada cliente, mostre SIM ou NO, se BALANO FINAL maior que 500. 4) Conte o nmero de clientes que possuem BALANO FINAL maior que 500, e mostre no final do relatrio (gerado pelo operador count). 5) Conte o nmero de registros relacionados em PEDIDOS que possuem TOTAL PEDIDO maior que 100, e mostre este nmero como um item da lista (gerado pelo operador count of). A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado a seguir: NOME BALANO > 500 > 100 ========================== Adams 595,00 SIM 2 Anderson 350,00 NO 0 Brown 250,00 NO 1 Cooper 725,00 SIM 3 Davis 300,00 NO 1 Evans 865,00 SIM 3 Hill 525,00 SIM 3 Ivers 675,00 SIM 2 Jenkins 140,00 NO 1 McDonald 425,00 NO 3 ========================== TOTAL CLIENTES COM BALANO FINAL > 500 = 5

6-42

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

current Palavra Chave: Tipo: Propsito: current Palavra chave. A palavra chave current permite o acesso a qualquer uma das variveis definidas pelo sistema, mostradas abaixo: current date retorna a data do sistema (um valor data). current time retorna a hora do sistema (um valor hora). current page number retorna o nmero da pgina do relatrio atualmente sendo impressa (um valor numrico). current item number retorna o nmero do registro atual processado pela Query (um valor numrico). current user name retorna o nome do usurio atualmente ativo no banco de dados (um valor texto). current user level retorna o nvel de segurana do usurio (um valor numrico entre 1 e 7). current computername retorna o nome da estao que est processando a rotina, quando em rede local (um valor texto). current status retorna um valor numrico dependente da tecla que o usurio pressionou quando estava entrando dados atravs do comando DQL input (veja input para exemplo). O valor armazenado em current status mostrado abaixo: Tecla Pressionada ESC F2 F7 F8 Sintaxe: Valor Retornado 1 2 4 3

current NOME DA VARIVEL

Lexicografia DQL

6-43

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL ; current date ; current page number ; current user name . end Esta Query diz ao DataEase: 1) Selecione os registros de CLIENTES que possuem um BALANO FINAL maior que 500. 2) Imprima os campos ULTIMO NOME e BALANO FINAL de cada registro selecionado. 3) Imprima current date (a data de hoje), current page number (a pgina do relatrio) e current user name (o nome do usurio que gerou o relatrio). A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo:
================================ PGINA: 1 USURIO: GEORGE McGRATH ================================ ================================ ULTIMO NOME BALANO FINAL ================================ Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ================================ DATA: 20/01/89

data-entry Palavra Chave: Tipo: Propsito: Sintaxe: data-entry Palavra chave. A palavra chave data-entry identifica o Formato data-entry como a fonte do valor especificado. data-entry CAMPO

6-44

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

Valores data-entry so usados em uma Query da mesma maneira que outro valor ou expresso. A palavra chave data-entry usada como o nome do Formato para especificar valores digitados num Formato data-entry. A palavra chave s pode ser usada se um Formato data-entry tiver sido definido para a rotina. No modo interativo, se um Formato data-entry tiver sido definido, o DataEase oferece um menu com os nomes de todos os campos definidos no Formato, para serem utilizados pela Query.

Exemplo:

for CLIENTES with CLIENTE # = data-entry CLIENTE # ; modify records copy all from data-entry ; ENDEREO := data-entry NOVO ENDEREO . end Esta Query pode ser usada para atualizar endereos no Formato CLIENTES. Ela diz ao DataEase: 1) Encontre o registro de CLIENTES que possue o mesmo CLIENTE # especificado no campo CLIENTE # do Formato data-entry. 2) Modifique o registro encontrado em CLIENTES, copiando o valor do campo NOVO ENDEREO do Formato data-entry para o campo ENDEREO do registro de CLIENTES. Aps o registro ter sido modificado, o Formato data-entry mostrado novamente, para que o operador possa modificar o prximo endereo. date

Palavra Chave: Tipo: Propsito: Sintaxe:

date Funo data. A funo date constroi um valor data a partir de trs valores numricos separados. date(MS, DIA, ANO) onde MS o nmero do ms (1-12), DIA o nmero do dia (1-31) e ANO so os dois ltimos dgitos do ano.

Retorna:

Uma data na forma especificada no Formato Configuration. Por exemplo, se voc especificou a forma Internacional, no Formato Configuration, o valor ser na forma DD/MM/AA. Se um parmetro for invlido (por exemplo, ms > 12 ou dia > 31), o DataEase vai aujstar a data. Por exemplo, date(6, 45, 89) retorna 07/15/89. Decimais so descartados.
6-45

Uso:

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1: Exemplo 2:

date(7, 1, 89) Retorna: 01/07/89 (forma Internacional) PRIMEIRODIA := date(month(HOJE), 1, year(HOJE)) . ULTIMODIA := date((month(HOJE) + 1), 1, year(HOJE)) - 1 . Esta poro de uma Query usa uma varivel chamada HOJE (a qual possui a data de hoje) e duas outras funes data, month e year, para encontrar o primeiro e o ltimo dias do ms. O resultado, se a data de hoje for 4 de julho de 1989, : PRIMEIRODIA = 01/07/89, ULTIMODIA = 31/07/89. Esta rotina funciona para qualquer data.

NOTA:

Se o seu sistema estiver configurado para datas internacionais, o valor retornado pela funo date : DD/MM/AA. Se o seu sistema estiver configurado para datas mtricas, o valor retornado pela funo date : AA/MM/DD. day

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna:

day Funo data. A funo day extrai o dia do ms (1-31) de um valor data. day(VALOR DATA) Um valor inteiro entre 1 e 31. A forma da data selecionada na Administrao do Sistema altera a sequncia da data, mas no tm efeito sobre o valor retornado pela funo day. day(12/31/89) Retorna: 31 (data na forma americana) day(31/12/89) Retorna: 31 (data na forma internacional) day(89/12/31) Retorna: 31 (data na forma mtrica)

Exemplos:

NOTA:

Na Definio de Formatos, voc pode pode usar a frmula de derivao day(lookup current date) para gravar em cada registro o dia em que ele foi gravado. Para maiores informaes, veja o Volume 2, Captulo 2, Definio de Formatos.
Lexicografia DQL

6-46

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-47

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

db status Palavra Chave: Tipo: Propsito: db status (status do Banco de Dados) Comando de controle. O comando db status gera um relatrio o qual mostra o status do banco de dados atual. Quando o processamento atinge o comando db status, o DataEase automaticamente trava o banco de dados atual. Ele ento faz uma questo, a respeito de qual item o status desejado: Formatos, rotinas ou importaes. Dependendo de sua resposta, o relatrio de status pode incluir um ou mais itens abaixo: o nmero de Formatos definidos pelo sistema e pelo usurio o nome de cada Formato o nome DOS e o tamanho de cada Formato o nmero de registros existentes e excluidos o nome de cada rotina o nome DOS e o tamanho de cada arquivo o nome de cada especificao de importao do diretrio o nome DOS e o tamanho de cada especificao de importao Sintaxe: Uso: Rede: db status Para imprimir as informaes geradas por db status, pressione a tecla SHIFT-F9 IMPRIME. Em uma rede local, se outro usurio estiver atualmente usando qualquer recurso utilizado pelo comando db status, o DataEase mostrar uma mensagem de Conflito de Recursos. Enquanto esta mensagem estiver sendo mostrada, o DataEase vai tentar automaticamente executar o comando aps um determinado perodo de tempo. Se voc quiser interromper a rotina neste momento, voc vai precisar reinicializar o computador. Quando o recurso necessrio estiver disponvel, o DataEase automaticamente vai continuar o processamento e executa o restante da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento Multi-usurio.

6-48

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

record entry CLIENTES . run report IMPRIME PEDIDOS . db status . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES, para que o operador possa incluir novos registros. 2) Quando o operador terminar a entrada de registros, execute a rotina chamada IMPRIME PEDIDOS. 3) Aps executar a rotina, mostre as informaes de status especificadas para o banco de dados. define

Palavra Chave: Tipo: Propsito:

define Comando procedural O comando define usado para criar uma varivel global ou temporria. Uma varivel usada para armazenar um valor, como uma cadeia de caracteres ou o resultado de um clculo, que pode ser alterado durante o processamento da rotina. Ao especificar o nome da varivel, o valor armazenado pode ser utilizado como qualquer outro valor pela Query. O status de uma varivel pode ser global (denotado pela palavra chave global) ou temporria (denotado pela palavra chave temp). Uma varivel temporria pode manter um valor apenas durante a rotina atual. Uma varivel global pode passar seu valor de uma rotina para outra. Para passar o valor de uma varivel de uma rotina para outra, a varivel precisa ser definida identicamente em cada rotina.

Sintaxe: Uso:

define global | temp NOME DA VARIVEL TIPO [COMPRIMENTO] . O comando define seguido por: o status da varivel (global ou varivel). o nome da varivel (entre aspas). o tipo a varivel (qualquer tipo, menos Escolha, Moeda ou Sim ou No). o comprimento da varivel (veja abaixo). um ponto. O comando define exige um ponto final, e no um ponto-e-vrgula.

Lexicografia DQL

6-49

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comprimento especifica o nmero de caracteres da varivel. O comprimento mximo para uma varivel Texto de 255 caracteres. O comprimento padro para uma varivel Nmero 14 caracteres. O comprimento padro para qualquer outro tipo 25 caracteres. O comprimento padro usado se voc no especificar um comprimento no comando define. NOTA: Exemplo: Quando voc define uma varivel, voc pode usar qualquer tipo de campo, exceto Escolha. define temp DESCONTO Number . for PEDIDOS with TOTAL PEDIDO > 500 ; assign temp DESCONTO := TOTAL * 0,15 . modify records TOTAL := TOTAL - DESCONTO . end Esta Query diz ao DataEase: 1) Crie (define) uma varivel temporria chamada DESCONTO para armazenar um nmero enquanto esta rotina estiver sendo processada. 2) Encontre todos os registros em PEDIDOS que tenham mais de 500 no campo TOTAL PEDIDO. 3) Valorize (assign) a varivel DESCONTO como sendo o valor do campo TOTAL PEDIDO vezes 15%. 4) Modifique estes registros de PEDIDOS subtraindo o valor da varivel DESCONTO do campo TOTAL PEDIDO. delete records Palavra Chave: Tipo: Propsito: Sintaxe: Uso: delete records Comando de processamento. O comando delete records exclui registros de um Formato especificado. delete records [in FORMATO | RELAO [named NOME][with (critrios de seleo)]] Quando voc exclui registros no Formato primrio, a palavra chave in pode ser omitida, e nenhuma pontuao usada aps o comando delete records (veja o exemplo 1). for CLIENTES with (highest of PEDIDOS DATA < 01/01/80) ; delete records end

Exemplo 1:

6-50

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query exclui os registros do Formato primrio (CLIENTES) cujo pedido mais recente (no Formato relacionado PEDIDOS) esteja datado antes de 1 de janeiro de 1980. Quando voc exclui registros em outro Formato que no o Formato primrio, a palavra chave in precede o nome do Formato, e o comando termina com um ponto-e-vrgula (ou um ponto, se for a ltima de uma srie de aes (veja o Exemplo 2). Exemplo 2: for CLIENTES ; delete records in PEDIDOS named ULTRAPASSADOS with (CLIENTE # = CLIENTES CLIENTE # and DATA < 01/01/80) . end Esta Query exclui os registros no Formato relacionado (PEDIDOS) os quais esto datados antes de 1 de janeiro de 1980. O operador named usado para estabelecer um nome nico para esta relao, de forma a agrupar os registros com a data desejada. Note que quando voc usa o operador named para criar uma relao ad-hoc, voc aprimora uma relao j existente. Por causa disto, voc precisa dizer ao DataEase novamente como os Formatos CLIENTES e PEDIDOS esto relacionados. Ao incluir a frase (CLIENTE # = CLIENTES CLIENTE #) no critrio ad-hoc, voc est dizendo ao DataEase que os registros de PEDIDOS que voc quer excluir precisam ter o mesmo contedo no campo CLIENTE # do campo CLIENTE # do registro de CLIENTES atualmente sendo processado, e que estejam com o campo DATA anterior a 1 de janeiro de 1980. do Palavra Chave: Tipo: Propsito: do Palavra chave. A palavra chave do compe o comando while. Quando o processamento atinge while, o DataEase avalia a condio a seguir. Se a condio especificada for verdadeira, o DataEase executa os comandos que seguem a palavra chave do, at atingir o end correspondente. O DataEase ento avalia a condio novamente. Se a condio resultar em falso, o processamento passa para para o primeiro comando aps o end correspondente.
Lexicografia DQL 6-51

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe:

while CONDIO do AO 1 . AO 2 . . . AO N . end define temp SERIE Number . assign temp SERIE := 0 . while temp SERIE < 1000 do temp SERIE := temp SERIE + 1 . list records jointext(DISCO DE SISTEMA , temp SERIE) . end Esta Query diz ao DataEase: 1) Crie (define) uma varivel temporria chamada SERIE 2) Valorize (assign) SERIE com 0. 3) Imprima uma srie de etiquetas, juntando frase DISCO DE SISTEMA o valor em SERIE. 4) Enquanto imprime as etiquetas, incremente a varivel em um a cada etiqueta impressa. 5) Quando SERIE exceder 999, pare. O comando while diz ao DataEase para reavaliar a condio a cada vez que uma etiqueta impressa. Enquanto o valor for menor do que 1000, o DataEase imprime uma nova etiqueta. Quando o valor da varivel exceder 999, o DataEase interrompe a ao que segue a palavra chave do. else

Exemplo:

Palavra Chave: Tipo: Propsito:

else Comando procedural. A palavra chave else compe o comando if. O comando if executa uma entre duas aes diferentes (ou conjunto de aes), tomando como base se a condio especificada verdadeira ou falsa. Quando o processamento atinge o comando if, o DataEase avalia a condio que segue a palavra chave if. Se a condio especificada for verdadeira, o DataEase executa todos os comandos que seguem a palavra chave then at encontrar um end ou else correspondente. Se a condio especificada for falsa, o DataEase executa todos os comandos que seguem a palavra chave else at que o processamento atinja o comando end correspondente. Se a

6-52

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

palavra chave else no existir, o DataEase continua o processamento a partir do comando end correspondente a if. Sintaxe: if CONDIO then [AO 1 . AO 2 . . . AO N .] [else AO 1 . AO 2 . . . AO N.] end Exemplo: for CLIENTES ; if highest of PEDIDOS DATA < 01/01/80 then delete records . else delete records in PEDIDOS with (DATA < 01/01/80) . end

end

Esta Query diz ao DataEase: 1) Para cada registro em CLIENTES, encontre o registro relacionado em PEDIDOS com a data do pedido mais recente. 2) Se o maior valor do campo DATA for anterior a 1 de janeiro de 1980, exclua o registro de CLIENTES. 3) Se o pedido mais recente do cliente estiver com data posterior a esta, exclua todos os registros correspondentes em PEDIDOS datados anteriormente a 1 de janeiro de 1980. Note que o primeiro end marca o fim do comando if, o qual seleciona quais registros excluir. O segundo end marca o final do comando for, que seleciona os registros no Formato primrio.

Lexicografia DQL

6-53

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

end Palavra Chave: Tipo: Propsito: Sintaxe: end Comando procedural. O comando end marca o fim de uma srie de controle de outros comandos de processamento/controle. AO 1 . AO 2 . . . AO N . end Um comando end obrigatrio para finalizar os comandos: for, case, if ou while. Quando vrios comandos procedurais so utilizados numa Query, o posicionamento correto dos comandos end crtico para o processamento apropriado. Cada end refere-se ao comando mais recente da Query. Cada comando controla o processamento at que ele atinja o if correspondente. Exemplo 1: for CLIENTES ; list records end

Uso:

ULTIMO NOME ; BALANO FINAL .

Esta Query diz ao DataEase: Processe todos os registros do Formato CLIENTES, e imprima os campos ULTIMO NOME e BALANO FINAL. Exemplo 2: for CLIENTES ; if highest of PEDIDOS DATA < 01/01/80 then delete records else delete records in PEDIDOS with (DATA < 01/01/80) . end if highest of PEDIDOS >= 01/01/89 then list records ULTIMO NOME in order ; highest of PEDIDOS DATA ; highest of PEDIDOS TOTAL PEDIDO . end end
Lexicografia DQL

6-54

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz ao DataEase: 1) Para cada registro de CLIENTES, encontre o pedido mais recente, na relao PEDIDOS. 2) Se a data mais recente de um pedido for anterior a 1 de janeiro de 1980, exclua o registro de CLIENTES. 3) Se o pedido mais recente do cliente for posterior a esta data, exclua todos os registros em PEDIDOS que tenham data anterior a 1 de janeiro de 1980. 4) Para todos os clientes com pedidos datados a partir de 1 de janeiro de 1989, imprima os clientes em ordem alfabtica por ULTIMO NOME, e mostre o valor do pedido em questo. Note que para cada comando if existe um comando end correspondente. O primeiro end marca o fim do primeiro if, o qual seleciona quais registros excluir. O segundo end marca o fim do if que seleciona quais registros incluir no relatrio. O terceiro end marca o fim do comando for, o qual seleciona os registros do Formato primrio. NOTA: Embora o DataEase no exija um comando end em Queries de nvel Baixo, a maioria das Queries de nvel Alto exigem. Como a maioria dos usurios eventualmente convertem Queries de nvel Baixo para nvel Alto, ns recomendamos que voc crie o hbito de usar um comando end para marcar o fim da Query, para se assegurar que as necessidades de sintaxe para o nvel Alto sejam satisfeitas. enter a record Palavra Chave: Tipo: Propsito: Sintaxe: Uso: enter a record Comando de processamento. O comando enter a record inclui um registro no Formato especificado. enter a record in FORMATO O comando enter a record precisa especificar um Formato destino, alm dos valores a serem colocados nos campos. Alternativamente, voc pode especificar outro Formato para copiar dados dos campos, usando a palavra chave copy all from (veja o Exemplo 2). Enquanto os dados estiverem sendo incluidos ao arquivo, a verificao de erros automtica, incluindo verificaes de unicidade, obrigatoriedade, checagens de faixa, etc. Todos os erros sero gravados em um arquivo de exceo.

Lexicografia DQL

6-55

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1:

for CLIENTES with BALANO FINAL > 500 ; enter a record in CATALOGO CLIENTES NOME 1 := CLIENTES PRIMEIRO NOME ; NOME 2 := CLIENTES ULTIMO NOME ; ENDEREO := CLIENTES ENDEREO ; CIDADE := CLIENTES CIDADE ; ESTADO := CLIENTES ESTADO ; CEP := CLIENTES CEP . end Esta Query diz ao DataEase: 1) Selecione todos os registros de CLIENTES que tenham mais de 500 no campo BALANO FINAL. 2) Para cada registro selecionado de CLIENTES, inclua um registro no Formato CATALOGO CLIENTES, copiando a informao de cada campo do campo correspondente em CLIENTES. O Exemplo 1 simplesmente copia a informao do Formato CLIENTES para o Formato CATALOGO CLIENTES. Se voc trocar os nomes dos campos para que fiquem com nomes idnticos, o mesmo resultado alcanado com uma Query mais simples, mostrada no Exemplo 2.

Exemplo 2:

for CLIENTES with BALANO FINAL > 500 ; enter a record in CATALOGO CLIENTES copy all from CLIENTES . end exit

Palavra Chave: Tipo: Propsito: Sintaxe: Uso:

exit Comando procedural. O comando exit usado para terminar uma Query imediatamente. exit . O comando exit pode ser usado em qualquer lugar da Query. Quando ele executado, a Query imediatamente interrompida, e o controle retorna para o menu ou rotina que executou a rotina atual.

6-56

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES ; list records


BALANO FINAL ULTIMO NOME .

in reverse ;

end

if current item number > 5 then exit . end

Esta Query diz ao DataEase: Imprima os cinco clientes com o maior valor no campo BALANO FINAL. Quando o quinto registro for processado, termine a Query. Note que existem dois comandos end, necessrios para o processamento correto da Query, mesmo que eles estejam aps o comando exit. A sada para esta Query, arranjada em ordem decrescente por BALANO FINAL, parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ========================= Cooper 1.471,35 Hill 1.296,59 Smith 1.060,40 Evans 912,97 Jefferson 852,80 ========================= exp Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: exp Funo cientfica. A funo exp calcula o valor exponencial de um valor numrico. exp(VALOR NUMRICO) Um valor numrico igual a ex, onde e = 2,71828183. exp(2) Retorna: 7,3890561 exp(-3) Retorna: 0,049871

Lexicografia DQL

6-57

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

firstc Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: Exemplos: firstc Funo texto. A funo firstc extrai um nmero especificado de caracteres (n) do incio (esquerda) de um valor texto. firstc(VALOR TEXTO, n) Uma cadeia de n caracteres de comprimento. Os espaos anteriores so incluidos na contagem de caracteres (n). firstc(Zeroconsult Tecnologia Ltda., 11) Retorna: Zeroconsult firstc(Novo Usurio, 4) Retorna: Novo firstc(ULTIMO NOME, 4) Retorna: Os primeiros quatro caracteres do campo ULTIMO NOME para cada registro processado. Se o registro contiver o valor Holmes no campo ULTIMO NOME, a funo retornar Holm. firstlast Palavra Chave: Tipo: Propsito: firstlast Funo texto. A funo firstlast converte um valor texto da forma: ltimo Nome, Primeiro Nome [Intermedirios] para a forma Primeiro Nome [Intermedirios] ltimo Nome. firstlast(VALOR TEXTO) Um valor texto. Esta funo usada quando nomes so armazenados em um nico campo. O contedo do campo rearranjado para que a primeira palavra (isto , o sobrenome) passe a ser a ltima palavra da frase. Se a primeira palavra estiver seguida por uma vrgula, a mesma ser excluida.

Sintaxe: Retorna: Uso:

6-58

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

firstlast(Anthony, Susan B.) Retorna: Susan B. Anthony firstlast(Elliot, T. S.) Retorna: T. S. Elliot firstlast(NOME COMPLETO) Retorna: O valor do campo ULTIMO NOME na forma mostrada acima para todos os registros processados. Se um registro contiver o valor Holmes, Sherlock no campo NOME COMPLETO, a funo retornar Sherlock Holmes. firstw

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso:

firstw Funo texto. A funo firstw extrai um nmero especificado de palavras do incio (esquerda) de um valor texto. firstw(VALOR TEXTO, n) Um valor texto de n palavras de comprimento. firstw(CAMPO, n) retorna as primeiras n palavras do campo, incluindo smbolos de pontuao intermedirios. Os espaos iniciais so tratados como delimitadores. Os espaos finais so ignorados. Se existirem n ou menos palavras no campo, a funo firstw retornar o valor texto original. firstw(Zeroconsult Tecnologia Ltda., 2) Retorna: Zeroconsult Tecnologia firstw(Novo Usurio, 1) Retorna: Novo firstw(TTULO DO LIVRO, 2) Retorna: as primeiras 2 palavras do campo TTULO DO LIVRO, para cada registro processado na Query. Se o registro contiver o valor Os Ces de Baskervilles no campo TTULO DO LIVRO, a funo firstw retornar Os Ces.

Exemplos:

Lexicografia DQL

6-59

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

floor Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: floor Funo matemtica. A funo floor arredonda um valor numrico para o inteiro imediatamente anterior. floor(VALOR NUMRICO) Um valor inteiro. floor(5,000) Retorna: 5 floor(5,999) Retorna: 5 for Palavra Chave: Tipo: Propsito: for Comando de processamento. O comando for especifica o Formato o qual registros so selecionados para processamento, e quais os critrios de seleo dos registros. O comando for sempre a primeira palavra numa Query de nvel Baixo. Uma Query de nvel Baixo pode ter apenas um comando for, o qual especifica o Formato primrio da Query (veja o Exemplo 1). Uma Query de nvel Alto pode ter vrios comandos for, para selecionar registros de vrios Formatos (veja o Exemplo 2). Uma Query de nvel Alto, os comandos for podem ser encadeados, para alterar a sequncia de aes do programa (veja o Exemplo 3). Quando usado para selecionar um Formato primrio, o comando for exige um ponto-e-vrgula. Caso contrrio, o comando for no exige um ponto-e-vrgula.

Uso:

6-60

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando for sempre terminado com um comando end. Todos os comandos entre for e o end correspondente so executados uma vez para cada registro selecionado pelo comando for. Sintaxe: NOTA: for FORMATO | RELAO [named NOME] [with (critrios)] [;] O comando for a palavra mais frequentemente usada na DataEase Query Language. A maioria das rotinas de processamento comeam por este comando. Query de nvel Baixo Usando o comando for para acessar o Formato primrio for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL . end Esta Query diz ao DataEase: 1) Selecione todos os registros do Formato CLIENTES que possuam mais de 500 no campo BALANO FINAL. 2) Para cada registro selecionado, imprima os campos ULTIMO NOME e BALANO FINAL. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ===================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ===================================== Note que no Exemplo 1, por causa do comando for ser usado para especificar o Formato primrio, ele termina com um ponto-e-vrgula. No Exemplo 2, no entanto, no existe o ponto-e-vrgula, pois ele especifica outro que no o Formato primrio.

Exemplo 1:

Lexicografia DQL

6-61

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

Query de nvel Alto Usando dois comandos for sem encadeamento for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order . end for PEDIDOS ; list records PEDIDO # in order ; TOTAL PEDIDO . end A Query do Exemplo 2 diz ao DataEase: 1) Selecione os registros de CLIENTES que possuem mais de 500 no campo BALANO FINAL. 2) Para cada registro selecionado, imprima o campo ULTIMO NOME. 3) Selecione todos os registros de PEDIDOS. 4) Para cada registro selecionado, imprima os campos PEDIDO # e TOTAL PEDIDO. Como impossvel alinhar propriamente as informaes que so processadas e impressas em sequncia em dois Formatos diferentes, esta Query produz uma sada que difcil de ler, como mostrado abaixo:
ULTIMO NOME PEDIDO # TOTAL

================================================= = Adams Cooper Evans Hill Ivers ================================================= A00005 A00105 A21050 A35600 A42035 A77007 123,50 74,30 27,50 39,60 160,75 17,95

=================================================

Embora voc possa utilizar o comando output para melhorar a aparncia deste relatrio, a Query mais eficiente e gera
6-62 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

resultados mais teis quando voc encadeia comandos for, como mostrado no Exemplo 3.

Lexicografia DQL

6-63

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 3:

Query de nvel Alto Com comandos for encadeados for CLIENTES with BALANO FINAL > 500 ; for PEDIDOS list records CLIENTES ULTIMO NOME in groups ; PEDIDOS PEDIDO # in order ; PEDIDOS TOTAL PEDIDO . end end Nesta Query, o segundo comando for, o qual encadeado ao primeiro, seleciona todos os registros no Formato CLIENTES e executa a srie de comandos entre o segundo for e o primeiro end, para cada registro relacionado. Esta Query diz ao DataEase: 1) Selecione os registros de CLIENTES que tenham mais de 500 no campo BALANO FINAL. 2) Encontre todos os registros de PEDIDOS relacionados com cada registro selecionados em CLIENTES. 3) Para cada registro de CLIENTES, imprima o campo ULTIMO NOME. 4) Para cada registro de PEDIDOS, imprima os campos PEDIDO # e TOTAL PEDIDO. A sada para esta Query, arranjada em grupos por ULTIMO NOME, e em ordem crescente por PEDIDO #, parecida com o mostrado abaixo:
ULTIMO NOME PEDIDO # TOTAL

================================================= Adams A00005 A35600 Cooper A42035 Evans A00105 Hill A77007 Ivers A21050 27,50 17,95 74,30 160,75 123,50 39,60

=================================================

6-64

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O operador in groups precede o operador in order na Query. O operador in groups diz ao DataEase para processar todos os registros de cada cliente juntos em grupos de registros iguais, imprimindo-os em ordem alfabtica. O operador in order diz ao DataEase para arranjar os dados em order crescente por PEDIDO #. Funes Palavra chave: Tipo: Propsito: Funes Conceito. As 58 funes DataEase executam clculos, manipulam texto, e executam outras operaes que economizam digitao. Existem nove grupos de funes sumarizadas brevemente abaixo. A funo if retorna um entre dois valores, baseado na hiptese de uma avaliao de uma determinada condio ser verdadeira. As funes data convertem uma data em um nmero representando o dia, o ms, o ano, o dia da semana ou o dia do ano para a data especificada. As funes extenso convertem uma data ou um valor numrico no seu texto correspondente. As funes hora extraem as horas, minutos ou segundos de uma hora na forma HH:MM:SS, alm de definir se uma determinada hora anterior ao meio-dia (AM) ou posterior (PM). As funes texto so usadas para concatenar, truncar ou manipular um valor texto. As funes financeiras calculam o valor inicial, o valor final, a taxa de juros envolvida na operao, o valor da prestao a ser paga ou o nmero de perodos necessrio para terminar uma transao financeira, fornecidos os valores das outras quatro variveis. As funes cientficas fornecem um valor base para uma exponenciao, deriva logaritmos naturais e base 10, ou derivam a raiz quadrada de um nmero. As funes trigonomtricas convertem um valor numrico para um valor expresso em radianos.

Lexicografia DQL

6-65

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

As funes matemticas executam vrias operaes comuns de arredondamento, ou retornam o valor absoluto de um valor numrico especfico. A funo random gera um nmero pseudo-aleatrio. Para uma explicao completa de qualquer uma das funes da DQL, veja o item correspondente sob o nome da funo, nesta lexicografia. futurevalue Palavra Chave: Tipo: Propsito: futurevalue Funo financeira. A funo futurevalue calcula o valor final de uma transao financeira, dados o valor presente, a prestao, a taxa de juros e o nmero de perodos. futurevalue(ValorPresente, Prestaes, Taxa, Perodos) Um valor numrico (o valor futuro aps todos os pagamentos terem sido feitos). Se o pagamento da prestao aumentar o valor do investimento, (por exemplo, uma anuidade), o valor da prestao deve ser expresso como um nmero positivo. Se o pagamento da prestao diminuir o valor do investimento (por exemplo, a amortizao de um emprstimo), o valor da prestao deve ser expresso como um valor negativo. A taxa de juros, prestaes e nmero de perodos precisam estar declarados com a mesma ordem de grandeza. Por exemplo, se forem feitos pagamentos mensais de um emprstimo de 5 anos, o nmero de perodos ser de (5 * 12), ou 60. A taxa de juros precisa ser expressa na mesma ordem de grandeza (a taxa mensal a taxa anual dividida por 12). A taxa de juros tambm precisa ser expressa como um nmero completo (10% 10, no 0,10). Exemplo 1: futurevalue(10000, 100, 10 / 12, 120) Retorna: 47.554,91 Este exemplo calcula o valor futuro (futurevalue) de um plano mensal de poupana, se voc comear com 10000 e pagar mensalmente 100 por 12 anos, a uma taxa de 10% ao ano.

Sintaxe: Retorna: Uso:

6-66

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

futurevalue(10000, 1200, 10, 12) Retorna: 57.045,42 Este exemplo calcula o valor futuro de um plano anual de poupana, se voc o comear com 10000, e incluir 1200 por ano, por 12 anos, a uma taxa de juros de 10% ao ano. Ambos os exemplos assumem que as prestaes so sempre pagas no incio de cada perodo.

NOTA:

As funes financeiras do DataEase so derivadas da frmula abaixo: Os asteriscos duplos significam eleve o nmero anterior pelo nmero a seguir, no podem ser usados na Query.
futurevalue = Valor Presente * ((1 + (taxa / 100)) ** perodos) + (prestao / (taxa / 100)) * (((1 + (taxa / 100)) ** perodos) - 1)

global Palavra Chave: Tipo: Propsito: global Palavra chave. A palavra chave global usada para definir uma varivel global. Uma varivel usada para armazenar um valor, como uma cadeia de caracteres ou o resultado de um clculo, que pode mudar durante o processamento da Query.. O status de uma varivel pode ser global (denotado pela palavra chave global) ou temporria (denotado pela palavra chave temp). Uma varivel temporria mantm o seu valor apenas durante o processamento da rotina atual. Uma varivel global pode passar o seu valor de uma rotina para outra. Para passar o valor de uma varivel de uma rotina para outra, a varivel precisa ser definida de forma idntica nas duas rotinas. Sintaxe: Uso: global NOME DA VARIVEL Numa rotina de controle que executa duas ou mais rotinas de processamento, cada varivel global de mesmos nome e tipo considerada a mesma varivel, e passa o valor de uma rotina para outra. Se uma rotina de controle precisa de dados de uma relao, os dados podem ser obtidos em uma rotina de processamento e armazenados em uma varivel global.
6-67

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1:

define global RECEITAS Number . define global DESPESAS Number . define global LUCROS Number . run procedure TOTAIS MENSAIS . if global RECEITAS > global DESPESAS then run procedure BONUS PAGAMENTO . else run procedure PAGAMENTO COMUM . end Esta Query uma rotina de controle que diz ao DataEase: 1) Crie (define) trs variveis globais, de nomes RECEITAS, DESPESAS e LUCROS, para armazenar trs valores diferentes enquanto a Query estiver sendo processada. 2) Execute a rotina chamada TOTAIS MENSAIS. Esta rotina (mostrada abaixo) calcula a receita e a despesa total para o ms, e subtrai o segundo do primeiro, determinando o valor do lucro. Quando cada um destes totais calculado, ele valorizado para a varivel global correspondente. 3) Se a varivel RECEITAS for maior que a varivel DESPESAS, execute a rotina BONUS PAGAMENTO, usando o valor da varivel LUCROS para calcular o bnus de cada funcionrio (uma percentagem do lucro com base no nvel de salrio do funcionrio). 4) Se a varivel RECEITAS for menor ou igual varivel DESPESAS, execute a rotina PAGAMENTO COMUM. A rotina de processamento TOTAIS MENSAIS definida como mostrado abaixo:

Exemplo 2:

define global RECEITAS Number . define global DESPESAS Number . define global LUCROS Number . assign global RECEITAS := sum of PEDIDOS TOTAL PEDIDO with (DATA between 01/01/89 to 31/01/89) . assign global DESPESAS := sum of ESTOQUES TOTAL PEDIDO with (DATA between 01/01/89 to 31/01/89) . assign temp LUCROS := global RECEITAS - global DESPESAS . end A caracterstica chave deste exemplo o fato das variveis globais terem sido identicamente definidas na rotina de processamento a qual calcula o valor de cada varivel e na rotina de processamento, a qual passa estes valores de uma rotina de processamento para outra.

6-68

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-69

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Grupo Palavra Chave: Tipo: Propsito: Uso: Grupo Conceito. O agrupamento permite que voc processe registros com o mesmo valor de um campo juntos. Existem dois operadores da DQL que controlam o agrupamento: in groups e in groups with group totals. O operador in groups faz com que os registros com valores de campo idnticos sejam processados como um simples grupo, e os grupos sejam automaticamente ordenados crescentemente. Por exemplo, os presidentes dos Estados Unidos que eram membros do Partido Democrata so impressos juntos como um grupo, seguidos pelos presidentes do Partido Republicano. Exemplo 1: for PRESIDENTES DOS EUA ; list records

end

PARTIDO POLITICO in groups ULTIMO NOME in order ; PRIMEIRO NOME .

A sada para esta Query, agrupada por PARTIDO POLITICO, parecida com o mostrado abaixo:
PARTIDO ULTIMO NOME PRIMEIRO NOME =========================================== DEMOCRATA Carter Jimmy Johnson Lyndon Kennedy John REPUBLICANO Bush George Ford Gerald Nixon Richard Reagan Ronald ==========================================

O operador in groups with group-totals agrupa os registros e gera totais estatsticos para cada grupo. Por exemplo, se ns trocarmos a terceira linha da Query anterior para:

6-70

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

for PRESIDENTES DOS EUA ; list records

end

PARTIDO POLITICO in groups ULTIMO NOME in order ; PRIMEIRO NOME .

with group-totals ;

A sada inclui estatsticas geradas a nvel de grupo (mostrado abaixo):


PARTIDO ULTIMO NOME PRIMEIRO NOME ========================================== DEMOCRATA Carter Jimmy Johnson Lyndon Kennedy John Total de Grupo 3 REPUBLICANO Bush George Ford Gerald Nixon Richard Reagan Ronald Total de Grupo 4 ==========================================

Existem dois pontos chave a serem lembrados quando se usa o agrupamento: O agrupamento automaticamente ordena os grupos em ordem crescente (ou seja, os presidentes do Partido Democrata so impressos antes dos presidentes do Partido Republicano). Os operadores in groups e in groups with group-totals sempre precedem os operadores de ordenao (in order e in reverse) na Query. highest of Palavra Chave: Tipo: Propsito: highest of Operador de estatsticas relacionais. O operador highest of encontra o valor mais alto de um determinado campo de um registro entre todos os registros que satisfazem o critrio de seleo especificado. O resultado pode aparecer como um item da lista na rea de detalhes do relatrio, ou como uma estatstica na rea de sumrio, no final de cada grupo e no final do relatrio.
6-71

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe: Retorna:

highest of FORMATO | RELAO [named NOME] [with (critrios)] CAMPO ; Um valor do mesmo tipo do campo especificado. Quando um campo Escolha especificado, o DataEase retorna o valor da opo de nmero mais elevado, no o maior texto da opo. for CLIENTES ; list records end

Exemplo:

ULTIMO NOME in order ; highest of PEDIDOS TOTAL PEDIDO .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES, e imprima o campo ULTIMO NOME de cada registro em ordem alfabtica. 2) Para cada registro de CLIENTES selecionado, encontre todos os registros relacionados no Formato PEDIDOS (aqueles que possuem o mesmo CLIENTE #). 3) Imprima o maior TOTAL PEDIDO do conjunto de registros selecionado em PEDIDOS. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo: ULTIMO NOME MAIOR TOTAL PEDIDO

======================================= === Adams 195,00 Cooper 225,00 Evans 105,00 Hill 125,00 Ivers 75,00 ======================================= ==== Se voc tambm quiser incluir o maior TOTAL PEDIDO entre este grupo de pedidos, altere a quarta linha da Query para: highest of PEDIDOS TOTAL PEDIDO : item max . hours Palavra Chave: Tipo: Propsito: hours Funo hora. A funo hours extrai a hora de um valor hora, expresso na forma do relgio de 24 horas.
Lexicografia DQL

6-72

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe:

hours (VALOR HORA)

Lexicografia DQL

6-73

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Retorna: Exemplo:

Um nmero inteiro, entre 00 e 23. hours(12:00:00) (meio-dia) Retorna: 12 hours(23:59:00) (um minuto para a meia-noite) Retorna: 23

NOTA:

O texto entre parnteses acima (por exemplo, meio-dia) apenas para melhorar a clareza da hora do dia; ele no faz parte da funo hours. if, Comando

Palavra Chave: Tipo: Propsito:

Comando if Comando procedural. O comando if executa uma entre duas aes (ou conjuntos de aes) com base se a uma condio determinada for verdadeira ou falsa. Quando o processamento atinge o comando if, o DataEase avalia a condio que segue a palavra chave if. Se a condio especificada for verdadeira, o DataEase executa todos os comandos que seguem a palavra chave then, at que o processamento atinja o comando end ou else correspondente. Se a condio especificada for falsa, o DataEase executa todos os comandos que seguem a palavra chave else, at o processamento atingir o comando end correspondente.

Sintaxe:

if CONDIO then [AO 1 AO 2 . . AO N .] [else AO 1 AO 2 . . AO N .]

end

6-74

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1:

for CLIENTES ; if highest of PEDIDOS DATA < 01/01/80 then delete records . else delete records in PEDIDOS with (DATA < 01/01/80) . end end Esta Query diz ao DataEase: 1) Para cada registro de CLIENTES, encontre o registro apropriado em PEDIDOS com a data do pedido mais recente. 2) Se a data do pedido mais recente for anterior a 1 de janeiro de 1980, exclua o registro de CLIENTES. 3) Se o pedido mais recente do cliente for posterior data acima, exclua todos os registros relacionados em PEDIDOS com datas anteriores a 1980. O primeiro end marca o fim do comando if, o qual seleciona os registros a excluir. O segundo end marca o fim do comando for, o qual seleciona os registros do Formato primrio.

Uso:

Uma Query pode conter vrios comandos if encadeados um dentro do outro (veja o Exemplo 2). Estes comandos if adicionais podem aparecer aps um then ou else; no entanto, um comando if encadeado s pode ser executado se a condio anterior for verdadeira. Quando comandos if esto encadeados, o primeiro end corresponde ao ltimo comando if declarado, e cada if deve ter um end correspondente. Esta regra se aplica para todos os comandos procedurais encadeados (inclusive case, for, if e while). Veja Comandos Encadeados, nesta lexicografia, para maiores informaes.

Exemplo 2:

for PEDIDOS ; if PEDIDOS TOTAL PEDIDO > 500 then modify records in CLIENTES STATUS := PREFERENCIAL . if DATA between 01/01/89 to current date then enter a record in CATALOGO CLIENTES copy all from CLIENTES . end end

end

Lexicografia DQL

6-75

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz ao DataEase para dividir os registros de PEDIDOS em dois grupos, e process-los da seguinte maneira: 1) Os registros com o campo TOTAL PEDIDO maior que 500 tm o seu campo STATUS modificado para PREFERENCIAL. 2) Os registros com o TOTAL PEDIDO maior que 500 e a DATA do pedido entre o incio de 1989 e hoje so modificados e copiados para o Formato CATALOGO CLIENTES. Neste exemplo, o segundo comando if, o qual seleciona um subgrupo de registros selecionados pelo primeiro comando if, encadeado dentro do primeiro comando if. if, Funo Palavra Chave: Tipo: Propsito: Funo if Funo condicional. A funo if retorna um entre dois valores especificados, com base em se o resultado da avaliao de uma condio verdadeiro ou falso. Uma Query pode possuir vrias funes if encadeadas uma dentro da outra. if(CONDIO, VALOR VERDADEIRO, VALOR FALSO)
VALOR VERDADEIRO se a avaliao de CONDIO for verdade, ou VALOR FALSO se a avaliao de CONDIO resultar em falso.

Sintaxe: Retorna: Uso:

Geralmente, voc pode especificar qualquer tipo de valor que voc desejar em VALOR VERDADEIRO e VALOR FALSO. Em certos casos, no entanto, o DataEase exige que estes valores sejam do mesmo tipo que o valor retornado pela condio especificada. Por exemplo: if(ampm(current time) = AM, na manh, tarde) aceitvel, pois ambos os valores usados na condio (AM ou PM) e os valores finais retornados (na manh ou tarde) so expresses texto.

6-76

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Por outro lado: if(12 < hours(current time), na manh, tarde) pode ser proibida, porque o valor usado na condio um valor numrico, e os valores que ns queremos que o DataEase retorne so valores texto. Se voc est com problemas ao gravar uma Query que contm uma funo if, experimente trocar o tipo dos valores verdadeiro e falso. Exemplo: for CLIENTES ; list records

end

ULTIMO NOME in order ; BALANO FINAL ; if(BALANO FINAL > 500,

SIM, NO) .

Esta Query diz ao DataEase: Para cada registro do Formato CLIENTES, imprima os campos ULTIMO NOME e BALANO FINAL. Se o valor de BALANO FINAL for maior que 500, mostre o valor SIM na sada do relatrio. Se o valor de BALANO FINAL no for maior que 500, imprima o valor NO. A sada do relatrio, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado a seguir:
ULTIMO NOME BALANO MAIS DE 500

================================================= ===== Adams 595,00 SIM Anderson 350,00 NO Brown 250,00 NO Cooper 725,00 SIM Davis 300,00 NO Evans 865,00 SIM Hill 525,00 SIM Ivers 675,00 SIM Jenkins 140,00 NO McDonald 425,00 NO ================================================= ====

Lexicografia DQL

6-77

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

import Palavra Chave: Tipo: Propsito: import Comando de controle. A funo import importa um arquivo de dados para o banco de dados atual. Ele pode ser usado para importar dados em qualquer ponto de uma rotina de controle. Aps executar a importao, os dados podero ser usados pela rotina de controle. import NOME DA ESPECIFICAO DE IMPORTAO o comando import pode ser usado apenas para executar uma especificao de importao previamente definida. O nome que segue o comando import o nome do arquivo da especificao de importao. Este nome pode ter at 8 caracteres, sem espaos intermedirios. Veja o Volume 2, Captulo 5, Utilidades do Banco de Dados, para informaes sobre como uma especificao de importao definida. Numa rede local, se outro usurio estiver atualmente utilizando algum recurso necessrio para a execuo do comando import, o DataEase vai mostrar uma mensagem de Conflito de Recursos. Enquanto esta mensagem estiver sendo mostrada, o DataEase vai tentar executar o comando aps pequenos intervalos. Se voc quiser interromper a rotina neste momento, voc vai precisar reinicializar o computador. Quando o recurso estiver disponvel novamente, o DataEase continua automaticamente a execuo do comando, e continua o processamento da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes. Exemplo: import ETIQUETA . run procedure IMPRIME CARTAS . Esta Query diz ao DataEase: 1) Execute a especificao de importao ETIQUETA. 2) Quando a importao tiver terminado, execute a rotina IMPRIME CARTAS.

Sintaxe: Uso:

Rede:

6-78

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

in Palavra Chave: Tipo: Propsito: in Palavra Chave. O operador in diz ao DataEase para usar outro Formato que no o Formato primrio, quando estiver executando um comando list records, delete records, modify records e enter a record. in FORMATO | RELAO [named NOME] [with (critrios)] Quando o operador in usado sem critrios de seleo, o DataEase executa a ao para todos os registros do Formato especificado. Se voc no especificar FORMATO, o DataEase vai executar a ao para o Formato primrio. O operador in no deve ser usado em conjunto com o Formato primrio (veja o Exemplo 1). for CLIENTES modify records in PEDIDOS end

Sintaxe: Uso:

Exemplo 1:

TOTAL PEDIDO := TOTAL PEDIDO - DESCONTO .

Esta Query d descontos em todos os registros de PEDIDOS relacionados com o registro de CLIENTES atualmente sendo processado. Como cada pedido est relacionado com apenas um cliente, cada registro descontado apenas uma vez. Exemplo 2: for PEDIDOS ; modify records in PEDIDOS end

TOTAL PEDIDO := TOTAL PEDIDO - DESCONTO .

Esta Query demonstra o uso ERRADO do operador in. Ela desconta todos os registros de PEDIDOS a cada registro de CLIENTES processado (cada pedido descontado quantas vezes existirem registros a processar). Exemplo 3: for PEDIDOS ; modify records
TOTAL PEDIDO := TOTAL PEDIDO - DESCONTO

end

Esta Query CORRETA modifica os registros do Formato primrio. A palavra chave in omitida de um comando list records, modify records ou delete records, quando a ao executada no Formato primrio.
Lexicografia DQL 6-79

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

6-80

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

in groups Palavra Chave: Tipo: Propsito: in groups Operador de agrupamento. O operador in groups diz ao DataEase para processar todos os registros com o mesmo valor de um determinado campo juntos, e mostrar na sada do relatrio uma forma agrupada (por exemplo, todos os clientes de So Paulo, ento todos os clientes de Sergipe, etc.). O identificador grupo mostrado apenas uma vez ao incio do grupo. Se forem especificadas estatsticas para quaisquer campos da sada, sero calculados subtotais para os grupos, mas no sero incluidos na sada do relatrio, a no ser que voc use in groups with group-totals. CAMPO in groups ; Numa Query, um item a ser processado in groups deve ser impresso antes de todos os itens da lista, inclusive itens in order. Quando um campo espoecifiado como in groups, os grupos so colocados in order automaticamente. Operadores de agrupamento no podem ser usados em conjunto com o operador relacional all (isto , se PEDIDOS for o Formato primrio, voc no poder usar o seguinte comando: all CLIENTES ESTADO in groups). Exemplo: for CLIENTES ; list records ESTADO in groups ; ULTIMO NOME in order . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES com o mesmo valor no campo ESTADO juntos como um grupo. 2) Mostre o identificador do grupo (ESTADO) uma vez ao incio do grupo. 3) Dentro de cada grupo, arranje os clientes em ordem alfabtica por ULTIMO NOME. A sada para esta Query parecida com o mostrado a seguir: ESTADO ULTIMO NOME ========================= RJ Adams Hill SP Cooper Evans Ivers =========================
Lexicografia DQL 6-81

Sintaxe: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

in groups with group-totals Palavra Chave: Tipo: Propsito: in groups with group-totals Operador de agrupamento. O operador in groups with group-totals diz ao DataEase para processar todos os registros com o mesmo valor de um campo determinado juntos, mostrando a sada numa forma agrupada (por exemplo, todos os clientes do Rio de Janeiro, depois os clientes de So Paulo, depois os clientes de Sergipe, etc.). CAMPO in groups with group-totals ; O identificador do grupo mostrado apenas uma vez, ao incio de cada grupo. Se forem determinadas estatsticas para quaisquer itens da lista, os subtotais de grupo sero calculados e incluidos na forma do relatrio. Os operadores de agrupamento no devem ser usados em conjunto com o operador relacional all (isto , voc no pode usar o seguinte comando: all CLIENTES ESTADO in groups with group-totals). Exemplo: for CLIENTES ; list records ESTADO in groups with group-totals ; ULTIMO NOME in order ; BALANO FINAL : item sum . end Esta Query diz: 1) Processe todos os registros de CLIENTES com o mesmo valor em ESTADO juntos como um grupo. 2) Mostre o identificador do grupo (ESTADO) uma vez, no incio de cada grupo. 3) Dentro de cada grupo, arranje os clientes em ordem alfabtica por ULTIMO NOME. 4) Imprima o campo BALANO FINAL, o subtotal para cada grupo de ESTADO, e a somatria de todos BALANO FINAL. ESTADO ULTIMO NOME BALANO

Sintaxe: Uso:

======================================= ===== RJ Adams 595,00 Hill 525,00 Total do Grupo 1.120,00 SP Cooper 725,00 Evans 865,00 Ivers 675,00 Total do Grupo 2.265,00
6-82 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

======================================= ===== TOTAL GERAL 3.385,00 in order Palavra Chave: Tipo: Propsito: in order Operador de ordenao. O operador in order diz ao DataEase para processar registros e mostrar a sada do relatrio na sequncia do menor para o maior valor do campo especificado (por exemplo, 01011 antes de 01012, antes de 01013, etc.). CAMPO in order ; O operador in order pode ser usado em qualquer tipo de campo. Campos hora, data ou nmero so ordenados do menor para o maior valor. Um campo Escolha ordenado pelo nmero da opo. Um campo Texto ordenado alfabeticamente. Os operadores de ordenao no podem ser usados em conjunto com o operador relacional all (por exemplo, voc no poder usar o seguinte comando: all CLIENTES ULTIMO NOME in order). Exemplo: for PEDIDOS ; list records ESTADO in groups ; CEP in order ; ULTIMO NOME in order . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES com o mesmo valor do campo ESTADO juntos como um grupo. 2) Mostre o identificador do grupo (ESTADO) uma vez, no incio de cada grupo. 3) Dentro de cada grupo, arranje os clientes do menor para o maior CEP. 4) Dentro de cada CEP, arranje os clientes em ordem alfabtica por ULTIMO NOME. A sada para esta Query parecida com o mostrado abaixo: ESTADO CEP ULTIMO NOME =================================== RJ 08854-000 Adams 08877-000 Hill SP 11745-000 Cooper 11745-000 Ivers
Lexicografia DQL 6-83

Sintaxe: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

11915-000 Evans ===================================

6-84

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

in reverse Palavra Chave: Tipo: Propsito: in reverse Operador de ordenao. O operador in reverse diz ao DataEase para processar os registros e mostrar a sada do relatrio na sequncia reversa, do maior para o menor valor de um determinado campo (por exemplo, 01013 antes de 01012, antes de 01011, etc.). CAMPO in reverse ; O operador in reverse pode ser usado em qualquer tipo de campo. Campos hora, data ou nmero so ordenados do maior para o menor valor. Um campo Escolha ordenado do maior nmero de opo para o menor. Um campo Texto ordenado em ordem alfabtica reversa. Os operadores de ordenao no podem ser usados em conjunto com o operador relacional all (por exemplo, voc no poder usar o seguinte comando da Query: all CLIENTES ULTIMO NOME in reverse). Exemplo: for CLIENTES ; list records ESTADO in groups ; CEP in reverse ; ULTIMO NOME in order . end Esta Query diz: 1) Processe todos os registros de CLIENTES com o mesmo valor em ESTADO juntos como um grupo. 2) Mostre o identificador do grupo (ESTADO) apenas uma vez, no incio de cada grupo. 3) Dentro de cada grupo, arranje os clientes do maior para o menor CEP. 4) Dentro de cada CEP, arranje os clientes em ordem alfabtica por ULTIMO NOME. A sada para esta Query parecida com o mostrado abaixo: ESTADO CEP ULTIMO NOME =================================== RJ 08877-000 Hill 08854-000 Adams SP 11915-000 Evans 11745-000 Cooper 11745-000 Ivers ===================================
Lexicografia DQL 6-85

Sintaxe: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

input Palavra Chave: Tipo: Propsito: input Comando de processamento. O comando input fornece todas as facilidades da Entrada de Registros, mas permite DQL processar os registros antes de serem incluidos ao banco de dados. Ele pode ser usado em qualquer ponto de uma rotina de processamento. input using FORMATO into FORMATO TEMPORRIO . Na sintaxe do comando input, FORMATO o nome do Formato do Banco de Dados. FORMATO TEMPORRIO o nome que o DataEase usa para referenciar um registro de input. Voc pode dar qualquer nome para este Formato, exceto um nome j existente no banco de dados. O nome de FORMATO TEMPORRIO precisa estar entre aspas quando for especificado pela primeira vez na Query. No existe limite para o nmero de comandos input que voc pode usar numa Query; no entanto, cada Formato do banco de dados precisa ser ligado a um nico FORMATO TEMPORRIO pelo comando input. Uso: O comando input diz ao DataEase para mostrar um Formato de entrada de registros especificado. Quando o Formato mostrado na tela, voc pode incluir um novo registro ou selecionar um registro existente usando a tecla F3 VER. Voc tambm pode usar a tecla F10 MULTI para ver registros em Formatos relacionados. Quando voc pressiona qualquer tecla de processamento (ESC, F2, F7 ou F8), o registro de input copiado na memria, e o nmero apropriado gravado na varivel current status, dependendo de qual tecla foi pressionada (veja a palavra chave current). O DataEase ento continua o processamento da rotina, usando os dados do comando input como se eles tivessem sido digitados no Formato data-entry. A varivel current status pode ser usada para controlar o processamento subsequente. O comando input pode manter apenas um registro na memria, sob um FORMATO TEMPORRIO por vez. Se voc quer processar mais de um registro usando o comando input, defina um looping usando a varivel current status. Para incluir um registro de input para o banco de dados, voc precisa usar o comando enter a record (veja o Exemplo 2).
6-86 Lexicografia DQL

Sintaxe:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1:

input using CLIENTES into TEMPCLIENTE . for PEDIDOS with (CLIENTE # = TEMPCLIENTE CLIENTE #) ; list records PEDIDO # ; TOTAL PEDIDO ; DATA . end Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES. 2) Quando o operador selecionar um registro especfico de CLIENTES, e pressionar F2, armazene este registro na memria (utilizando o nome TEMPCLIENTE para referenci-lo). 3) Encontre todos os registros em PEDIDOS com o campo CLIENTE # igual ao campo CLIENTE # do registro em TEMPCLIENTE. 4) Para cada registro selecionado, imprima os campos PEDIDO #, TOTAL PEDIDO e DATA. A sada para esta Query parecida com o mostrado abaixo: PEDIDO # TOTAL DATA

======================================= ===== A117095 895,00 30/09/89 I218159 710,75 12/01/89 W225250 505,80 28/04/89 G301457 420,00 12/05/89 F777651 365,40 20/08/89 P150110 125,00 19/02/89 AZ30552 220,85 03/06/89 W330910 625,00 05/04/89 ======================================= ===== Exemplo 2: while current status not = 1 do input using CLIENTES into TEMPCLIENTES . if status = 1 then break end enter a record in CATALOGO CLIENTES . copy all from TEMPCLIENTES . end Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES. 2) A cada vez que o operador pressionar uma tecla de processamento, verifique o valor da varivel current status. Se current status for um nmero diferente de 1 (causado pela tecla ESC), copie o registro de input no Formato CATALOGO
Lexicografia DQL 6-87

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

CLIENTES. Se current status for 1 interrompa a ao, sem incluir o registro. 3) Mostre o Formato CLIENTES novamente, para que o operador possa selecionar outro registro.

6-88

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOTA:

Se voc usar o comando input para acessar um MultiFormato, o DataEase mostra o Formato Principal e os SubFormatos na tela. Se voc incluir ou modificar o Formato Principal, as informaes so copiadas na memria e processadas pela Query como mostrado nos exemplos acima. Se voc incluir ou modificar registros no SubFormato, no entanto, eles sero imediatamente incluidos no banco de dados. install appl

Palavra Chave: Tipo: Propsito:

install appl (instalar aplicao) Comando de controle. O comando install appl permite que voc instale ou altere formatos ou rotinas no banco de dados, ou instale uma nova aplicao no banco de dados. Quando o processamento atinge o comando install appl, o DataEase pergunta pelo nome do arquivo de instalao. install appl NOME DO ARQUIVO . O nome do arquivo que segue o comando install appl o nome do arquivo de comandos de instalao. Este nome pode ter at 8 caracteres, sem espaos intermedirios. Veja o Volume 2, Captulo 5, Utilidades do Banco de Dados, para maiores informaes sobre como as aplicaes so instaladas.

Sintaxe:

Rede:

Numa rede local, se outro usurio estiver usando algum recurso utilizado pelo comando install appl, o DataEase mostrar uma mensagem de Conflito de Recursos. Enquanto esta mensagem estiver sendo mostrada, o DataEase vai tentar executar o comando em pequenos intervalos. Se voc quiser abandonar a rotina neste momento, voc vai precisar reinicializar o computador. Quando o recurso exigido estiver disponvel, o DataEase continua o processamento, e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento multi-usurio.

Exemplo:

install appl A:CATALOGO . run procedure MALA DIRETA . Esta Query diz ao DataEase: 1) Instale a aplicao CATALOGO do disco no drive A no banco de dados. 2) Quando a nova aplicao estiver instalada, execute a rotina MALA DIRETA.

Lexicografia DQL

6-89

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

installment Palavra Chave: Tipo: Propsito: installment Funo financeira. A funo installment calcula o pagamento peridico de prestaes exigido para uma transao financeira, dados o valor presente, o valor futuro, a taxa de juros e o nmero de perodos. installment(ValorPresente, ValorFuturo, Taxa, Perodos) Um valor numrico (o valor da prestao). Se o valor da prestao aumentar o valor do investimento (por exemplo, uma anuidade), o valor numrico retornado ser positivo. Se o pagamento diminuir o valor do investimento (por exemplo, a amortizao de um investimento), o valor retornado ser negativo. A taxa de juros, valor das prestaes e o nmero de perodos precisa ser baseado nos mesmos termos. Por exemplo, se os pagamentos so feitos mensalmente por cinco anos, o nmero de perodos ser (5 * 12), ou 60 meses. A taxa de juros precisa ser expressa nos mesmos termos (a taxa de juros mensal a taxa de juros anual dividida por 12). installment(15000, 0, 10 / 12, 60) Retorna: -318,71 Este exemplo calcula o pagamento mensal da prestao necessria para pagar um emprstimo de 15000 em 5 anos, com uma taxa de juros anual de 10%. NOTA: As funes financeiras do DataEase so derivadas da frmula mostrada abaixo. O sinal ** (significando eleve o primeiro valor pelo segundo) no pode ser usado numa Query.
ValorFuturo = ValorPresente * ((1 + (taxa/100))) ** perodos) + (prestao / (taxa/100)) * (((1 + (taxa/100)) ** perodos) - 1)

Sintaxe: Retorna: Uso:

Exemplos:

6-90

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

item Palavra Chave: Tipo: Propsito: item Operador estatstico. O operador estatstico item diz ao DataEase para mostrar o valor do campo especificado para cada registro processado, em adio a qualquer outra estatstica especificada. O resultado aparece como um item da lista na rea de detalhes do relatrio. CAMPO : item [outros operadores estatsticos] ; Em um Relatrio Rpido, o valor de cada campo especificado automaticamente incluido na sada do relatrio. Se estatsticas forem especificadas em um campo, o valor do campo incluido apenas se o nome do campo for seguido pelo operador item. for CLIENTES ; list records end

Sintaxe: Uso:

Exemplo:

ULTIMO NOME in order ; BALANO FINAL : item min

max sum .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES em ordem alfabtica por ULTIMO NOME. 2) Imprima o campo BALANO FINAL (item). 3) Imprima o menor valor de BALANO FINAL (min). 4) Imprima o maior valor de BALANO FINAL (max). 5) Imprima a somatria de todos os campos BALANO FINAL (sum). A sada para esta Query parecida com o mostrado a seguir: ULTIMO NOME BALANO FINAL

======================================= ===== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ======================================= ===== MENOR BALANO FINAL 525,00 MAIOR BALANO FINAL 865,00 TOTAL BALANO FINAL 3.385,00

Lexicografia DQL

6-91

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

item Palavra Chave: Tipo: Propsito: item Operador de estatsticas condicionais. O operador de estatsticas condicionais item retorna um SIM ou NO, indicando se a comparao especificada verdadeira ou falsa. COMPARAO : item ; Numa Query, o operador item colocado aps um item da lista que comparado a um valor especificado. O operador item separado da comparao por dois pontos. for CLIENTES ; list records

Sintaxe: Uso:

Exemplo:

end

ULTIMO NOME in order ; BALANO FINAL : item min max BALANO FINAL > 500 : item .

sum ;

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES em ordem alfabtica por ULTIMO NOME. 2) Imprima o campo BALANO FINAL (item). 3) Imprima o menor valor de BALANO FINAL (min). 4) Imprima o maior valor de BALANO FINAL (max). 5) Imprima a somatria de todos os campos BALANO FINAL (sum). 6) Para cada cliente, especifique uma resposta SIM ou NO indicando se o campo BALANO FINAL deste cliente maior que 500 (operador de estatsticas condicionais item). A sada para esta Query parecida com o mostrado abaixo: NOME BALANO MAIOR QUE 500

======================================= == Adams 595,00 SIM Cooper 725,00 SIM Evans 865,00 SIM Hill 225,00 NO Ivers 675,00 SIM ======================================= == MENOR BALANO FINAL 225,00 MAIOR BALANO FINA L 865,00 TOTAL BALANO FINAL 3.085,00
6-92 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-93

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

jointext Palavra chave: Tipo: Propsito: Sintaxe: Retorna: Uso: jointext Funo texto. A funo jointext combina dois valores texto separados em um. jointext(VALOR TEXTO 1, VALOR TEXTO 2) Um valor texto com at 255 caracteres de comprimento. Quando dois ou mais textos so unidos, os espaos iniciais so mantidos, mas os espaos finais so ignorados. Para unir trs ou mais textos em um, voc pode utilizar funes jointext adicionais, como parmetros. jointext(Zero, consult) Retorna: Zeroconsult jointext(jointext(Zero, consult), Tecnologia) Retorna: Zeroconsult Tecnologia No exemplo acima, existe um espao antes da palavra Tecnologia. jointext(PRODUTO, para DOS) Retorna: DataEase para DOS No exemplo acima, existe um espao no incio da cadeia para DOS. O campo PRODUTO contm o valor DataEase. julian Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: julian Funo data. A funo julian converte um valor data para uma data no calendrio Juliano. julian(DATA) Um inteiro de cinco dgitos, na forma AADDD. AA so os ltimos dois dgitos do ano. DDD a posio do dia no ano (com 1 de janeiro = 001 e 31 de dezembro = 365, a no ser em anos bissextos, quando 366).

Exemplos:

6-94

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

julian(04/07/89) Retorna: 89185 julian(31/12/89) Retorna: 89365 Palavras chave

Palavra Chave: Tipo: Propsito:

Palavras chave Conceito. As palavras chave so usadas para assinalar operaes especiais, como a criao de variveis, executar funes condicionais, ou recuperar valores de um Formato data-entry. No modo Interativo, certas palavras chave so automaticamente inseridas na Query, quando necessrias. Existem nove palavras chave na DQL, especificadas abaixo: BLANK retorna um nulo (valor no especificado). current diz ao DataEase que voc quer acessar uma das oito variveis do sistema (date, time, page number, item number, user name, user level, computer name e status). data-entry diz ao DataEase para usar um valor encontrado em um determinado campo do Formato data-entry. do diz ao DataEase que aes executar quando a condio especificada em while for verdadeira. else diz ao DataEase que aes executar quando a condio especificada num comando if for falsa. global identifica uma varivel global. others diz ao DataEase que aes executar quando todas os comandos value anteriores ao comando case forem falsos. temp identifica uma varivel temporria. then diz ao DataEase que aes executar quando a condio especificada em if for verdadeira. Para uma explicao completa de qualquer uma das palavras chave da DQL, veja o tpico apropriado nesta lexicografia.

Uso:

Lexicografia DQL

6-95

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

lastc Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: lastc Funo texto. A funo lastc extrai um nmero especificado de caracteres do final (direita) de uma cadeia de caracteres. lastc(VALOR TEXTO, n) Um texto com o comprimento de n caracteres. lastc(CAMPO, 1) retorna o ltimo caracter no vazio do campo. Os espaos finais so ignorados. Se existirem n ou menos caracteres no campo, lastc retorna o texto original. lastc(DataEase, 4) Retorna: Ease lastc(Novo Usurio, 7) Retorna: Usurio lastc(PRIMEIRO NOME, 4) Retorna: Os ltimos quatro caracteres do campo PRIMEIRO NOME para cada registro processado. Se PRIMEIRO NOME contiver a palavra Sherlock, a funo retornar lock. lastfirst Palavra Chave: Tipo: Propsito: lastfirst Funo texto. A funo lastfirst converte um valor texto da forma Primeiro Nome [intermedirios] ltimo Nome para a forma ltimo Nome, Primeiro Nome [intermedirios]. lastfirst(VALOR TEXTO) Um valor texto. O contedo do campo rearranjado, para que a ltima palavra (isto , o ltimo nome) seja a primeira palavra do valor retornado. Uma vrgula inserida automaticamente aps o ltimo nome. Uso: O nome desta funo e a funo firstlast referem-se forma na qual os nomes esto armazenados em um nico campo.

Exemplos:

Sintaxe: Retorna:

6-96

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

lastfirst(Susan B. Anthony) Retorna: Anthony, Susan B. lastfirst(T. S. Eliot) Retorna: Eliot, T. S. lastfirst(NOME COMPLETO) Retorna: O valor do campo NOME COMPLETO na forma mostrada acima para todos os registros processados. Por exemplo, se um registro contm o valor Sherlock Holmes no campo NOME COMPLETO, a funo retornar Holmes, Sherlock. lastw

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso:

lastw Funo texto. A funo lastw extrai um nmero especificado de palavras do fim (direita) de uma expresso texto. lastw(VALOR TEXTO, n) Um valor texto de n palavras de comprimento. lastw(CAMPO, n) retorna as n ltimas palavras do campo, incluindo espaos intermedirios e marcas de pontuao. Os espaos finais so ignorados. Se existirem n ou menos palavras no campo, lastw retornar o valor original. lastw(Zeroconsult Tecnologia Ltda., 2) Retorna: Tecnologia Ltda. lastw(Novo Usurio, 1) Retorna: Usurio lastw(TITULO DO LIVRO, 2) Retorna: as duas ltimas palavras do campo TITULO DO LIVRO de todos os registros processados. Por exemplo, se um registro possui Os Ces de Baskerville no campo TITULO DO LIVRO, a funo retornar de Baskerville.

Exemplos:

Lexicografia DQL

6-97

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

length Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: Exemplos: length funo texto. A funo length conta o nmero de caracteres em um texto. length(VALOR TEXTO) Um valor inteiro. A funo length conta os espaos iniciais e intermedirios. Os espaos finais so ignorados. length(Zeroconsult Tecnologia Ltda.) Retorna: 28 length(Novo Usurio) Retorna: 12 length(COMPANHIA) Retorna: O nmero de caracteres do campo COMPANHIA de todos os registros processados. Se o campo COMPANHIA contiver o valor Zeroconsult Tecnologia Ltda., a funo retornar 28. list records Palavra Chave: Tipo: Propsito: list records Comando de processamento. O comando list records diz ao DataEase quais itens mostrar na sada do relatrio para cada registro processado pela Query. Estes itens so chamados itens da lista. list records in FORMATO | RELAO [named NOME] [with (critrios)] Cada item da lista precisa ser seguido por um ponto-e-vrgula, exceto o ltimo, o qual seguido por um ponto. Os valores especificados no comando list records podem ser ordenados, agrupados ou sumarizados com estatsticas, inserindo-se os operadores apropriados aps o item da lista.

Sintaxe: Uso:

6-98

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES ; list records ESTADO in groups with group-totals ; ULTIMO NOME in order ; BALANO FINAL : item min max sum . end Esta Query diz: 1) Processe todos os registros de CLIENTES com o mesmo valor em ESTADO juntos como um grupo. 2) Mostre o identificador do grupo (ESTADO) apenas uma vez, no incio de cada grupo. 3) Dentro de cada grupo, arranje os clientes em ordem alfabtica por ULTIMO NOME. 4) Imprima o campo BALANO FINAL (item). 5) Imprima subtotais de cada estatstica especificada para cada grupo (in groups with group-totals). 6) Imprima o menor BALANO FINAL (min). 7) Imprima o maior BALANO FINAL (max). 8) Imprima a somatria de todos os campos BALANO FINAL (sum). ESTADO NOME BALANO FINAL ========================== RJ Adams 500,00 Hill 525,00 Total do Grupo 1.025,00 SP Cooper 725,00 Evans 865,00 Ivers 675,00 Total do Grupo 2.265,00 ========================== MENOR BALANO FINAL 525,00 MAIOR BALANO FINAL 865,00 TOTAL BALANO FINAL 3.290,00 lock

Palavra Chave: Tipo: Propsito:

lock Comando de processamento. O comando lock funcional apenas quando se usa o DataEase numa rede local. O comando lock impede os usurios de consultar, incluir ou excluir dados em Formatos e registros os quais esto sendo usados por um relatrio ou rotina. O comando lock modifica as regras de travamento padro definidas pelo Administrador do Sistema. Para modificar as regras de travamento padro, o primeiro comando da Query precisa ser lock all files ou unlock all files. Se nenhum destes comandos aparecer no incio da Query, as regras de travamento padro governaro o funcionamento da rede local at que um comando lock ou unlock seja encontrado.

Lexicografia DQL

6-99

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Todos os comandos lock e unlock so terminados automaticamente no final da Query. Sintaxe: Uso: lock all files | file FORMATO | selected record [shared | exclusive] . O comando lock all files trava todos os Formatos referenciados pela Query. Os usurios podem ver registros nos Formatos travados, mas no podem incluir, excluir ou modificar registros nestes Formatos. O comando lock file trava o Formato especificado durante a rotina, ou at que o mesmo Formato seja especificado em um comando unlock. Quando um Formato individual ou registro travado, voc tambm precisa especificar que tipo de travamento deve ser aplicado (shared ou exclusive). Shared permite que outros usurios vejam registros no Formato travado, mas os proibe de incluir, excluir ou modificar. Exclusive impede todos os acessos ao Formato travado, inclusive para consulta. O comando lock selected record funciona como lock file, exceto pelo fato de que ele trava apenas o registro que est sendo atualmente processado. Quando o DataEase termina o processamento com este registro, ele automaticamente destravado. Use este comando apenas dentro de um comando for (veja o Exemplo 2). Se voc usar este comando fora de um looping for, no existiro registros selecionados; portanto, nada travado. Exemplo 1: lock file PEDIDOS shared . for CLIENTES with (sum of PEDIDOS TOTAL PEDIDO > 500) ; list records end
ULTIMO NOME ; BALANO FINAL

Esta Query diz ao DataEase: 1) Trave o Formato PEDIDOS, para que outros usurios possam ver registros, mas no possam incluir, excluir ou modificar registros em PEDIDOS durante o processamento da Query. 2) Selecione todos os registros de CLIENTES cujos registros relacionados em PEDIDOS possuam a somatria dos campos TOTAL PEDIDO maior que 500. 3) Para cada registro selecionado, imprima os campos ULTIMO NOME e BALANO FINAL. Note que travar PEDIDOS durante o processamento desta rotina impede que outros usurios incluam novos registros, os quais poderiam afetar o resultado de sum of.
6-100 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

for CLIENTES ; lock selected record shared . list records ; mean of PEDIDOS TOTAL PEDIDO .
ULTIMO NOME ; BALANO FINAL

end

Esta Query diz ao DataEase: 1) Selecione todos os registros de CLIENTES. 2) Trave cada registro assim que ele for selecionado, de modo que outros usurios possam v-los, mas no incluir novos, excluir ou modificar. 3) Para cada registro selecionado, imprima os campos ULTIMO NOME e BALANO FINAL, alm da mdia aritmtica do campo TOTAL PEDIDO de todos os registros relacionados em PEDIDOS. Neste exemplo, todos os registros de CLIENTES podem ser modificados, exceto o registro que est sendo atualmente processado. Para maiores informaes sobre a configurao sob redes locais e regras de travamento multi-usurio, veja o Volume 2, Captulo 4, Administrao do Sistema. lock db Palavra Chave: Tipo: Propsito: lock db (travar o Banco de Dados) Comando de controle. O comando lock db funcional apenas quando se usa o DataEase em uma rede local. Este comando proibe completamente que outros usurios possam acessar o banco de dados. lock db . O comando lock db usado para preservar a integridade dos dados durante uma rotina extensa, ou para prevenir conflitos ao instalar uma aplicao revisada no banco de dados. O comando lock db difere do comando de processamento lock em vrios aspectos: 1. Ele trava todo o banco de dados, em vez de Formatos ou registros. 2. No existe a opo shared (compartilhado) no comando lock db. Nenhum usurio pode ver registros, ou acessar qualquer Formato do banco de dados.
Lexicografia DQL 6-101

Sintaxe: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

3. O comando lock db no automaticamente terminado ao final da rotina. Uma vez travado o banco de dados, ele permanece travado at que um comando unlock db seja executado, ou que o usurio que travou o banco de dados saia do DataEase. Rede: Numa rede local, se outro usurio estiver usando algum recurso utilizado pelo comando lock db, o DataEase mostrar uma mensagem de conflito de recursos. Enquanto esta mensagem estiver sendo mostrada, o DataEase tentar automaticamente executar o comando, em pequenos intervalos. Se voc quiser interromper esta rotina neste ponto, voc vai precisar reinicializar o computador. lock db . unlock db . run procedure CALCULAR DESCONTOS run procedure IMPRIMIR PEDIDOS .

Exemplo:

Esta Query diz ao DataEase: 1) Trave o banco de dados atual. 2) Execute a rotina CALCULAR DESCONTOS. 3) Execute a rotina IMPRIMIR PEDIDOS. 4) Destrave o banco de dados. log Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: log Funo cientfica. A funo log calcula o logaritmo neperiano (ln) de um valor numrico. log(VALOR NUMRICO) Um valor numrico. log(3) Retorna: 1,098612 log(0,5) Retorna: -0,693147

6-102

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

log10 Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: log10 Funo cientfica. A funo log10 calcula o logaritmo na base 10 de um valor numrico. log10(VALOR NUMRICO) Um valor numrico. log10(3) Retorna: 0,477121 log10(0,5) Retorna: -0,301031 lower Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: lower Funo texto. A funo lower converte cada letra em sua correspondente em minsculas. lower(VALOR TEXTO) O valor texto especificado com todas as letras em minsculas. lower(DataEase) Retorna: infoease lower(Braslia, DF) Retorna: braslia, df lower(ULTIMO NOME) Retorna: o valor do campo ULTIMO NOME em minsculas para todos os registros processados. Se um registro contiver o valor HOLMES no campo ULTIMO NOME, a funo retornar holmes.

Lexicografia DQL

6-103

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

lowest of Palavra Chave: Tipo: Propsito: lowest of Operador de estatsticas relacionais. O operador lowest of encontra o menor valor do campo entre todos os registros que combinam num Formato relacionado. O resultado aparece como um item da lista, ou como uma estatstica ao fim de cada grupo e ao final do relatrio. lowest of FORMATO | RELAO [named NOME] [with (critrios)] CAMPO ; Um valor do mesmo tipo do campo especificado. Se um campo Texto for especificado, o DataEase retorna o menor valor ASCII. Se um campo Escolha for especificado, o DataEase retorna o menor nmero de opo, e no o menor valor (ou seja, no trabalha com campos Escolha). for CLIENTES ; list records end

Sintaxe: Retorna:

Exemplo:

ULTIMO NOME in order ; lowest of PEDIDOS TOTAL PEDIDO .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES e imprima o campo ULTIMO NOME em ordem alfabtica. 2) Para cada registro selecionado em CLIENTES, encontre os registros relacionados a ele em PEDIDOS (aqueles que possuem o mesmo valor no campo CLIENTE #). 3) Imprima o menor TOTAL PEDIDO para cada cliente, no conjunto de registros selecionados de PEDIDOS. A sada para esta Query, arranjada em ordem alfabtica por ULTIMO NOME, parecida com o mostrado abaixo: NOME MENOR TOTAL PEDIDO ========================== Adams 15,65 Cooper 22,40 Evans 18,10 Hill 12,50 Ivers 17,25 ========================== Voc tambm pode incluir o menor TOTAL PEDIDO entre este grupo de pedidos, trocando a quarta linha da Query para: lowest of PEDIDOS TOTAL PEDIDO: item min .
6-104 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

max Palavra Chave: Tipo: Propsito: max Operador estatstico. O operador max encontra o maior valor em um campo especificado entre todos os registros que esto sendo processados. O resultado aparece na rea de estatsticas do relatrio. VALOR : max [outros operadores estatsticos] ; O valor do mesmo tipo que o valor especificado. Se o valor for um campo Texto, max retorna o maior valor ASCII. max encontra o maior valor do campo especificado entre os registros sendo processados. highest of encontra o maior valor do campo especificado entre os registros relacionados ao registro sendo processado. for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item max sum . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham um valor maior que 500 no campo BALANO FINAL. 2) Imprima os clientes na ordem alfabtica do ULTIMO NOME. 3) Imprima o campo BALANO FINAL de cada cliente, e inclua o maior valor deste campo, juntamente com a somatria de todos os campos BALANO FINAL na sada do relatrio. A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL =========================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ============================================ MAIOR BALANO FINAL 865,00 TOTAL BALANO FINAL 3.385,00

Sintaxe: Retorna: Uso:

Exemplo:

Lexicografia DQL

6-105

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

mean Palavra Chave: Tipo: Propsito: mean Operador estatstico. O operador mean calcula a mdia aritmtica dos registros que esto sendo processados. O resultado aparece na rea de estatsticas do relatrio. VALOR : mean [outros operadores estatsticos] ; Um valor numrico. O operador mean calcula a mdia aritmtica dos valores de um campo especificado (a somatria dos valores do campo dividida pelo nmero de registros processados). Campos preenchidos com blank so ignorados pelo clculo. Campos que possuem um valor zero so incluidos no clculo. for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item mean sum . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham mais de 500 no campo BALANO FINAL. 2) Imprima os clientes em ordem alfabtica por ULTIMO NOME. 3) Imprima o campo BALANO FINAL de cada cliente, incluindo tambm a mdia aritmtica e a somatria dos valores deste campo. A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ========================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ========================================== MDIA BALANO FINAL 677,00 TOTAL BALANO FINAL 3.385,00

Sintaxe: Retorna: Uso:

Exemplo:

6-106

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

mean of Palavra Chave: Tipo: Propsito: mean of Operador de estatsticas relacionais. O operador mean of calcular o valor mdio de um campo para todos os registros de um Formato relacionado. O resultado pode aparecer como um item da lista, ou como uma estatstica na rea de sumrio de cada grupo e ao fim do relatrio. mean of FORMATO | RELAO [named NOME] [with (critrios)] CAMPO ; Um valor numrico. O operador mean of calcula a mdia aritmtica dos valores de um campo (a soma dos valores dividida pelo nmero de registros processados). Campos vazios (blank) so ignorados. Campos que possuem um valor zero so incluidos no clculo. for CLIENTES ; list records end

Sintaxe: Retorna: Uso:

Exemplo:

ULTIMO NOME in order ; mean of PEDIDOS TOTAL PEDIDO .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES, e imprima cada registro em ordem alfabtica por ULTIMO NOME. 2) Para cada registro de CLIENTES processado, encontre os registros relacionados em PEDIDOS (os registros cujo campo CLIENTE # so iguais). 3) Imprima o TOTAL PEDIDO mdio de cada cliente a partir do conjunto de registros relacionados de PEDIDOS. A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME MDIA TOTAL PEDIDOS =========================================== Adams 35,25 Coope r 72,40 Evans 48,10 Hill 25,00 Ivers 67,45 ============================================ Se voc quiser incluir o PEDIDO TOTAL mdio deste conjunto de pedidos, troque a quarta linha da Query para: mean of PEDIDOS TOTAL PEDIDO : item mean .
Lexicografia DQL 6-107

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

message Palavra Chave: Tipo: Propsito: message Comando procedural. O comando message diz ao DataEase para mostrar uma mensagem especfica. O contedo da mensagem pode ter at 4000 caracteres. Cada mensagem pode ter a sua cor caracterstica, alm de poder ser posicionada em qualquer lugar da tela. message TEXTO DA MENSAGEM [window] [pause] . Quando voc seleciona message da janela com os comandos da DQL, o DataEase pergunta: Digite a mensagem a ser mostrada. Voc pode escolher usar uma varivel do sistema, um operador relacional, uma funo e/ou um texto entre aspas, quando estiver digitando a mensagem. Quando voc terminar de digitar a mensagem, o DataEase oferece a voc a oportunidade de mostrar esta mensagem numa janela. Se voc selecionar esta opo, a mensagem poder ter at 4000 caracteres de comprimento. O DataEase cria automaticamente uma janela do tamanho apropriado para o texto da mensagem. Para dividir a mensagem em vrias linhas, insira uma barra vertical | para indicar uma nova linha (veja o Exemplo 1). Se voc quiser controlar o tamanho e localizao da janela da mensagem, voc poder especificar os seguintes parmetros no incio da mensagem (veja o Exemplo 2): # de colunas, Linha inicial, Coluna inicial, # de linhas, MENSAGEM Voc tambm pode controlar a cor e os destaques de toda ou parte da mensagem, delimitando-a com sinais de maior e menor <tratado como os nomes das teclas>, chaves {cor do campo normal} ou colchetes [texto comum], como definido no Formato Estilo de Impresso (veja o Exemplo 3). Para maiores informaes sobre destaques de mensagens, veja a explicao sobre o Formato Estilos de Tela, no Volume 2, Captulo 4, Administrao do Sistema.

Sintaxe: Uso:

6-108

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Se voc no selecionar uma janela, o comprimento da mensagem ser limitado a 40 caracteres, e ser mostrada em uma linha, no canto superior esquerdo da tela (veja o exemplo 4). Quando uma mensagem mostrada numa janela, o DataEase faz uma pausa: o usurio obrigado a pressionar uma tecla para tomar conhecimento da mensagem e continuar o processamento. Se voc no mostrar a mensagem numa janela, o DataEase pergunta se voc quer usar a caracterstica de pausa. Exemplo 1: message Desculpe.|Um nvel de segurana Alto necessrio|para executar esta rotina window . Esta mensagem mostrada numa janela. Existem avanos de linha aps as palavras Desculpe e necessrio. Exemplo 2: message 40, 15, 20, 3, Desculpe.|Um nvel de segurana Alto necessrio|para executar esta rotina window . Esta mensagem mostrada numa janela. Existem avanos de linha aps as palavras Desculpe e necessrio. A janela da mensagem ter 40 colunas de largura, comeando na linha 15, coluna 20, e ter 3 linhas de altura. Exemplo 3: message 40, 15, 20, 3, <Desculpe>.|Um nvel de segurana {Alto} necessrio|para [executar] esta rotina window . Esta mensagem mostrada numa janela. Existem avanos de linha aps as palavras Desculpe e necessrio. A janela da mensagem ter 40 colunas de largura, comeando na linha 15, coluna 20, e ter 3 linhas de altura. A palavra Desculpe est destacada como um nome de tecla de funo, como definido no Formato Estilos de Tela. A palavra Alto est destacada como um campo comum. A palavra executar tratada como texto comum. Exemplo 4: message Desculpe. Um nvel de segurana Alto necessrio para executar esta rotina pause . Esta mensagem mostrada no topo superior esquerdo da tela. A mensagem ser truncada aps a letra n da palavra necessrio (o comprimento mximo de 40 caracteres). Quando a mensagem for mostrada, o DataEase far uma pausa at que o usurio pressione uma tecla para tomar conhecimento da mensagem.

Lexicografia DQL

6-109

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

midc Palavra chave: Tipo: Propsito: Sintaxe: midc Funo texto. A funo midc extrai um nmero especificado de caracteres do meio de um valor texto. midc(VALOR TEXTO, m, n) onde m a posio inicial no valor texto, e n o nmero de caracteres a extrair. Retorna: Uso: Um texto com n caracteres de comprimento. midc(CAMPO, m, n) retorna n caracteres comeando na posio m (inclusive). Os espaos intermedirios e smbolos de pontuao so incluidos. Os espaos finais so ignorados. midc(DataEase, 5, 2) Retorna: Ea midc(Novo Usurio, 6, 3) Retorna: Usu midc(ULTIMO NOME, 4, 2) Retorna: dois caracteres, comeando no quarto caracter do campo ULTIMO NOME de todos os registros processados. Se um registro contiver o valor Holmes no campo ULTIMO NOME, a funo retornar me. midw Palavra Chave: Tipo: Propsito: Sintaxe: midw Funo texto. A funo midw extrai um nmero especificado de palavras do meio de um texto. midw(VALOR TEXTO, m, n) onde m o nmero da palavra no texto, e n o nmero de palavras a extrair. Retorna: Um texto de n caracteres de comprimento.

Exemplos:

6-110

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

midw(CAMPO, m, n) retorna n palavras comeando na palavra nmero m (inclusive). Os espaos intermedirios e smbolos de pontuao so incluidos. Espaos finais so ignorados. midw(Zeroonsult Tecnologia Ltda., 2, 1) Retorna: Tecnologia midw(Grupo de Novos Usurios, 2, 2) Retorna: de Novos midw(TITULO DO LIVRO, 2, 3) Retorna: trs palavras, iniciando a partir da segunda palavra no campo TITULO DO LIVRO de todos os registros processados. Se um registro contiver o valor Os Ces de Baskerville no campo TITULO DO LIVRO, a funo retornar Ces de Baskerville. min

Exemplos:

Palavra Chave: Tipo: Propsito:

min Operador estatstico. O operador min encontra o menor valor de um campo especificado entre todos os registros que forem processados. O resultado aparece na rea de sumrio de grupos e no final do relatrio. VALOR : min [outros operadores estatsticos] ; Um valor do mesmo tipo do valor especificado. Se o valor especificado for um texto, min retorna o menor valor ASCII. for CLIENTES ; list records end

Sintaxe: Retorna: Exemplo:

ULTIMO NOME in order ; BALANO FINAL : item min .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES, e imprima-os em ordem alfabtica por ULTIMO NOME. 2) Imprima cada campo BALANO FINAL, e inclua o menor BALANO FINAL na sada do relatrio. A sada para esta Query parecida com o mostrado abaixo:

Lexicografia DQL

6-111

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ULTIMO NOME BALANO FINAL ===================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ===================================== MENOR BALANO FINAL 525,00 minutes Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: minutes Funo hora. A funo minutes extrai os minutos de uma hora, expressa na forma do relgio de 24 horas. minutes(VALOR HORA) Um inteiro entre 00 e 59. minutes(12:00:00) Retorna: 00 minutes(23:59:00) Retorna: 59 mod Palavra Chave: Tipo: Propsito: mod Funo cientfica. A funo mod (mdulo) retorna o resto quando um valor numrico dividido por outro valor numrico. Se ambos os valores forem inteiros, a funo retornar um inteiro. Caso contrrio, a funo retornar um valor decimal. mod(VALOR NUMRICO 1, VALOR NUMRICO 2) Um valor numrico. mod(8, 3) Retorna: 2 mod(12,6 , 1,6) Retorna: 1,4

Sintaxe: Retorna: Exemplos:

6-112

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

modify records Palavra Chave: Tipo: Propsito: Sintaxe: modify records Comando de processamento. O comando modify records modifica registros em um Formato especificado. modify records in FORMATO | RELAO [named NOME] [with (critrios)] CAMPO := VALOR A MODIFICAR ; | . O comando modify records precisa especificar um Formato destino e os valores dos campos a serem modificados no Formato destino. Alternativamente, voc pode especificar um Formato fonte para copiar os dados dos campos do Formato fonte usando o comando copy all from. Assim que os dados forem incluidos no Formato destino, a checagem de erros automtica, e os erros so gravados num arquivo de exceo. Quando voc modifica registros no Formato primrio, a palavra chave in omitida, e no se usa pontuao aps o comando modify records (veja o Exemplo 1). Se nenhum critrio de seleo for usado, todos os registros do Formato primrio sero modificados. Exemplo 1: for CLIENTES with (any PEDIDOS TOTAL PEDIDO > 500) ; modify records BALANO FINAL := (BALANO FINAL - data-entry DESCONTO) . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham qualquer registro relacionado em PEDIDOS com mais de 500 no campo TOTAL PEDIDO. 2) Modifique cada um destes registros de CLIENTES, subtraindo o valor DESCONTO, digitado no Formato data-entry do campo BALANO FINAL. Quando voc modifica registros em um Formato que no seja o Formato primrio, a palavra chave in precede o nome do Formato, e o comando termina com um ponto-e-vrgula (veja o Exemplo 2). Se nenhum critrio de seleo for especificado, todos os registros do Formato especificado sero modificados.

Uso:

Lexicografia DQL

6-113

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 2:

for CLIENTES with ESTADO = SP ; modify records in PEDIDOS end

TOTAL PEDIDO := TOTAL PEDIDO + IMPOSTO DE SP .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham SP no campo ESTADO. 2) Para cada registro de CLIENTES selecionado, encontre todos os registros relacionados em PEDIDOS. Modifique cada registro relacionado em PEDIDOS adicionando o valor IMPOSTO DE SP ao campo TOTAL PEDIDO. month Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: month Funo data. A funo month extrai o ms (1-12) de uma data. month(VALOR DATA) Um inteiro entre 1 e 12. A forma da data selecionada na Administrao do Sistema troca a sequncia de apresentao da data, mas no altera o funcionamento da funo. month(12/31/89) Retorna: 12 (forma Norte-Americana) month(31/12/89) Retorna: 12 (forma Internacional) month(89/12/31) Retorna: 12 (forma Mtrica) named Palavra Chave: Tipo: Propsito: named Operador relacional. O operador named usado para dar um nome nico para cada relao, baseada em diferentes critrios de seleo, para que o DataEase possa distinguir vrias relaes entre os mesmos Formatos. RELAO named NOME NICO [with (critrios de seleo)]

Exemplos:

Sintaxe:

6-114

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

Durante uma Query, se voc incluir critrios de seleo a uma relao pr definida, a relao passa a ad-hoc, e os critrios pr definidos perdem o efeito. Da mesma maneira, quando voc inclui ou altera critrios de seleo numa relao ad-hoc, uma nova relao criada. Para que o DataEase possa acompanhar todas estas alteraes, cada relao precisa ter um nome nico, usando o operador named. Por causa dos critrios pr definidos serem anulados sempre que uma relao criada, voc precisa sempre definir o critrio de seleo completo na Query, sempre que voc a definir pela primeira vez. Subsequentemente, enquanto o critrio permanecer inalterado, voc pode usar o nome da relao sozinho, sem estabelecer novamente o critrio de seleo. Um nome de relao nico um nome arbitrrio. O nome que voc define para a relao anlogo ao campo Nome Opcional da Relao, usado no Formato Relaes. Ele pode ser qualquer nome, a menos que este nome j tenha sido usado pela Query. O nome colocado entre aspas na primeira vez que definido. No use aspas quando for utilizar o nome da relao nas vezes posteriores.

Exemplo 1:

for CLIENTES ; modify records in PEDIDOS named ATUAL with (CLIENTE # = CLIENTES CLIENTE # and PEDIDOS DATA > 01/01/89) TOTAL := TOTAL - data-entry DESCONTO . delete records in PEDIDOS named FORA DE EPOCA with (CLIENTE # = CLIENTES CLIENTE # and PEDIDOS DATA < 01/01/80) . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES. 2) Para cada registro processado, encontre os registros relacionados em PEDIDOS. 3) Divida os registros relacionados em dois grupos: um grupo chamado ATUAL (com data posterior a 1 de janeiro de 1989), e um segundo grupo chamado FORA DE EPOCA (com data anterior a 1 de janeiro de 1980). 3) Modifique os registros da relao ATUAL, subtraindo o valor de DESCONTO do Formato data-entry do campo TOTAL. 5) Exclua os registros da relao FORA DE EPOCA.

Lexicografia DQL

6-115

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Existe uma relao pr definida entre CLIENTES e PEDIDOS. Durante esta Query, ns estamos criando duas relaes ad-hoc diferentes entre CLIENTES e PEDIDOS, incluindo critrios de seleo com base no campo DATA. O operador named usado para definir um nome nico para cada grupo de registros, para que o DataEase possa distinguir entre estas duas novas relaes. Por causa do critrio de seleo anterior ser anulado sempre que uma nova relao criada, o critrio completo, incluindo o critrio usado na relao pr-definida (CLIENTE # = CLIENTES CLIENTE #), deve ser especificado quando cada relao identificada. Subsequentemente, enquanto o critrio de seleo permanecer inalterado, voc pode usar o nome da relao sozinho, deixando de lado o critrio de seleo. Por exemplo, se aps modificar os registros da relao ATUAL, voc quiser imprimir os campos PEDIDO # e TOTAL PEDIDO de cada registro, a Query dever estar parecida com o mostrado abaixo: Exemplo: for CLIENTES ; modify records in PEDIDOS named ATUAL with (CLIENTE # = CLIENTES CLIENTE # and PEDIDOS DATA > 01/01/89) TOTAL := TOTAL - data-entry DESCONTO . list records in ATUAL PEDIDO # in order ; TOTAL PEDIDO . end Aes encadeadas Palavra Chave: Tipo: Propsito: Aes encadeadas Conceito. Uma ao encadeada uma ao que executada dentro de outra ao. Existem dois tipos de aes encadeadas: 1) Um looping encadeado executa as mesmas sries de aes em cada registro que processado (veja o Exemplo 1). 2) Uma ao condicional encadeada mais frequentemente usada para selecionar subgrupos de registros, e executar aes diferentes em cada grupo (veja o Exemplo 2).

6-116

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo 1:

for CLIENTES ; for PEDIDOS list records

end

end

CLIENTES ULTIMO NOME in PEDIDO # ; TOTAL PEDIDO .

groups ;

Esta Query diz ao DataEase para executar a mesma srie de aes para cada registro selecionado pelo comando for. Neste exemplo, o segundo comando for, o qual recupera os pedidos relacionados ao registro de CLIENTES atualmente sendo processado, est encadeado com o primeiro comando for. Exemplo 2: for PEDIDOS ; if TOTAL PEDIDO > 500 then modify records in CLIENTES STATUS := PREFERENCIAL . if DATA between 01/01/89 to current date then enter a record in CATALOGO CLIENTES copy all from CLIENTES . end end

end

Esta Query diz ao DataEase para selecionar dois grupos de registros de PEDIDOS: 1) Todos os registros com mais de 500 no campo TOTAL PEDIDO (estes registros so modificados). 2) Os registros com o campo DATA entre 1 de janeiro de 1989 e hoje (estes registros so modificados e copiados para o Formato CATALOGO CLIENTES). Neste exemplo, o segundo comando if, o qual seleciona um subgrupo de registros selecionados pelo primeiro comando if, est encadeado com o primeiro comando if.

Lexicografia DQL

6-117

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

not Palavra Chave: Tipo: Propsito: not Operador de comparao. O operador not inverte o significado de qualquer operador de comparao que o seguir (por exemplo, ESTADO not = SP significa qualquer estado, menos So Paulo). VALOR 1 not operador de comparao VALOR 2 O efeito do operador not pode ser frequentemente substituido pela definio da comparao de outra maneira. Por exemplo, < (menor que) pode ser substituido por not >= (no maior ou igual). Sempre que possvel, as comparaes devem ser declaradas como uma expresso positiva.
TOTAL PEDIDO not

Sintaxe: Uso:

Exemplos:

> 500 significa o valor do campo TOTAL PEDIDO menor ou igual a 500. not = SP and ESTADO not = RJ significa quaisquer estados menos So Paulo ou Rio de Janeiro.
ESTADO

Operadores Palavra Chave: Tipo: Propsito: Operadores Conceito. Os operadores refinam os comandos; eles dizem ao DataEase como executar as diferentes operaes especificadas pelos comandos de processamento e/ou controle. Existem seis grupos de operadores DQL, brevemente explicados abaixo: Operadores de comparao dizem para o DataEase comparar o valor esquerda do operador com o valor direita, e processar o registro se a comparao resultar em verdadeiro. Operadores de agrupamento e ordenao dizem para o DataEase alterar a ordem na qual os registros so processados e impressos na sada. Operadores relacionais permitem que voc recupere informaes de campos de um Formato relacionado.

6-118

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Operadores estatsticos sumarizam os valores de um campo especificado para todos os registros que esto sendo processados. Operadores de estatsticas condicionais indicam para quais registros uma determinada condio verdadeira e o nmero total ou a porcentagem dos registros processados para os quais a condio verdadeira. Operadores de estatsticas relacionais so usados para sumarizar informaes de campos de um conjunto de registros de um Formato relacionado. Existe um item em separado para cada operador nesta lexicografia. or Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: or Operador lgico. O operador or combina dois conjuntos de critrios de seleo. CRITRIO SELEO 1 or CRITRIO SELEO 2 Os valores dos registros que satisfazem pelo menos um dos critrios de seleo. O operador or exige que um registro a ser processado satisfaa pelo menos um dos critrios de seleo (ao contrrio do operador and, que exige que ambos os critrios de seleo sejam satisfeitos). Quando os critrios de seleo combinam os operadores and e or em um comando, os critrios precisam estar entre parnteses, para dar clareza ao significado. Exemplos: for CLIENTES with ESTADO = SP or BALANO FINAL > 500 ; Este comando da Query diz ao DataEase: Processe apenas os registros de CLIENTES que contenham SP no campo ESTADO, ou tenham mais de 500 no campo BALANO FINAL. Um registro processado se ele satisfizer pelo menos um dos critrios. for CLIENTES with (ESTADO = SP or ESTADO = RJ) and BALANO FINAL > 500 ;

Lexicografia DQL

6-119

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Este comando da Query diz ao DataEase: Processe apenas os registros de CLIENTES que contenham SP ou RJ no campo ESTADO, e mais de 500 no campo BALANO FINAL. Neste caso, apenas os registros que satisfaam ambos os conjuntos de critrios so processados. others Palavra Chave: Tipo: Propsito: others Palavra chave. A palavra chave others um componente opcional do comando case. Quando o processamento atingir um comando case, o DataEase compara a expresso que segue case, para cada um dos comandos especificados pela palavra chave value. Se nenhuma das comparaes das palavras chave value for verdadeira, o DataEase executa as aes que seguem a palavra chave others. Assim que os comandos que seguem value ou others forem executados, o processamento continua a partir do comando end que delimita o comando case. case (EXPRESSO) value COMPARAO 1: SRIE DE AES 1 . [value COMPARAO 2: SRIE DE AES 2 .] . . . [value COMPARAO n: SRIE DE AES n .] [others: SRIE DE AES OUTROS .] end O comando case exige uma expresso case, uma comparao value, e um comando end. Comparaes value subsequentes, e a palavra chave others so opcionais. Se a palavra chave others for usada, ela deve estar posicionada aps as comparaes value.

Sintaxe:

Uso:

6-120

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

case (current user name): value FRANK: value CAROL: others: end

call menu ADMINISTRAO . run procedure DIARIO . record entry CLIENTES .

Esta Query diz ao DataEase: Se o usurio for Frank, mostre o menu ADMINISTRAO. Se o usurio for Carol, execute a rotina de nome DIARIO. Se o usurio for qualquer outro que no Frank ou Carol, mostre o Formato CLIENTES. output Palavra Chave: Tipo: Propsito: output Comando procedural. O comando output usado para gravar texto ou campos diretamente no dispositivo de sada durante o processamento, sem utilizar a forma do relatrio. O texto e os campos so enviados para a tela ou impressora imediatamente quando o comando encontrado, sem ordenaes ou agrupamentos. Este comando muito similar ao comando PRINT encontrado em vrias linguagens de programao. output: CAMPO | TEXTO . O comando output permite que voc especifique campos de sada e/ou texto diretamente na Query. No Modo Interativo, quando voc escolhe o comando output, o DataEase imediatamente passa para o Modo Edio, e pede para voc definir o que voc quer enviar para a sada. Voc pode digitar texto (incluindo ttulos, linhas divisrias, etc.), ou mover o cursor para o local desejado e pressionar F10 CAMPO para definir um campo. Quando voc pressiona F10, o DataEase mostra a tela de Definio de Campos do Relatrio, como quando voc est definindo a forma de um relatrio. Voc pode selecionar um campo que o menu mostrar, ou digitar a frmula de derivao do campo na janela de definio de frmulas do relatrio. Veja Incluindo e Modificando Campos, no Captulo 5 deste volume, para uma explicao detalhada sobre como gerar sada de campos.
Lexicografia DQL 6-121

Sintaxe:

Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando output precisa ser digitado numa linha separada na Query, e precisa ser separado por dois pontos. Voc pode usar qualquer nmero de comandos output numa Query. Seguindo o comando output, voc pode digitar quantas linhas precisar de texto ou campos. Seguindo a ltima linha da sada, insira um ponto final na primeira coluna de uma linha em separado na Query. Aps inserir um comando output no Modo Edio, voc precisa inserir um ponto final na primeira coluna da Query, para retornar ao Modo Interativo. Para demonstrar o uso do comando output, o Exemplo 1 mostra uma Query que aparece no incio de um comando for. Como impossvel alinhar completamente informaes processadas e impressas em sequncia de dois Formatos diferentes, esta Query produz uma sada que muito difcil de ler, como mostrado abaixo: Exemplo 1: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order . end for PEDIDOS ; list records PEDIDO # in order ; TOTAL PEDIDO . end ULTIMO NOME PEDIDO # TOTAL =========================================== Adams Cooper Evans Hill Ivers =========================================== A00005 123,50 A00105 74,30 A21050 27,50 A35600 39,60 A42035 160,75 A77007 17,95 ============================================

6-122

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O Exemplo 2 mostra como o comando output pode ser usado nesta Query para melhorar a leitura da sada. Ele tambm mostra como inserir texto, linhas separatrias e campos na Query, em adio ao comando output. Exemplo 2: output: ULTIMO NOME ============== . for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order . output: [ULTIMO NOME] . end output: =============================== PEDIDO # TOTAL =============================== . for PEDIDOS ; list records PEDIDO # in order ; TOTAL PEDIDO . output: [PEDIDO #] [TOTAL PEDIDO] . end NOTA: Neste exemplo, um nome de campo entre colchetes representa um campo inserido na Query atravs de F10 CAMPO. O texto que aparece na sada no est entre colchetes na Query. Embora o resultado continue inferior ao produzido pelo encadeamento de um segundo comando for com o primeiro, o comando output faz este tipo de relatrio mais simples de se ler.

Lexicografia DQL

6-123

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ULTIMO NOME ============= Adams Cooper Evans Hill Ivers ======================== PEDIDO # TOTAL PEDIDO ======================== A00005 123,50 A00105 74,30 A42035 160,75 A77007 17,95 percent Palavra Chave: Tipo: Propsito: percent Operador de estatsticas condicionais. O operador percent calcula a porcentagem de registros que satisfazem uma condio especificada na comparao de dois valores. CONDIO: percent [outros operadores estatsticos] ; Um valor numrico. for CLIENTES ; list records

Sintaxe: Retorna: Exemplo:

end

ULTIMO NOME in order ; BALANO FINAL ; BALANO FINAL > 500 : item

percent .

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES e imprima o campo ULTIMO NOME em ordem alfabtica. 2) Imprima o campo BALANO FINAL 3) Para cada cliente, imprima uma resposta sim ou no, indicando se o BALANO FINAL for maior que 500. 4) Mostre uma porcentagem dos registros que possuem o campo BALANO FINAL com mais de 500 na sada do relatrio. A sada para esta Query parecida com o mostrado abaixo:

6-124

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOME BALANO MAIOR QUE 500 ==================================== Adams 595,00 SIM Cooper 225,00 NO Evans 865,00 SIM Hill 325,00 NO Ivers 675,00 SIM ==================================== BALANO FINAL MAIOR QUE 500: 60% periods Palavra Chave: Tipo: Propsito: periods Funo financeira. A funo periods calcula quanto tempo uma transao financeira exige para atingir um valor futuro, dados o Valor Presente, o Valor Futuro, o Valor da Prestao e a Taxa de Juros. periods(ValorPresente, ValorFuturo, Prestao, Juros) Um valor numrico (o nmero de perodos necessrio para atingir o valor futuro especificado do investimento). Se o valor do pagamento aumentar o valor do investimento (por exemplo, uma anuidade), a prestao expressa como um valor positivo. Se o pagamento decrementar o valor do investimento (por exemplo, o pagamento de um emprstimo), a prestao expressa como um nmero negativo. A taxa de juros, valor da prestao e o nmero de perodos precisam estar baseados nos mesmos termos. Para determinar perodos como um nmero de meses, a taxa de juros deve estar expressa como a taxa anual / 12. Para determinar periodos como um nmero de semanas, a taxa de juros deve estar expressa como 7 * taxa anual / 365. Exemplos: ceil(periods(10000, 250, 8 / 12)) Retorna: 89 Este exemplo calcula quantos pagamentos mensais de $250 devem ser feitos para amortizar um emprstimo de $10000, a uma taxa de juros de 8% ao ano. A funo ceil arredonda o resultado para o inteiro imediatamente superior. ceil(periods(0, 10000, 250, 10 / 12)) Retorna: 85
Lexicografia DQL 6-125

Sintaxe: Retorna: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Este exemplo calcula quantos meses so necessrios para acumular $10000 numa poupana, se voc comear sem dinheiro em caixa, com mensalidades de $250, a uma taxa de juros de 10% ao ano. NOTA: As funes financeiras do DataEase so derivadas da frmula mostrada abaixo. Os asteriscos duplos (que significam eleve o primeiro nmero pelo segundo) no pode ser usado pela Query.
ValorFuturo = ValorPresente + ((1 + (taxa / 100)) ** perodos) + (prestao / (taxa / 100)) * (((1 + (taxa / 100)) ** perodos) - 1)

power Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: Exemplos: power Funo cientfica. A funo power eleva um valor numrico a uma potncia especificada. power(BASE, EXPOENTE) Um valor numrico igual base elevada ao expoente. O DataEase no suporta ** como um smbolo de exponenciao. Use a funo power. power(12, 2) Retorna: 144 power(8, 1 / 3) Retorna: 2 presentvalue Palavra Chave: Tipo: Propsito: presentvalue Funo financeira. A funo presentvalue calcula o valor inicial de uma transao financeira, dados o Valor Futuro, o pagamento da Prestao, a Taxa de Juros, e o nmero de perodos de pagamento. presentvalue(ValorFuturo, Prestao, Taxa, Perodos) Um valor numrico (o valor inicial antes de qualquer prestao ter sido paga).

Sintaxe: Retorna:

6-126

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

Se a prestao aumentar o valor do investimento (por exemplo, uma anuidade), a Prestao expressa como um nmero positivo. Se a prestao diminuir o valor do investimento (por exemplo, a amortizao de um emprstimo), a Prestao expressa como um nmero negativo. A Taxa de Juros, pagamentos das Prestaes e os Perodos devem ser baseados nos mesmos termos. Por exemplo, se os perodos forem expressos em meses, a taxa de juros mensal a taxa de juros anual / 12.

Exemplos:

presentvalue(0, -150, 7,9 / 12, 48) Retorna: 6156,12 Este exemplo calcula o valor de um emprstimo que voc pode suportar a uma taxa de juros de 7,9% ao ano, se voc quiser pagar este emprstimo em 48 pagamentos mensais de $150. presentvalue(125000, 150, 10 / 12, 240) Retorna: 1514,00 Este exemplo calcula o balano inicial de um programa de poupana necessrio para atingir um balano final de $125.000 em vinte anos, com pagamentos mensais de $150 a uma taxa de juros de 10% ao ano.

NOTA:

As funes financeiras do DataEase so derivadas da frmula mostrada abaixo. Os asteriscos duplos (que significam eleve o primeiro nmero pelo segundo) no pode ser usado pela Query.
ValorFuturo = ValorPresente + ((1 + (taxa / 100)) ** perodos) + (prestao / (taxa / 100)) * (((1 + (taxa / 100)) ** perodos) - 1)

Formato primrio Palavra Chave: Tipo: Propsito: Formato primrio Conceito. O primeiro Formato especificado numa Query chamado de Formato primrio da Query. O Formato primrio deve ser o Formato que possui os principais dados que voc quer ver ou manipular. Um Formato pode ser relacionado com outro Formato por uma relao pr definida ou ad-hoc. O Formato relacionado ao Formato primrio chamado de Formato secundrio. Um Formato relacionado ao Formato secundrio chamado de

Uso:

Lexicografia DQL

6-127

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Formato tercirio. No existe um limite para o nmero de nveis de relacionamento (veja a Figura 6-1 abaixo) Quando os registros de um Formato estiverem sendo processados, os dados em outro Formato podem ser acessados se existir uma relao entre estes Formatos. Um operador relacional (all, any, count of, lowest of, highest of, mean of ou sum of) usado para acessar os dados do outro Formato. O operador all no pode ser usado para acessar registros em mais de um Formato em um determinado nvel (isto , em mais de um Formato secundrio, em mais de um Formato tercirio, etc.)

Figura 6-1 Comandos Procedurais Palavra Chave: Tipo: Propsito: Uso: Comandos procedurais Conceito. Os comandos procedurais da DQL so usados para organizar e controlar o fluxo das aes dentro de uma rotina. Comandos procedurais podem ser usados em rotinas de processamento e rotinas de controle.

6-128

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

case(spellweekday(weekday(current date)) value SEGUNDA: run procedure NOVA SEM . value SEXTA: run procedure FECHA SEM . others: call menu PRINCIPAL . end Esta Query diz ao DataEase: Se a data de hoje for uma segunda feira, execute a rotina NOVA SEMANA. Se a data de hoje for uma sexta feira, execute a rotina FECHA SEMANA. Se a data de hoje for outro dia que no uma segunda ou sexta, mostre o menu chamado PRINCIPAL. Comandos procedurais output message if else end while break exit case value others define assign . (ponto) Rotina de processamento

Palavra Chave: Tipo: Propsito:

Rotina de processamento Conceito. Uma rotina de processamento DQL pode incluir, excluir e modificar registros, assim como gerar sada em tela, impressora ou disco, com base nas instrues da Query, os dados armazenados nos Formatos do banco de dados, e a digitao de dados adicionais durante a execuo da rotina. Os comandos de processamento so usados para criar uma rotina de processamento. Estes comandos no podem ser usados numa rotina de controle, mas podem ser usados numa rotina de processamento que faz parte de uma rotina de controle.
6-129

Uso:

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES ; list records end

ULTIMO NOME in BALANO FINAL .

order ;

Esta Query diz ao DataEase: 1) Processe todos os registros do Formato CLIENTES. 2) Para cada registro processado, imprima os campos ULTIMO NOME e BALANO FINAL, arranjando a sada em ordem alfabtica por ULTIMO NOME. proper Palavra Chave: Tipo: Propsito: proper Funo texto. A funo proper converte a primeira letra de cada palavra do texto especificado para maisculas, e as letras subsequentes para minsculas. proper(VALOR TEXTO) O texto especificado com a primeira letra de cada palavra capitalizada. Qualquer letra que precedida por um espao, hfen, @ ou um ponto capitalizada pela funo proper, assim como a primeira letra em um texto entre parenteses. Outros smbolos de pontuao, assim como o apstrofe, no age como um delimitador para a funo proper. Uma letra que no a primeira em uma palavra nem a primeira aps os parnteses convertida pala minsculas pela funo proper. Esta funo comumente usada na frmula de derivao de campos texto, durante a Definio do Formato. Por exemplo, se a frmula de derivao para o campo ULTIMO NOME : proper(ULTIMO NOME) voc pode digitar texto em minsculas ou maisculas, e o DataEase vai convert-lo para a forma proper.

Sintaxe: Retorna: Uso:

6-130

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

proper(dr. watson) Retorna: Dr. Watson proper(so paulo s.p.) Retorna: So Paulo S.P. proper(NOME COMPLETO) Retorna o valor do campo NOME COMPLETO na forma proper para todos os registros processados pela Query. Se um registro tiver o valor sherlock holmes, SHERLOCK HOLMES ou SHerLOck hOLmES, a funo retornar Sherlock Holmes. query selection

Palavra Chave: Tipo: Propsito:

query selection Comando de processamento. O comando query selection funcional apenas sob uma rede local. Este comando usado para modificar as regras de travamento padro especificadas no Formato Configurao do Sistema. Ele s deve ser utilizado por um tcnico com amplos conhecimentos do DataEase e da rede local sendo usada. Se voc no um expert em redes locais, voc deve confiar nas regras de travamento padro para travar os seus dados. Antes do DataEase comear o processamento de uma Query, ele primeiro seleciona os registros a serem processados. O comando query selection diz ao DataEase como definir travamentos antes do incio do processamento se os registros estiverem sendo selecionados ou processados sobre um campo indexado. Se os registros no forem selecionados ou ordenados sobre um campo indexado, as regras de travamento padro definidas no Formato Configurao do Sistema sero aplicadas.

Sintaxe:

query selection lock files | records | nothing As trs opes de sintaxe que so usadas em conjunto com o comando query selection so explicadas abaixo. O comando query selection lock files modifica a regra de travamento padro de seleo de registros, e trava o(s) Formato(s) cujos registros estejam sendo processados. Outros usurios no podero incluir, excluir ou modificar registros no Formato. Eles podero ver registros se os registros selecionados apenas forem ser impressos, e no modificados ou excluidos pela rotina. O Formato permanece travado at o fim do processamento.

Lexicografia DQL

6-131

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando query selection lock records modifica a regra de travamento padro de seleo de registros, e trava todos os registros selecionados para o processamento. Outros usurios no podero modificar ou excluir estes registros. Eles podero ver os registros se os registros selecionados apenas forem ser impressos, e no modificados ou excluidos pela rotina. Os outros usurios podero ver, modificar ou excluir registros que no foram selecionados. Uma vez iniciado o processamento, a regra de travamento padro definida no Formato Configurao do Sistema ser aplicada. PRECAUO: O comando query selection lock records deve ser usado com muito cuidado. Ele s deve ser usado por rotinas que selecionam muito poucos registros de muito poucos Formatos. Se este comando for usado em muitos registros, a maioria das redes locais no suportaro o nmero de travamentos exigido. Se este comando for usado incorretamente, a integridade dos dados poder ser comprometida. O comando query selection lock nothing modifica a regra de travamento padro de seleo de registros e destrava o(s) Formato(s) cujos registros esto sendo processados. Outros usurios podero ver, modificar ou excluir registros que foram selecionados para o processamento. Uma vez iniciado o processamento, a regra de travamento padro para o processamento de registros ser aplicada. O comando lock nothing pode ser til em situaes onde voc necessita manter os dados disponveis para vrios usurios enquanto executa uma rotina que usa estes dados. No entanto, quando este comando estiver em efeito, possvel a um usurio modificar um registro que j foi selecionado para o processamento. NOTA: Se um comando lock all files ocorrer como o primeiro comando da Query, ele modificar todos os comandos de travamento especificados no Formato Configurao do Sistema, alm de quaisquer outros comandos de travamento especificados posteriormente na Query. Um comando lock all files trava todos os arquivos usados pela rotina at que seja encontrado um comando unlock all files, ou que a rotina termine, no importando os comandos subsequentes. Veja o comando lock, mostrado anteriormente neste Captulo, para maiores informaes. O comando query selection modifica as regras de travamento padro definidas pelo administrador do banco de dados. Um comando query selection terminado ao final da Query.

Uso:

6-132

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

query selection lock nothing . for CLIENTES with BONUS > 500 ; modify records BALANO := (BALANO * data-entry DESCONTO) . end Esta Query diz: 1) Modifique a regra de travamento padro de seleo de registros para que outros usurios possam ver, modificar ou excluir os dados de CLIENTE enquanto os registros estiverem sendo selecionados para processamento pela Query. 2) Selecione os registros de CLIENTES que tenham BONUS maior que 500. 3) Modifique BALANO FINAL destes registros, multiplicando o valor de BALANO FINAL pelo valor do campo DESCONTO do Formato data-entry. Neste exemplo vrios registros podem ser selecionados para serem processados. No entanto, os usurios ainda podero acessar os registros do Formato CLIENTES enquanto a rotina estiver sendo processada. No ser bom se o campo BONUS de algum cliente diminua para menos que 500 enquanto voc est processando esta Query. random

Palavra Chave: Tipo: Propsito:

random Funo matemtica. A funo random retorna um nmero decimal aleatrio entre 0 e 1 (inclusive). Nenhum parmetro necessrio para a funo random. random() Um nmero entre 0 e 1 (inclusive). Os seguintes passos so usados para gerar um nmero aleatrio inteiro usando a funo random: 1. Determine a faixa (nmero de possiblidades) na qual o nmero aleatrio deve ser gerado. Por exemplo, se a faixa desejada est entre 10 e 100, a faixa 90. 2. Determine o valor inicial (o menor inteiro) da faixa. No exemplo 10-100, o valor inicial 10. 3. Use a frmula seguinte para gerar um nmero aleatrio. (random() * FAIXA) + VALOR INICIAL

Sintaxe: Retorna: Uso:

Lexicografia DQL

6-133

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

floor(random() * 9) Retorna: um nmero inteiro entre 0 e 9 floor((random() * 90) + 10) Retorna: um nmero inteiro entre 10 e 100 Nestes exemplos, floor arredonda o valor resultante para o inteiro imediatamente inferior. rate

Palavra Chave: Tipo: Propsito:

rate Funo financeira. A funo rate calcula a taxa de juros de uma transao financeira, dados o Valor Presente, o Valor Futuro, o valor da Prestao e o nmero de Perodos. rate(ValorPresente, ValorFuturo, Prestao, Perodos) Um valor numrico (a taxa de juros). Se o pagamento da prestao aumentar o valor do investimento (por exemplo, uma anuidade), a prestao expressa como um nmero positivo. Se o pagamento da prestao diminuir o valor do investimento (por exemplo, a amortizao de um emprstimo), a prestao expressa como um nmero negativo. A taxa de juros, o valor da prestao e o nmero de perodos precisam estar baseados nos mesmos termos. Se os pagamentos forem mensais, o nmero de perodos deve ser computado como o nmero de anos * 12, e a taxa de juros calculada como 1/12 da taxa anual.

Sintaxe: Retorna: Uso:

Exemplo:

12 * rate(12000, 0, -289, 48) Retorna: 7,3 Este exemplo calcula a taxa de juros anual sobre um emprstimo de $12000 a ser pago em 48 pagamentos mensais de $289. 12 * rate(0, 20000, 250, 60) Retorna: 10,2 Este exemplo calcula a taxa de juros anual necessria para acumular $20000 numa poupana, se voc comear sem dinheiro no caixa, e faa pagamentos mensais de $250 durante 5 anos.

6-134

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

NOTA:

As funes financeiras do DataEase so derivadas da frmula mostrada abaixo. Os asteriscos duplos (significando eleve o primeiro nmero pelo segundo) no podem ser usados pela Query.
ValorFuturo = ValorPresente * ((1 + (taxa / 100)) ** perodos) + (Prestao / (taxa / 100)) * (((1 + (taxa / 100)) ** Perodos) - 1)

record entry Palavra Chave: Tipo: Propsito: Sintaxe: Uso: record entry Comando de controle. O comando record entry diz ao DataEase para mostrar o Formato de Entrada de Registros para o Formato especificado. record entry FORMATO . O comando record entry permite que registros sejam incluidos ou modificados no Formato especificado em qualquer ponto de uma rotina de controle. Voc pode incluir quantos registros desejar, usando vises de Formato ou tabela. Diferentemente do comando input, o comando record entry fornece todas as funes disponveis na Entrada de Registros do Menu Principal, incluindo a capacidade de excluir e modificar registros. Quando voc terminar de incluir registros e pressionar ESC, a rotina de controle continua o processamento com a ao seguinte ao comando record entry. Exemplo: record entry CLIENTES . run procedure IMPRIME PEDIDOS . db status . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES na tela, para que o operador possa incluir novos registros nele. 2) Execute a rotina IMPRIME PEDIDOS. 3) Aps executar a rotina, mostre o status do banco de dados.

Lexicografia DQL

6-135

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Operadores de Estatsticas Relacionais Palavra Chave: Tipo: Propsito: Operadores de Estatsticas Relacionais Operador. Os operadores de estatsticas relacionais so usados para gerar informaes estatsticas sobre os valores de um campo especificado em um conjunto de registros de um Formato relacionado (isto , o conjunto de registros que esto relacionados ao registro atualmente sendo processado, como todos os pedidos de um determinado cliente). operador de estatstica relacional FORMATO | RELAO [named NOME] [with (critrios )] CAMPO Para gerar estatsticas sobre um campo de um Formato relacionado: 1. Insira o operador de estatsticas relacionais seguido do nome do Formato relacionado ou o nome da relao. 2. Defina um nome nico para a relao se necessrio, usando o operador named. 3. Insira qualquer critrio de seleo entre parnteses. 4. Insira o nome do campo seguido de um ponto-e-vrgula ou ponto final, dependendo da localizao do comando na Query. Os operadores de estatsticas relacionais so: count of, highest of, lowest of, mean of e sum of. O operador count of conta o nmero de registros relacionados, no valores de campos. O nome do campo omitido ao fim do comando count of. Os operadores highest of e lowest of podem ser usados em campos Texto e Nmero. highest of retorna o maior valor ASCII do conjunto de campos relacionados. lowest of retorna os menores valores ASCII dos campos. Os operadores sum of e mean of so usados em campos Nmero. sum of retorna o total dos valores dos campos do conjunto de registros relacionados. mean of retorna a mdia aritmtica dos valores dos campos dos registros relacionados. Cada operador relacional tratado num tpico particular nesta lexicografia.

Sintaxe: Uso:

6-136

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Relaes Palavra Chave: Tipo: Propsito: Relaes Conceito. Uma Relao uma ligao entre dois grupos de registros de um mesmo Formato ou de Formatos diferentes. Quando dois grupos de registros so ligados entre si, voc pode acessar as informaes de um grupo enquanto estiver processando registros no outro grupo. O DataEase emprega dois tipos de relaes. Numa relao pr-definida, dois grupos de registros so relacionados por uma ligao incluida no Formato Relaes. A ligao criada especificando-se um ou mais campos que contenham a mesma informao em ambos os grupos. Pelo fato de a relao ser armazenada no banco de dados, ela pode ser usada em vrias rotinas sempre que necessrio. Uma relao ad-hoc uma relao que definida enquanto se define uma Query. Embora uma relao ad-hoc possa ser usada como uma relao pr-definida para acessar informaes em outros grupos de registros, ela no gravada no banco de dados. Portanto, ela s pode ser usada na rotina onde ela foi definida. Uso: Numa Query, um valor de um Formato relacionado ou grupo de registros chamado de valor da relao. Um valor de relao pode ser usado em qualquer Query sempre que voc usar um campo, um valor constante ou uma varivel (como em um critrio de seleo de registros ou um valor a valorizar uma varivel temporria ou global). Uma vez estabelecida a relao, os operadores relacionais da DQL permitem voc acessar e manipular valores no Formato relacionado. Por exemplo, se a Query est processando os registros do Formato CLIENTES, o comando: sum of PEDIDOS TOTAL PEDIDO ; totaliza o campo TOTAL PEDIDO de cada registro relacionado de PEDIDOS (todos os pedidos com o mesmo CLIENTE # que o registro de CLIENTES sendo processado). O uso dos operadores relacionais est coberto em tpicos separados nesta lexicografia.

Lexicografia DQL

6-137

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

reorganize Palavra Chave: Tipo: Propsito: Sintaxe: Uso: reorganize Comando de controle. O comando reorganize reorganiza o Formato especificado. reorganize FORMATO . O Formato, o qual pode ser uma constante ou uma varivel, precisa estar entre aspas. Quando um Formato reorganizado, todos os registros que foram marcados para excluso desde a ltima reorganizao sero permanentemente apagados, e os ndices usados para organizar os dados no Formato sero recriados. Se o Formato ficou inconsistente (assinalado por uma mensagem de erro), o comando reorganize reorganiza os registros no Formato, e o retorna para uma forma consistente. Rede: Numa rede local, se outro usurio estiver usando o recurso necessrio para o comando reorganize, o DataEase mostrar uma mensagem de conflito de recursos. Enquanto esta mensagem estiver sendo mostrada, o DataEase automaticamente tentar executar o comando a pequenos intervalos. Se voc quiser interromper a rotina neste momento, voc vai precisar reinicializar o computador. Quando o recurso se tornar disponvel, o DataEase automaticamente continua o processamento e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento multi-usurio. Exemplo: reorganize CLIENTES . run procedure IMPRIME PEDIDOS . Esta Query diz ao DataEase: 1) Reorganize o Formato CLIENTES. 2) Quando a reorganizao estiver completa, execute a rotina IMPRIME PEDIDOS.

6-138

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Forma do relatrio Palavra Chave: Tipo: Propsito: Forma do relatrio Conceito A forma do relatrio diz ao DataEase como arranjar fisicamente os valores dos campos, os ttulos, estatsticas e outros textos gerados por uma rotina DQL. A forma do relatrio consiste em trs elementos: Comandos da forma do relatrio: So comandos que dizem ao DataEase como arranjar as informaes geradas pela rotina. Os oito comandos da forma so: .header, .footer, .group header, .items, .group trailer, .end, .page e .call. Texto do Formato: um texto descritivo, como o ttulo do relatrio, os cabealhos de colunas, linhas divisrias, etc. Voc pode digitar texto na forma diretamente onde voc quer que ele aparea. Campos: So os locais onde os valores dos campos dos registros processados pela rotina atualmente aparecem no relatrio. Para inserir um campo na forma do relatrio, pressione F10 CAMPO, e selecione o campo a partir dos menus que o DataEase mostra. Uma amostra de relatrio que indica quais elementos na sada so controlados por quais comandos da forma mostrada abaixo. Para informaes mais detalhadas sobre os comandos da forma do relatrio, consulte o Captulo 5 deste Volume.

Figura 6-2
Lexicografia DQL 6-139

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

restore db Palavra Chave: Tipo: Propsito: restore db (restore do Banco de Dados) Comando de controle. O comando restore db recria o banco de dados. Quando o processamento atinge um comando restore db, o DataEase mostra uma srie de mensagens pedindo a especificao de qual drive est o disco com a cpia backup, e como manipular quaisquer erros que possam ocorrer durante a recuperao. restore db . Quando voc faz um backup do banco de dados usando o comando backup db, o DataEase copia o banco de dados usando uma forma especial de armazenamento. A cpia backup s pode ser usada aps ser recuperada usando o comando restore db ou o Menu de Manuteno. Quando voc faz um backup e um restore do banco de dados, todos os registros que foram marcados como excluidos desde o ltimo backup so permanentemente apagados. Rede: Numa rede local, se outro usurio estiver usando um recurso necessrio para o comando restore db, o DataEase mostra uma mensagem de conflito de recursos. Enquanto esta mensagem for mostrada, o DataEase vai tentar executar o comando a intervalos. Se voc quiser interromper a rotina neste ponto, voc vai precisar reinicializar o computador. Quando o recurso se tornar disponvel, o DataEase continua automaticamente o processamento, e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento multi-usurio. Exemplo: record entry CLIENTES . run procedure IMPRIME PEDIDOS . backup db . restore db . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES, para que o operador possa incluir novos registros. 2) Quando o operador terminar a entrada de registros, execute a rotina IMPRIME PEDIDOS. 3) Faa uma cpia backup do banco de dados. 4) Quando a cpia backup estiver completa, comece a recuperao do banco de dados, a partir da cpia backup.
6-140 Lexicografia DQL

Sintaxe: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-141

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

run procedure Palavra Chave: Tipo: Propsito: Sintaxe: Uso: run procedure Comando de controle. O comando run procedure executa a rotina especificada. run procedure NOME DA ROTINA . O comando run procedure carrega e executa uma rotina definida. Quando terminar, a rotina de controle continua o processamento com a ao seguinte a run procedure. O nome da rotina pode ser uma constante ou qualquer expresso (incluindo funes) que retornem um texto. Exemplo: record entry CLIENTES . run procedure IMPRIME PEDIDOS . db status . Esta Query diz ao DataEase: 1) Mostre o Formato CLIENTES, para que o operador possa incluir novos registros. 2) Quando o operador terminar a entrada de registros, execute a rotina IMPRIME PEDIDOS. 3) Mostre o status do banco de dados. seconds Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: seconds Funo hora. A funo seconds extrai os segundos de um valor hora, expresso na forma do relgio de 24 horas. seconds(VALOR HORA) Um inteiro entre 00 e 59. seconds(09:15:34) Retorna: 34 seconds(02:53:20) Retorna: 20 seconds(HORA VERIFICACAO) Retorna: Os segundos do valor do campo HORA VERIFICACAO para todos os registros processados pela Query. Se um registro contiver 07:30:25, a funo retornar 25.
6-142 Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Formato Secundrio Palavra Chave: Tipo: Propsito: Uso: Formato secundrio Conceito. Um Formato relacionado ao Formato primrio chamado Formato secundrio. Um Formato pode ser relacionado com outro Formato por uma relao pr-definida ou ad-hoc. Um Formato relacionado ao Formato primrio chamado de Formato secundrio. Um Formato relacionado ao Formato secundrio chamado de Formato tercirio, e assim por diante. No existe limite para nveis de relacionamento (veja a Figura 6-4 abaixo). Quando estiver processando registros em um Formato, os dados de outro Formato podem ser acessados se a relao existir entre os dois Formatos. Um operador relacional (all, any, count of, highest of, lowest of, mean of e sum of) usado para acessar os dados no Formato relacionado. O operador all no pode ser usado em mais de um Formato por nvel de relacionamento (isto , no mais de um Formato secundrio, no mais de um Formato tercirio, etc).

Figura 6-3

Lexicografia DQL

6-143

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Critrios de Seleo Palavra Chave: Tipo: Propsito: Critrios de seleo Conceito. Em uma Query, voc pode dizer ao DataEase para selecionar todos os registros de um Formato especificado, ou apenas alguns registros. Os fatores limitantes que determinam quais registros so selecionados para o processamento so chamados critrios de seleo. Os critrios de seleo dizem ao DataEase para comparar o valor de um campo especfico de cada registro com um valor de comparao que voc define na Query. Quando a rotina executada, os registros que satisfazem os critrios de seleo so processados. Os registros que no satisfazem os critrios de seleo no so processados. Por exemplo, o comando: for CLIENTES with BALANO FINAL > 500 ; diz ao DataEase para processar apenas os registros de CLIENTES que tiverem mais de 500 no campo BALANO FINAL. Existem duas situaes nas quais os critrios de seleo precisam estar entre parnteses: 1. Os critrios precisam estar entre parnteses quando usados com um operador relacional para selecionar registros em um Formato diferente do Formato primrio. Exemplo: for CLIENTES with (sum of PEDIDOS TOTAL PEDIDO > 500) ; Este comando diz ao DataEase para processar apenas os registros de CLIENTES cujos registros relacionados em PEDIDOS tenham um total do campo TOTAL PEDIDO maior que 500. 2. Quando dois conjuntos de critrios de seleo so combinados com os operadores and e or, os critrios precisam estar entre parnteses para dar clareza ao significado.

6-144

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES with (ESTADO = SP or ESTADO = RJ) and BALANO FINAL > 500; Este comando diz ao DataEase para processar apenas os registros de CLIENTES que moram nos estados de So Paulo ou Rio de Janeiro, e que tenham mais de 500 no campo BALANO FINAL. sin

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo:

sin Funo trigonomtrica. A funo sin calcula o seno de um ngulo expresso em radianos. sin(VALOR NUMRICO) Um valor numrico. sin(2,53) Retorna: 0,574172 sin(-3) Retorna: -0,14112 sinh

Palavra Chave: Tipo: Propsito: Sintaxe: Exemplos:

sinh (seno hiperblico) Funo trigonomtrica. A funo sinh calcula o seno hiperblico de um ngulo expresso em radianos. sinh(VALOR NUMRICO) sinh(2,53) Retorna: 6,2369235 sinh(-4,4) Retorna: -40,71929

Lexicografia DQL

6-145

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Ordenao Palavra Chave: Tipo: Propsito: Ordenao Conceito. A ordenao permite que voc processe registros e emita a sada resultante em ordem crescente ou decrescente, com base nos valores de um campo especificado. O operador in order ordena os registros numa sequncia do menor para o maior valor, com base nos tipos de campo a seguir: Texto Nmero Data Hora Escolha Exemplo: for ESTADOS DOS EUA; list records
NOME DO ESTADO

ordem alfabtica (A-Z) do menor para o maior valor da menor para a data mais atual da menor para a hora mais atual do menor para o maior nmero de opo

end

in order .

A sada para esta Query parecida com o mostrado abaixo: NOME DO ESTADO ================ Alabama Alaska Arizona . . Wyoming ================ O operador in reverse ordena os registros numa sequncia do maior para o menor valor. Por exemplo, se ns trocarmos a terceira linha da Query anterior para:
NOME DO ESTADO

in reverse .

6-146

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A sada para esta Query aparecer invertida: NOME DO ESTADO ================ Wyoming Wisconsin West Virginia . . Alabama ================ spellcurrency Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: spellcurrency Funo extenso. A funo spellcurrency retorna o extenso do equivalente monetrio de um valor numrico. spellcurrency(VALOR NUMRICO) Um texto. spellcurrency(36,25) Retorna: Trinta e Seis Cruzeiros e 25 Centavos spellcurrency(210,00) Retorna: Duzentos e Dez Cruzeiros e 00 Centavos spellcurrency(SALARIO) Retorna: O extenso do valor do campo SALARIO para todos os registros que forem processados. Se um registro contm o valor 605,75, a funo retornar Seiscentos e Cinco Cruzeiros e 75 Centavos. spelldate Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: spelldate Funo extenso. A funo spelldate retorna o extenso de uma data. spelldate(VALOR DATA) Um texto.

Lexicografia DQL

6-147

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

spelldate(01/07/89) Retorna: 1 de Julho de 1989 spelldate(31/12/89) Retorna 31 de Dezembro de 1989 spelldate(highest of PEDIDOS DATA) Retorna: O extenso do valor do campo DATA mais recente em PEDIDOS. Se o registro mais recente em PEDIDOS contm 31/01/89 no campo DATA, a funo retornar 31 de Janeiro de 1989. spellmonth

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: Exemplos:

spellmonth Funo extenso. A funo spellmonth retorna o nome do ms correspondente a um valor numrico entre 1 (janeiro) at 12 (dezembro). spellmonth(VALOR NUMRICO) Um texto. O parmetro de entrada precisa estar entre 1 e 12 (inclusive). spellmonth(7) Retorna: Julho spellmonth(month(31/12/89)) Retorna: Dezembro spellmonth(month(highest of PEDIDOS DATA)) Retorna: O nome do ms para o registro de PEDIDOS com o campo DATA mais recente. Se o registro mais recente de PEDIDOS contm 31/10/89 no campo DATA, a funo retornar Outubro. spellnumber

Palavra Chave: Tipo: Propsito: Sintaxe:

spellnumber Funo extenso. A funo spellnumber retorna o extenso da poro inteiro de um valor numrico. spellnumber(VALOR NUMRICO)

6-148

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Retorna: Uso:

Um texto. spellnumber aceita qualquer valor numrico, at 2.147.483.647. spellnumber(999999999) retorna Novecentos e Noventa e Nove Milhes, Novecentos e Noventa e Nove Mil, Novecentos e Noventa e Nove.

Exemplos:

spellnumber(3,45) Retorna: Trs spellnumber(323,45) Retorna: Trezentos e Vinte e Trs spellnumber(CLIENTE #) Retorna: O extenso do campo CLIENTE # para todos os registros processados pela Query. Se o registro possui 309512 no campo CLIENTE #, a funo retornar Trezentos e Nove Mil, Quinhentos e Doze. spellweekday

Palavra Chave: Tipo: Propsito:

spellweekday Funo extenso. A funo spellweekday retorna o nome do dia da semana que corresponde ao valor numrico entre 1 (segunda) at 7 (domingo). spellweekday(VALOR NUMRICO) Um texto. spellweekday(6) Retorna: Sexta spellweekday(weekday(31/12/89)) Retorna: Domingo spellweekday(weekday(highest of PEDIDOS DATA)) Retorna: O nome do dia da semana que corresponde ao valor do registro mais recente em PEDIDOS. Se o registro mais recente em PEDIDOS contm o valor 31/10/89, a funo retornar Tera.

Sintaxe: Retorna: Exemplos:

Lexicografia DQL

6-149

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

sqrt Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: sqrt Funo cientfica. A funo sqrt calcula a raiz quadrada de um valor numrico. sqrt(VALOR NUMRICO) Um valor numrico. A funo sqrt deve ser usada apenas com valores positivos. Se o parmetro de entrada for negativo, os resultados sero imprevisveis. sqrt(9) Retorna: 3 sqrt(16) Retorna: 4 sqrt(AREA DO COMODO) Retorna: A raiz quadrada do valor do campo AREA DO COMODO para todos os registros processados pela Query. Se um registro contm o valor 16000 no campo AREA DO COMODO, a funo retornar 40. Operadores Estatsticos Palavra Chave: Tipo: Propsito: Operadores estatsticos Operador. Os operadores estatsticos (mostrados direita) so usados para gerar informaes estatsticas sobre campos Nmero que aparecem como itens da lista de uma Query. CAMPO : operador estatstico ; Para gerar estatsticas num campo: 1. Insira o nome do campo, seguido de dois pontos. 2. Aps os dois pontos, insira o operador estatstico desejado. 3. Aps o ltimo operador, insira um ponto-e-vrgula ou um ponto final, dependendo da localizao do operador na Query.

Exemplos:

Sintaxe: Uso:

6-150

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Os operadores estatsticos podem ser usados em qualquer tipo de campo Nmero (Cruzado, Inteiro, Ponto Fixo ou Ponto Flutuante). Eles no podem ser usados em campos Texto e String Numrica. Voc pode usar quantos operadores estatsticos desejar em um campo, um aps o outro, separados por um espao. Se voc usar um operador estatstico e desejar imprimir tambm o valor do item, voc precisa inserir o operador item aps o nome do campo Cada operador estatstico est descrito separadamente nesta lexicografia. std.dev. Palavra Chave: Tipo: Propsito: std.dev. Operador estatstico. O operador std.dev. calcula o desvio padro (a raiz quadrada da varincia) em um conjunto de dados. O resultado normalmente aparece como uma estatstica na rea de sumrio ao fim do relatrio. CAMPO : std.dev. [outros operadores estatsticos] ; Um valor numrico. O desvio padro usado como um indicador da variabilidade de um conjunto de dados (68% do conjunto de dados est contido no primeiro desvio padro). O operador std.dev. tambm pode ser usado em Relatrios Rpidos. Para gerar o desvio padro em Relatrios Rpidos, digite std.dev. na rea do item da lista selecionado. Exemplo: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item sum std.dev. . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que possuam mais de 500 no campo BALANO FINAL. 2) Imprima os registros selecionados em ordem crescente por ULTIMO NOME. 3) Imprima os campos ULTIMO NOME e BALANO FINAL, neste ltimo campo calculando o total e o desvio padro.
Lexicografia DQL 6-151

Sintaxe: Retorna: Uso:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ========================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ========================================== TOTAL BALANO FINAL 3.385,00 DESVIO PADRO 129,88 std.err. Palavra Chave: Tipo: Propsito: std.err. Operador estatstico. O operador std.err. calcula o erro padro (o desvio padro dividido pela raiz quadrada do nmero de itens) de um conjunto de dados. O resultado normalmente aparece na rea de sumrio ao final do relatrio. CAMPO : std.err. [outros operadores estatsticos] ; Um valor numrico. O erro padro usado como um indicador da variabilidade de um subconjunto de dados; se o erro padro da mdia de dois conjuntos de dados se sobrepem, os subconjuntos podem ser considerados membros do mesmo conjunto de dados. O operador std.err. tambm pode ser usado em Relatrio Rpidos. Para gerar o erro padro num Relatrio Rpido, digite std.err. na rea do campo selecionado. Exemplo: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item sum std.dev. std.err. . end

Sintaxe: Retorna: Uso:

6-152

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz: 1) Processe todos os registros de CLIENTES que tm mais de 500 em BALANO FINAL. 2) Imprima os registros ordenados por ULTIMO NOME. 3) Imprima ULTIMO NOME e BALANO FINAL, sendo para este ltimo tambm a somatria, o desvio padro e o erro padro: ULTIMO NOME BALANO FINAL ===================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ===================================== TOTAL BALANO FINAL 3.385,00 DESVIO PADRO 129,88 ERRO PADRO 58,09 sum Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso: sum Operador estatstico. O operador sum soma os valores de um campo especificado para todos os registros processados. CAMPO : sum [outros operadores estatsticos] ; Um valor numrico. O valor retornado pelo operador sum difere dependendo de onde ele aparece na forma do relatrio. O valor de sum definido pela sua posio, como mostrado abaixo: Cabealho do Relatrio Cabealho Rodap Items Cabea de Grupo Final de Grupo Fim
Lexicografia DQL

No se aplica O total at o ltimo item da pgina anterior O total at o ltimo item da pgina atual O total at o item atual No se aplica Sub-Total para o grupo Total geral do relatrio
6-153

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item sum . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham mais de 500 no campo BALANO ATUAL. 2) Imprima os registros ordenando por ULTIMO NOME. 3) Imprima os campos ULTIMO NOME e BALANO FINAL, sendo que, para este ltimo, tambm o total. A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME BALANO FINAL ===================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ===================================== TOTAL BALANO FINAL 3.385,00 sum of

Palavra Chave: Tipo: Propsito:

sum of Operador de estatsticas relacionais. O operador sum of soma os valores de um campo especificado de todos os registros que combinam em um Formato relacionado. O resultado pode aparecer como um item da lista na rea de detalhes do relatrio, ou como uma estatstica na rea de sumrio ao fim de cada grupo e ao final do relatrio. sum of FORMATO | RELAO [named NOME] [with (critrios)] CAMPO ; Um valor numrico. for CLIENTES ; list records end

Sintaxe: Retorna: Exemplo:

ULTIMO NOME ; sum of PEDIDOS TOTAL PEDIDO .

6-154

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES, e imprima o campo ULTIMO NOME. 2) Para cada registro de CLIENTES processado, encontre todos os registros que combinam no Formato PEDIDOS (isto , os registros que possuem o mesmo CLIENTE #). 3) Imprima o total do campo TOTAL PEDIDO de todos estes registros relacionados. A sada para esta Query parecida com o mostrado abaixo: ULTIMO NOME TOTAL DE PEDIDOS ======================================= Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ======================================= Se voc quiser incluir o total deste grupo de pedidos, troque a quarta linha da Query para: sum of PEDIDOS TOTAL PEDIDO : item sum . tan Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplo: tan Funo trigonomtrica. A funo tan calcula a tangente de um ngulo expresso em radianos. tan(VALOR NUMRICO) Um valor numrico. tan(2,53) Retorna: -0,701292 tan(-1,89) Retorna: -3,025665

Lexicografia DQL

6-155

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

tanh Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Exemplos: tanh Funo trigonomtrica A funo tanh calcula a tangente hiperblica de um ngulo expresso em radianos. tanh(VALOR NUMRICO) Um valor numrico. tanh(2,53) Retorna: 0,987388 tanh(1,45) Retorna: -0,895692 temp Palavra Chave: Tipo: Propsito: Sintaxe: Uso: temp Palavra chave. A palavra chave temp especifica uma varivel temporria. temp NOME DA VARIVEL Uma varivel usada para armazenar um valor, como um texto ou o resultado de um clculo, o qual pode mudar durante o processamento de uma rotina. Especificando-se o nome da varivel, o valor armazenado pode ser usado como qualquer outro valor numa Query. O status de uma varivel pode ser global (denotado pela palavra chave global) ou temporrio (denotado pela palavra chave temp). Uma varivel temporria pode manter o seu valor apenas durante a rotina em que foi definida. Uma varivel global pode passar seu valor de uma rotina para outra. Para passar um valor de uma rotina para outra, a varivel precisa estar definida identicamente nas duas rotinas.

6-156

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

define temp DESCONTO Number . for PEDIDOS with TOTAL PEDIDO > 500 ; assign temp DESCONTO := TOTAL PEDIDO * 0,15 . modify records TOTAL PEDIDO := TOTAL PEDIDO - DESCONTO . end Esta Query diz: 1) Crie (define) uma varivel temporria chamada DESCONTO para armazenar um nmero enquanto processa a Query. 2) D (assign) varivel o valor de 15% do campo TOTAL PEDIDO para cada registro processado. 3) Encontre os registros de PEDIDOS que tenham mais de 500 em TOTAL PEDIDO. 4) Modifique estes registros, subtraindo o valor da varivel DESCONTO do campo TOTAL PEDIDO. textpos

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: Uso:

textpos Funo texto. A funo textpos retorna a primeira posio de uma cadeia de caracteres dentro de um texto. textpos(VALOR TEXTO, SUBCADEIA) Um nmero inteiro que indica a posio onde a cadeia de caracteres comea dentro do texto. A funo textpos no identifica letras maisculas de minsculas (abc significa o mesmo que ABC ou Abc). Se a cadeia de caracteres estiver contida no texto, a funo retorna a posio de incio da mesma no texto. Se a cadeia de caracteres no estiver contida no texto, a funo retorna 0. Os espaos intermedirios e pontuaes so incluidas no clculo. Os espaos finais so ignorados.

Exemplos:

textpos(DataEase, Ease) Retorna: 5 textpos(Zeroconsult Tecnologia Ltda., logia) Retorna: 18 textpos(TITULO DO LIVRO, co) Retorna: A primeira posio da cadeia co em cada registro processado. Se um registro contm Viajando com o Concorde no campo TITULO DO LIVRO, a funo retornar 10.

Lexicografia DQL

6-157

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

timempm Palavra Chave: Tipo: Propsito: timeampm Funo hora. A funo timeampm converte um valor hora da forma do relgio de 24 horas para o relgio de 12 horas, com o sufixo AM ou PM. timeampm(VALOR HORA) Um texto representando a hora no relgio de 12 horas, com o sufixo AM ou PM. Converte valores entre 00:00:00 at 11:59:59 para AM. Converte valores entre 12:00:00 e 23:59:59 para PM. timeampm(13:53:12) Retorna: 01:53:12 PM timeampm(11:10:30) Retorna: 11:10:30 AM timeampm(HORA VERIFICACAO) Retorna: O valor do campo HORA VERIFICACAO convertido para o relgio de 12 horas, para todos os registros processados pela Query. Se um registro contm 19:30:25 no campo HORA VERIFICACAO, a funo retornar 07:30:25 PM. Processamento de Transaes Palavra Chave: Tipo: Propsito: Processamento de transaes Conceito. O processamento de transaes uma tcnica que permite que voc inclua, modifique e exclua registros em vrios arquivos, usando dados de um nico Formato. Uma rotina de processamento de transaes permite que voc atualize as informaes no banco de dados sem ter de fazer a entrada de dados fsica em cada Formato no modo Entrada de Registros. Pelo fato de o processamento de transaes economizar tempo e reduzir a possibilidade de erros, esta tcnica largamente usada para aplicaes em pontos-de-venda, para automatizar a cobrana de clientes e manuteno de estoques.

Sintaxe: Retorna: Uso: Exemplos:

6-158

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Uso:

Com o DataEase, cada transao digitada atravs do Formato data-entry ou dos comandos input e record entry. Aps os dados terem sido digitados, eles so processados pela rotina DQL que automaticamente os envia para os Formatos apropriados. A rotina de controle de nvel Alto, apresentada no Captulo 4 deste volume, demonstra o uso do processamento de transaes em uma empresa de vendas pelo correio, que usa um Formato especial de Digitao de Pedidos para enviar as informaes para vrios Formatos do banco de dados (veja a Figura a seguir).

Figura 6-4 unlock Palavra Chave: Tipo: Propsito: unlock (destrava Banco de Dados) Comando de processamento. O comando unlock funcional apenas quando o DataEase est sendo executado numa rede local. O comando unlock destrava Formatos ou registros travados, permitindo que outros usurios tenham acesso completo aos dados. unlock all files | file FORMATO | selected record O comando unlock all files destrava todos os Formatos referenciados pela rotina. Se unlock all files for o primeiro comando da Query, as regras de travamento padro definidas na Configurao do Sistema sero modificadas, e todos os dados sero travados por registros individuais. Voc poder travar Formatos seletivamente, atravs do comando lock file.
Lexicografia DQL 6-159

Sintaxe:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

O comando unlock file destrava o Formato especificado at o final do processamento da rotina, ou at que o mesmo Formato seja travado por um comando lock. Se uma Query comear com o comando lock all files, o comando unlock file permite que voc destrave Formatos seletivamente, enquanto que os outros Formatos referenciados pela Query continuem travados. O comando unlock selected record destrava o registro que est atualmente sendo processado. Se as regras de travamento padro da Configurao do Sistema foram modificadas por um comando lock all files ou unlock file, o DataEase automaticamente trava um registro do momento em que ele selecionado para o processamento at o momento que o prximo registro selecionado. Frequentemente, processamentos significativos que no envolvem o registro travado podem ser executados. Usando os comandos lock e unlock selected record, voc pode reduzir o tempo que um registro permanece travado. Rede: Numa rede local, se outro usurio est atualmente usando um recurso utilizado pelo comando unlock, o DataEase vai emitir uma mensagem de conflito de recursos. Enquanto esta mensagem estiver na tela, o DataEase vai tentar completar o comando a pequenos intervalos. Se voc quiser interromper a rotina neste momento, voc vai precisar reinicializar o computador. Quando o recurso voltar a ficar disponvel, o DataEase automaticamente continua o processamento, e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento multi-usurio. Uso: O comando unlock modifica as regras de travamento padro para o processamento da Query, definidas pelo Administrador do Sistema. Para modificar as regras padro, o primeiro comando da Query precisa ser ou lock all files ou unlock all files. Se nenhum destes comandos aparecer na primeira linha da Query, as regras de travamento padro governaro a Query at ser encontrado um comando lock ou unlock. Todos os comandos lock e unlock so automaticamente terminados ao fim da Query.

6-160

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

lock file PEDIDOS shared . for CLIENTES with (sum of PEDIDOS TOTAL PEDIDO > 500) ; lock selected record list records unlock selected record .
ULTIMO NOME ; BALANO FINAL .

end

for CLIENTES with (highest of PEDIDOS data < 01/01/80) ; delete records end Esta Query diz ao DataEase: 1) Trave o Formato PEDIDOS, para que outros usurios possam ver registros, mas no possam incluir, excluir ou modificar registros durante o processamento da rotina. 2) Selecione todos os registros de CLIENTES cujos registros relacionados em PEDIDOS tenham um total do campo TOTAL PEDIDO maior que 500. 3) Trave cada registro assim que ele for selecionado, para processamento posterior. Para cada registro selecionado, imprima os campos ULTIMO NOME e BALANO FINAL. Aps cada registro ser impresso, destrave o registro antes de continuar a prxima parte da Query. Travar o Formato PEDIDOS no incio da rotina impede que outros usurios possam incluir novos registros que possam alterar uma totalizao ou clculo. Travar e destravar cada registro de CLIENTES enquanto ele impresso impede que outros usurios modifiquem o campo BALANO FINAL. unlock db Palavra Chave: Tipo: Propsito: unlock db Comando de controle. O comando unlock db funcional apenas quando o DataEase est sendo executado numa rede local. O comando unlock db cancela o efeito do comando lock db; ele destrava um banco de dados travado. unlock db . Uma mensagem de confirmao, que aparece na tela assim que o banco de dados destravado.

Sintaxe: Retorna:

Lexicografia DQL

6-161

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Rede:

Numa rede local, se outro usurio estiver usando um recurso utilizado pelo comando unlock db, o DataEase automaticamente mostra uma mensagem de conflito de recursos. Enquanto esta mensagem estiver na tela, o DataEase vai tentar automaticamente executar o comando em pequenos intervalos. Se voc quiser interromper a rotina neste ponto, voc vai precisar reinicializar o computador. Quando o recurso necessrio estiver disponvel, o DataEase continua automaticamente o processamento, e executa o resto da rotina. Veja o Volume 2, Captulo 4, Administrao do Sistema, para maiores informaes sobre conflitos de recursos e opes de travamento multi-usurio.

Uso:

Uma vez travado o banco de dados com o comando lock db, ele permanecer travado at que um comando unlock db seja executado, ou at que a pessoa que travou o banco de dados saia do DataEase. lock db . record entry CLIENTES . run procedure IMPRIME PEDIDOS . unlock db . Esta Query diz ao DataEase: 1) Trave o banco de dados. 2) Mostre o Formato CLIENTES para que o operador possa incluir novos registros. 3) Quando o operador terminar a incluso de registros, execute a rotina IMPRIME PEDIDOS. 4) Destrave o banco de dados. upper

Exemplo:

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna:

upper Funo texto. A funo upper converte cada letra de um texto para maisculas. upper(VALOR TEXTO) O texto especificado, convertido para maisculas. A funo upper afeta apenas as letras entre A e Z. Valores numricos no so afetados.

6-162

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

upper(DataEase) Retorna: DATAEASE upper(So Paulo S.P.) Retorna: SO PAULO S.P. upper(ULTIMO NOME) Retorna: O valor do campo ULTIMO NOME em maisculas, para todos os registros processados pela Query. Se um registro contm o valor holmes no campo ULTIMO NOME, a funo retornar HOLMES. value

Palavra Chave: Tipo: Propsito:

value Palavra chave. A palavra chave value compe a sintaxe do comando case. Quando processa um comando case, o DataEase compara a expresso que segue case com cada um dos comandos especificados pela palavra chave value, na ordem em que aparecem na Query. Quando o DataEase encontrar a primeira comparao verdadeira, ele executa todos os comandos entre a palavra chave value e a prxima. Se nenhuma das comparaes em value for verdadeira, o DataEase executa os comandos especificados aps a palavra chave others. Assim que os comandos que seguirem value ou others forem executados, o processamento continua no primeiro comando que segue o comando end correspondente.

Sintaxe:

case (EXPRESSO) value COMPARAO 1: SRIE DE AES 1 . [value COMPARAO 2: SRIE DE AES 2 .] . . [value N: SRIE DE AES N .] [others: SRIE DE AES OTHERS .] end O comando case exige uma expresso case, uma comparao value e um comando end. Comparaes value subsequentes, e a palavra chave others so opcionais. Se others for usado, ele precisa seguir todos os valores de comparao especificados.
6-163

Uso:

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplo:

case (current user name) value FRANK: others: end

call menu administration . call menu main .

Esta Query diz ao DataEase: 1) Se o usurio atualmente trabalhando no banco de dados for Frank, mostre o menu de Administrao do Banco de Dados. Se o usurio for outro que no Frank, mostre o menu Principal do DataEase. variance Palavra Chave: Tipo: Propsito: variance Operador estatstico. O operador variance calcula a varincia (o quadrado da diferena entre cada item e a mdia) de um conjunto de dados. O resultado normalmente aparece como uma estatstica na rea de sumrio ao final de cada grupo ou ao fim do relatrio. CAMPO : variance [outros operadores estatsticos] ; Um valor numrico. variance usado como um indicador da variabilidade de um conjunto de dados. O operador variance tambm pode ser usado em Relatrios Rpidos. Para gerar a varincia num Relatrio Rpido, digite variance na rea do campo selecionado. Exemplo: for CLIENTES with BALANO FINAL > 500 ; list records ULTIMO NOME in order ; BALANO FINAL : item mean sum variance . end Esta Query diz ao DataEase: 1) Processe todos os registros de CLIENTES que tenham mais de 500 no campo BALANO FINAL. 2) Imprima os campos ULTIMO NOME e BALANO FINAL, arranjando a sada do relatrio em ordem alfabtica por ULTIMO NOME. 3) No campo BALANO FINAL, imprima o total, a mdia aritmtica e a varincia. A sada para esta Query parecida com o mostrado abaixo:

Sintaxe: Retorna: Uso:

6-164

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

ULTIMO NOME BALANO FINAL ===================================== Adams 595,00 Cooper 725,00 Evans 865,00 Hill 525,00 Ivers 675,00 ===================================== TOTAL BALANO FINAL 3.385,00 MDIA BALANO FINAL 677,00 VARINCIA 16.870,00 variavel Palavra Chave: Tipo: Propsito: varivel Conceito. Uma varivel um substituto para outro valor. Numa Query, uma varivel pode substituir uma expresso que retorna um valor de qualquer tipo, menos Escolha. Uma varivel tambm usada para armazenar um valor que muda durante o processamento da rotina (um subtotal, quando se soma uma coluna de itens). O valor armazenado pode ser usado como qualquer outro valor pela Query. Uso: O comando define usado para criar e identificar uma varivel. O nome pode ser qualquer nome nico, com at 20 caracteres. O nome precisa estar entre aspas quando for utilizado pela primeira vez na Query. O comando assign usado para dar a uma varivel um valor inicial. O status de uma varivel pode ser atual, global ou temporria. 1. As variveis current so variveis internas do programa, que possuem normalmente valores usados pelo sistema, como current date, current time, current user name, etc. 2. Uma varivel global pode passar seu valor de uma rotina para outra. Para isto acontecer, a varivel precisa estar definida de forma idntica nas duas rotinas. 3. Uma varivel temporria pode armazenar seu valor apenas na rotina de origem. Existe um tpico individual para cada item comentado acima, nesta lexicografia.
Lexicografia DQL 6-165

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

weekday Palavra Chave: Tipo: Propsito: weekday Funo data. A funo weekday converte uma data para um inteiro que corresponde ao dia da semana, entre 1 (segunda) at 7 (domingo). weekday(VALOR DATA) Um inteiro entre 1 e 7. weekday(31/12/89) Retorna: 7 spellweekday(weekday(31/12/89)) Retorna: Domingo weekday(DATA) Retorna: o valor do campo DATA convertido para um inteiro entre 1 e 7 para todos os registros processados pela Query. Se um registro contm o valor 31/10/89 (uma tera), a funo retornar 2. while Palavra Chave: Tipo: Propsito: while Comando procedural. Como o comando if, o comando while executa uma srie de aes baseado se uma condio especificada for verdadeira. Diferentemente do comando if, o comando while cria um looping de processamento no qual os comandos so executados repetidamente enquanto a condio especificada for verdadeira. Quando o processamento atinge um comando while, o DataEase avalia a condio que segue a palavra chave while. Se a condio for verdadeira, o DataEase executa os comandos entre a palavra chave do e o comando end correspondente. O DataEase ento avalia novamente a condio original. Se a condio for verdadeira, o DataEase executa a srie de comandos novamente. Se a condio for falsa, o processamento continua no primeiro comando que segue o comando end correspondente a while.
6-166 Lexicografia DQL

Sintaxe: Retorna: Exemplos:

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Lexicografia DQL

6-167

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Sintaxe:

while CONDIO do AO 1 . AO 2 . . . AO N . end Frequentemente, um comando while especifica uma condio inicial que modificada durante cada passagem pelo looping (isto , um contador). Qualquer ao que modificar o valor a ser reavaliado precisa estar incluido no looping (isto , precisa estar entre a palavra chave do e o comando end correspondente). define temp SERIE Number . assign temp SERIE := 0 . while temp SERIE < 1000 do temp SERIE := temp SERIE + 1 . list records jointext(DISCO SISTEMA, temp SERIE) . end Esta Query diz ao DataEase: 1) Crie (define) uma varivel temporria chamada SERIE. 2) D (assign) um valor inicial de 0 para a varivel SERIE. 3) Imprima uma srie de etiquetas juntando as palavras DISCO SISTEMA com o valor atualmente armazenado na varivel SERIE. 4) Enquanto estiver imprimindo as etiquetas, incremente o valor de SERIE em uma unidade, para cada etiqueta que for impressa. 5) Quando o valor da varivel atingir 1000, pare a impresso das etiquetas. O comando while diz ao DataEase para avaliar novamente o valor da varivel a cada vez que imprime uma etiqueta. Enquanto o valor for menor que 1000, o DataEase imprime uma nova etiqueta. Quando o valor da varivel atingir 1000, o DataEase interrompe execuo da srie de comandos que seguem a palavra chave do.

Uso:

Exemplo:

6-168

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

with Palavra Chave: Tipo: Propsito: Sintaxe: Uso: with Operador. O operador with especifica os critrios de seleo de registros em um Formato ou relao. with (CRITRIOS DE SELEO) O operador with diz ao DataEase para processar alguns dos registros do Formato especificado. Os registros que so selecionados para o processamento so aqueles que satisfazem os critrios de seleo que seguem o operador with. for CLIENTES with BALANO FINAL > 500 ; Este comando da Query diz ao DataEase: Processe apenas os registros de CLIENTES que tenham mais de 500 no campo BALANO FINAL. Exemplo 2: delete records in PEDIDOS named FORA DE DATA with (DATA < 01/01/80) . Este comando da Query diz ao DataEase: Exclua os registros da relao FORA DE DATA (os registros de PEDIDOS que esto com DATA anterior a 1 de janeiro de 1980). year Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: year Funo data. A funo year extrai o ano de um valor data. year(VALOR DATA) Um inteiro entre 0 e 99 (inclusive). A forma da data selecionada na administrao do sistema altera a forma de apresentao, mas no influi no valor a ser retornado pela funo year.

Exemplo 1:

Lexicografia DQL

6-169

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

Exemplos:

year(12/31/89) Retorna: 89 (forma norte-americana) year(31/12/89) Retorna: 89 (forma internacional) year(89/12/31) Retorna: 89 (forma mtrica) year(DATA) Retorna: a poro ano do valor do campo DATA de todos os registros processados pela Query. Se um registro contm o valor 31/12/89 no campo DATA, a funo retornar 89. yearday

Palavra Chave: Tipo: Propsito: Sintaxe: Retorna:

yearday Funo data. A funo yearday converte uma data para o dia juliano do ano (1-366). yearday(VALOR DATA) Um valor inteiro entre 1 e 366 (inclusive). A forma da data selecionada pela Administrao do Sistema afeta a forma de apresentao da data, mas no influi na funo yearday. yearday(12/31/89) Retorna: 365 (forma norte-americana) yearday(31/12/89) Retorna: 365 (forma internacional) yearday(89/12/31) Retorna: 365 (forma mtrica) yearday(DATA) Retorna: O nmero de dias do valor contido no campo DATA de todos os registros processados pela Query. Se um registro contm o valor 31/12/88 (um ano bissexto), a funo retornar 366.

Exemplos:

6-170

Lexicografia DQL

M A N U A L

D E

R E F E R N C I A

D A T A E A S E

yearweek Palavra Chave: Tipo: Propsito: Sintaxe: Retorna: yearweek Funo data. A funo yearweek calcula a semana do ano (1-53) de um valor data. yearweek(VALOR DATA) Um inteiro entre 1 e 53 (inclusive). A forma da data selecionada na Administrao do Sistema afeta a forma de apresentao da data, mas no afeta o funcionamento da funo yearweek. Esta funo yearweek sempre conta 1-7 de janeiro como sendo a semana 1, 8-14 de janeiro como sendo a semana 2, e assim por diante. Em um ano no bissexto, o nico dia da semana 53 31 de dezembro. Em um ano bissexto, 30 de dezembro tambm se situa na semana 53 (todas as datas aps 28 de fevereiro so afetadas). yearweek(01/01/89) Retorna: 1 yearweek(12/31/89) Retorna: 52 (forma norte-americana) yearweek(31/12/89) Retorna: 52 (forma internacional) yearweek(89/12/31) Retorna: 52 (forma mtrica) yearweek(DATA) Retorna: A semana do ano do valor do campo DATA para todos os registros processados pela Query. Se um registro contm o valor 30/12/88 (um ano bissexto) no campo DATA, a funo retornar 53.

Uso:

Exemplos:

Lexicografia DQL

6-171