You are on page 1of 29

CURSO DE VISUAL DATAFLEX 7.

0 PROFESSOR: MARCIO MARINO GUSSO

Índice:
1. DATAFLEX – BREVE HISTÓRICO.................................................................................................................................................3

2. O QUE É DATAFLEX..........................................................................................................................................................................3

3. ACESSO AO VISUAL ESTFLEX 7.0 (VDF 7.0)...............................................................................................................................4


CORREÇÃO DE ERROS DE LÓGICA.....................................................................................................................................................................4
4. WORKSPACE.......................................................................................................................................................................................4
4.1 CRIANDO UMA NOVA WORKSPACE ...........................................................................................................................................................5
5. APRENDENDO NA PRÁTICA – SISTEMA DE CONTROLE DE PIZZARIA...........................................................................7
5.1. INTRODUÇÃO.........................................................................................................................................................................................7
5.2. OBJETIVO DO SISTEMA...........................................................................................................................................................................7
5.3. DEFINIÇÃO DA LÓGICA DE FUNCIONAMENTO .............................................................................................................................................7
5.4. DIAGRAMA DE ENTIDADE RELACIONAMENTO.............................................................................................................................................7
Arquivos de configuração....................................................................................................................................................................7
ARQUIVOS PAI..............................................................................................................................................................................................7
ARQUIVOS FILHO...................................................................................................................................................................................7

6. BANCO DE DADOS.............................................................................................................................................................................8
6.1. CRIAÇÃO E MANUTENÇÃO DE BASE DE DADOS: (GUIAS FIELDS E INDEX).....................................................................................................9
6.2. CONFIGURAÇÕES DOS PARÂMETROS DE CADA BANCO DE DADOS: (GUIA PARAMETERS)...................................................................................11
7. DICIONÁRIO DE DADOS................................................................................................................................................................13

7.1. DEFINIÇÃO DAS REGRAS DE NEGÓCIO DO SISTEMA DE PIZZARIA..........................................................................13


7.2. INCLUINDO AS REGRAS DE NEGÓCIO NO BANCO DE DADOS DATAFLEX - AUTO INCREMENT.........................................................................13
7.3. FIELD SETTINGS / OPTIONS: (CONFIGURAÇÕES DE CAMPO / OPÇÕES)..........................................................................................................14
7.4. SIGNIFICADO DE CADA UMA DAS OPÇÕES DE FIELD SETTINGS/OPTIONS: OPÇÕES DE CAMPO............................................................................14
7.5. PARTE PRÁTICA DO FIELD SETTINGS OPTIONS.........................................................................................................................................15
8. CRIANDO UMA LOOKUP................................................................................................................................................................16
8.1 INFORMANDO AO DICIONÁRIO DE DADOS O CAMPO QUE TERÁ UMA LOOKUP.................................................................................................16
8.2 CONSTRUINDO OBJETOS LOOKUP PELO IDE............................................................................................................................................17
9. VALIDAÇÕES.....................................................................................................................................................................................20
9.1. FIELD SETTINGS – VALIDATION / LOOKUP – VALIDATION METHOD...........................................................................................................20
9.2. FIELD SETTINGS – VALIDATION / LOOKUP – SIMPLE VALIDATION..............................................................................................................20
9.3. FIELD SETTINGS – VALIDATION / LOOKUP – RANGE FROM TO..................................................................................................................20
9.4. FIELD SETTINGS – VALIDATION / LOOKUP – VALIDATION ERROR..............................................................................................................20
9.5. FIELD SETTINGS – VALIDATION TABLE...................................................................................................................................................21
9.5.1. TABELA DE VALIDAÇÃO STATIC..........................................................................................................................................................21
9.5.2. TABELA DE VALIDAÇÃO DYNAMIC......................................................................................................................................................21
10. MÁSCARAS - FIELD SETTINGS - MASK.................................................................................................................................22

11. APARÊNCIA - FIELD SETTINGS – APPEARANCE..................................................................................................................23

12. COMPLEMENTOS DO DICIONÁRIO DE DADOS - FIELD SETTINGS – OTHER.............................................................24

13. MÉTODOS – METHODS.................................................................................................................................................................25


13.1. PROCEDURES E FUNCTIONS – QUAL A DIFERENÇA ENTRE ELAS...................................................................................................................25
13.2. UM EXEMPLO DE ENTRY METHOD........................................................................................................................................................25

Página 1
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

13.3. PROCEDURE UPDATE, BACKOUT, DELETE E CREATING..........................................................................................................................26


14. GUIA STRUCTURES – ESTRUTURAS DE EXCLUSÃO E GRAVAÇÃO...............................................................................27
14.1. CASCADE DELETE..............................................................................................................................................................................27
15. GUIA OPTIONS – OPÇÕES DE RELACIONAMENTO DE ARQUIVOS................................................................................27

16. CRIANDO UMA VIEW PELO WIZARD......................................................................................................................................28

17. CRIANDO UMA VIEW PELO BLANK VIEW.............................................................................................................................28

18. CRÉDITOS.........................................................................................................................................................................................29

Página 2
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

1. DataFlex – Breve Histórico


O DataFlex é desenvolvido pela empresa DataAccess Corporation. A DataAccess existe amais de 20 anos e tem como
objetivo produzir ferramentas de desenvolvimento rápido de sistemas.
A primeira versão do Dataflex foi a versão 2.0 que rapidamente evoluiu para a versão 2.3 que é mundialmente conhecida pela
facilidade de implementação de sistemas multiusuários com acesso a banco de dados. Esta versão que hoje não é mais comercializada
tornou o DataFlex líder de mercado em alguns seguimentos, como por exemplo no ambiente UNIX.
Desde o seu início o DataFlex sempre teve geradores automáticos de códigos, o que chamamos hoje de assistentes ou
Wizards.
Alguns anos mais tarde foi lançado o DataFlex 3.0. Mais uma vez a DataAccess estava na frente de seus concorrentes pois a
versão 3.0 já incorporava o ambiente de programação orientada a objetos (OOP). Hoje é muito difícil desenvolver sistemas sem este
conceito.
Uma característica forte do DataFlex é a sua portabilidade. Provavelmente único em quantidade de sistemas operacionais que
atende. Todos os sistemas operacionais utilizados em grande escala pelo mercado são atendidos pelo DataFlex. É importante salientar
que para mudar um programa desenvolvido em um sistema operacional em DataFlex caracter para qualquer outro sistema operacional
basta compilá-lo neste ambiente. As mudanças de código fonte de um sistema operacional para outro são praticamente inexistentes.
Pequenos ajustes e o sistema está rodando em outro sistema operacional e outro tipo de máquina. Que outra ferramenta permite isto
hoje ou a 20 anos atrás?
Outro ponto fantástico da linguagem é que a DataAccess se preocupa em manter o legado de software. Isto é, aquilo que foi
desenvolvido em uma versão é completamente aproveitado na próxima. Desta forma as empresas que optaram por desenvolver em
DataFklex nunca perderam seus códigos fonte por incompatibilidade devido a mudanças na versão, o que é muito comum com outras
linguagens do mercado.
Com a evolução das plataformas gráficas a DataAcces se deparaou com uma dificuldade muito grande. O DataFlex caracter já
possuia muitas funcionalidades parecidas com as do Windows, como mouse, mesnu, clipboard, etc. Mas para compatibilizar estas
funcionalidade com o Windows teria que decidir em desenvolver “ DataFlex para Windows” ou “Windows para DataFlex”, isto é
fazer com que o DataFlex enchergasse os controles do Windows. Porém, diversas facilidades do DataFlex não estavam disponíveis no
Windows e o Windows estava longe de ser um sistema operacional predominante. Existiam outros sistemas como OS/2 da IBM e o
Macintoch da Apple superiores ao Windows.
Desta forma a DataAcces resolveu não se comprometer com o Windows e reescrever as paertes do Windows necessárias para
o correto funcionamento do DataFlex Visual que foi chamado de DataFlex For Windows Fase I. Na evolução deste desenvolvimento
com nuitos problemas e certa perda de funciolidade e rejeição do mercado e com o lançamento do Windows 95 ficou claro que era
necessário mudar a formatação e criar um DataFlex For Windows baseados nos controles nativos do Windows. Assim nasceu o Visual
Dataflex 4.0 que já evoluiu muito e hoje está na versão 8.2.
A DataAccess também disponibiliza no mercado o WebApp Studio, conjunto de ferramentas para o desenvolvimento para
Web com a mesma política e facilidades dos outros ambientes.
Com o DataFlex hoje é possivel desenvolver sistemas em modo caracter, visual para Windows, para Web e para Wap e se
preferir ou precisar misturando todas estas plataformas. Também é possível utilizar além do banco de dados nativo da linguagem
qualquer outro banco de dados ou se preferir ou precisar misturar vários bancos de dados.

2. O que é DataFlex
Esta pergunta tem uma resposta multi disciplinar.
DataFlex é um Banco de Dados multi-usuário sequencial indexado que nas suas versões atuais possibilita a utilização de
dicionário de dados e a utilização de 4095 tabelas no mesmo sistema e possibilitando 16.700.000 registros por arquivo.
DataFlex é uma poderosa linguagem de programação que permite programação procedural e orientada a objetos e que possui
um conjunto de ferramentas facilitadoras do desenvolvimento de sistemas.
DataFlex é uma metodologia de desenvolvimento de sistemas. Seguindo a metodologia proposta é possível implementar
software de uma forma rápida e segura.
Com o DataFlex nas suas versões mais atuais possibilitam:
-Desenvolvimento em ambiente caracter para DOS-LINUX ou qualquer UNIX – Versão 3.2
-Desenvolvimento em ambiente visual para Windows 98 ou superior – Versão Visual DataFlex 8.2 VDF 8.2
-Desenvolvimento para WEB e WAP – WebApp 3.0

Página 3
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

3. Acesso ao Visual EstFlex 7.0 (VDF 7.0)

Para acessar o VDF7 7.0 o programador deverá clicar no botão [INICIAR] do Windows, escolher Programas,
Visual DataFlex 7.0

Documentação
Exemplos de Aplicações
Compilador
Gerador de Base de Dados e Dicionário de Dados
Explorador/Editor de dados
Correção de erros de lógica
Gerador de Classes
Sistema de Ajuda
*** IDE-Ambiente Integrado de Desenvolvimento
Registro do Softwaere

Escolha a opção IDE. Este utilitário integra todos os outros utilitários do sistema.

4. Workspace
O VDF trabalha com o conceito de Workspace que significa Área de Trabalho. Para cada novo projeto ou sistema que o programador
for desenvolver é criado em uma área de trabalho diferente, isto é, em uma nova Workspace.
Ao criar a Workspace o VDF gera para o programador uma estrutura de pastas ou diretórios para alocação dos diversos
arquivos de seu projeto. O indicado para cada aluno é criar a workspace de trabalho em uma pasta que fique em sua senha no servidor.
Desta forma outros alunos não irão poder alterar ou danificar o seu trabalho.

Dica!!!!!!
Ao acessar o VDF ele sempre tentará acessar a última Workspace utilizada no computador. Como um aluno não tem acesso a
pasta de outro aluno no servidor o VDF irá emitir uma mensagem de erro do tipo:

O QUE FAZER:
1) Clique no botão [OK]
2) Logo em seguida irá aparecer uma lista
das Workspaces disponíveis em seu
computador. Escolha uma que você tenha
acesso e clique em [Select]

Você tem acesso as workspaces criadas por


você e as workspaces dos exemplos do VDF,
como é o caso da workspace Order Entry
Sample Aplication

Página 4
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

4.1 Criando uma Nova Workspace


Acesse o IDE pelo botão [INICIAR] do Windows, Programas, Visual DataFlex 7, IDE
No IDE escolha o Menu File e a opção New Workspace. Neste ponto o VDF irá apresentar um Wizard para criação da
workspace.

1) Clique no botão [NEXT] e irá aparecer a tela que pede o nome a a descrição da Workspace.

2) Informe o nome e a descrição da workspace.

Name of the new workspace area: Coloque neste espaço o nome da área de trabalho. Devido as limitações de diversos ambientes
operacionais sugerimos que use nomes sem espaços em branco, sem caracteres especiais e com até 8 caracteres.

Exemplo: DFPIZZA

Description of the new workspace area: Neste espaço pode colocar uma descrição para facilitar a localização da Workspace na lista.
Coloque o seu nome na descrição para facilitar.

Ex.: Controle de Pizzarias (Prof. Marcio)

3) Clique no botão [NEXT] e irá aparecer a tela para escolher o método e o diretório de sua workspace.

Method: No método mantenha o default (padrão)


Create a Standard Workspace
Name of the Workspace Directory: Neste
espaço coloque o caminho para gerar a sua
Workspace.

Ex.:digite G:\DATAFLEX\DFPIZZA

Neste exemplo o diretório DATAFLEX deve ser


criado pelo explorer do windows na sua pasta G:
O botão [...] é um browser para encontrar
diretórios já existentes.

Página 5
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Após estes procedimentos acesse localize pelo Explorer do Windows as pastas criadas pelo VDF. Seguido o exemplo acima você
deverá ter a seguinte estrutura:
AppHtml : Pasta que irá conter os arquivos
referentes a projetos de internet.

Appsrc: Pasta que irá conter os arquivos fontes


de seu projeto.
App=aplication =aplicações
Src=Source=Fontes
*.VW = Views (telas e processos)
*.RV = Report Views (relatórios)
*.SL = Select Lists (Lookups)

Bitmaps: arquivos de figuras


*.BMP

Data: Pasta que contém os aruqivos de dados e estruturas.


*.DAT Arquivos de dados e da estrutura do arquivo
*.HDR Arquivo de backup de segurança (header do .DAT)
*.K* Arquivos de índices K1 .. K15
*.TAG Arquivo com o nome dos campos da estrutura
*.RPT Arquivos de relatório do Crystal Reports
DDSrc: Pasta que contem os fontes de dicionário de dados. Cada arquivo de dados possui um respectivo dicionário de dados que
controla a regra de negócio referente a este arquivo. Isto é, os cálculos, validações, checagens que devem ser feitas ao incluir, alterar
ou excluir um registro neste arquivo.
*.DD Arquivos de dicionários de dados
*.DEF Backup da estrutura do arquivo. Pode ser aberto por qualquer editor.
*.FD Estrutura de campos para o compilador
IdeSrc: Pasta que contém a personalização da ferramenta. Nesta pasta o usuário pode alterar partes de uma classe para facilitar o seu
trabalho na construção dos programas.
Programs: Pasta que contém os arquivos compilados.
*.VD7 Programas compilados

Para selecionar uma Workspace: IDE – Menu File – Select Workspace (escolher na lista e clicar [Select])
Para pesquisar Workspace, alterar descrição ou excluir: IDE – Menu Workspace – Modify Workspace

Os dados apresentados no modify workspace são os mesmos do registro do windows. Porém, o VDF possibilita a manutençaõ do
registro do windows por meio deste utilitário.

Se desejar alterar um caminho ou


mesmo a descrição da sua workspace
utilize este utilitário.

Obs.: Se você excluir a workspace por


este diretório serão excluídos apenas
os registros do windows. Os diretórios
(pastas) criadas deverão ser excluídas
pelo Explorer do Windows.

Página 6
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

5. Aprendendo na Prática – Sistema de Controle de Pizzaria

5.1. Introdução
O sistema que iremos desenvolver como exemplo é um sistema de controle de uma pizzaria. O conteúdo desta
definição é básico. O aluno poderá complementar com suas idéias ao longo do trabalho.

5.2. Objetivo do Sistema


Possibilitar o cadastro de bairros, clientes, produtos vendidos pela pizzaria, incluindo desde bebidas até as
próprias pizzas, controle das vendas e entregadores.

5.3. Definição da Lógica de Funcionamento


Cadastrar os bairros de abrangência
Cadastrar os entregadores
O cliente liga para a pizzaria
O atendente verifica se o cliente já está cadastrado, se não estiver cadastra o cliente
Preenche o pedido com as pizzas e as bebidas
Define o entregador
Imprime o pedido para a cozinha montar as pizzas
Imprime o pedido para entrega da pizza
A pizza é entregue
Recebe os valores do entregador
Imprime relatório de comissões dos entregadores
Imprime relatório de fechamento de dia
Imprime relatório de itens vendidos

5.4. Diagrama de Entidade Relacionamento


Este diagrama representa os arquivos de dados do sistema e seus relacionamentos

1-CONFIG
Arquivos de configuração
Arquivos pai
Arquivos filho

2-BAIRROS 4-ENTREGADORES

3-CLIENTES 5-PRODUTOS

6-PEDIDOS

7-ITENS DO PEDIDO

Página 7
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

6. BANCO DE DADOS
O banco de dados que utilizares é o DataFlex. O utilitário utilizado para construção do banco de dados é o DataBase Builder. Para que
cada aluno tenha uma visão geral serão criadas as tabelas 1,2 e 3 (CONFIG, BAIRROS e CLIENTES respectivamente) e a entrada de
dados destas tabelas. Então será criado programas de entrada de dados (Views) para as tabelas Bairros e Clientes.

Abra o IDE e selecione a SUA Workspace do sistema de Controle de Pizzaria


Estando no IDE abra o DataBase Builder (Menu Database – DataBase Builder) Ou pelo botão da barra de tarefas.

Crie as tabelas.

Para criar uma nova tabela use o Menu File – New ou o botão Create New File
Para abrir um arquivo já gravado (salvo) use o Menu File – Open ou o botão Open files ou pela Caixa de Combinação com a
lista dos arquivos.

A tela que irá aparecer pede o s seguintes dados:

Type : Tipo do banco de dados. Nós utilizaremos o DataFlex. Este é o local que se pode optar por outros bancos de dados,
como por exemplo Oracle, SQL-Server, IBM-DB2, ODBC, etc. Para isto os drivers devem estar devidamente instalados.
File Number: Número do arquivo ou tabela de dados. O DataFlex permite até 4095 tabelas de dados (a partir da versão 7.0).
Com este grande número de arquivos é possivel implementar desde sistemas de pequeno porte, como é o caso de nossos exemplos, até
sistemas corporativos de grande porte, como sistemas para fábricas, hospitais, distribuidoras, etc.
Rootname: É o nome do arquivo. Sugerimos utilizar até 8 (oito) caracteres para manter compatibilidade com outros sistemas
operacionais. Usar apenas letras e números.

Clique no botão [OK] e preencha o File Number e o Rootname de acordo com as tabelas a seguir.

Página 8
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

6.1. Criação e Manutenção de Base de Dados: (Guias Fields e Index)


Utilizando o DataBase Builder na Tab Page Fields crie as bases de dados a seguir e faça os respectivos relacionamentos conforme
diagrama acima. Mantenha os nomes de arquivos e campos exatamente iguais, para que os códigos fontes que forem inseridos nos
programas mais tarde funcionem corretamente.

1 – CONFIG IMPORTANTE: Assinale a opção


AMPO TIPO TAMANHO System File na Guia Parameters para
ULTIMO_BAIRRO N 4 este arquivo. Isto indicará que ele terá
ULTIMO_ENTREG N 4 apenas 1 registro e servirá para
ULTIMO_PEDIDO N 8 configurações.
ULTIMO_PRODUTO N 6

Obs.: Cada número para os índices


2-BAIRROS corresponde a um índice diferente.
Neste arquivo são 3 (três) índices.
CAMPO TIPO TAMANHO
O primeiro é um índice exclusivo e o
COD_BAIRRO N 4
segundo e o terceiro são indices compostos
NOME A 25
por mais de um campo ou segmento.
CIDADE A 30
ESTADO A 2

ÍNDICE SEGMENTOS UC DES


1 COD_BAIRRO

2 NOME X
CIDADE X

3 CIDADE X
NOME X

Página 9
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

3-CLIENTES
CAMPO TIPO TAMANHO RELATES TO
TELEFONE A 15
NOME A 40
ENDERECO A 50
BAIRRO N 4 BAIRRO.COD_BAIRRO
CEP N 8
EMAIL A 40
PROXIMIDADE A 50
SEXO A 1
QTD_PESSOAS N 2

ÍNDICE SEGMENTOS UC DES O campo BAIRRO deve ser


1 TELEFONE relacionado com a tabela de Bairros.
Clique no campo BAIRRO e no Label
2 NOME X Relates To e escolha na primeira
RECNUM coluna o arquivo Bairro e na segunda
coluna o campo COD_BAIRRO.
Se os campos de relacionamento
3 BAIRRO
não aparecerem verifique o tipo e o
TELEFONE
tamanho dos campos a serem
relacionados. Lembre que eles devem
4-ENTREG
ser iguais.
CAMPO TIPO TAMANHO
CODIGO N 4
NOME A 50
TELEFONE A 15
CELULAR A 15

ÍNDICE SEGMENTOS UC DES


1 CODIGO

2 NOME X
CODIGO

5-PRODUTOS
CAMPO TIPO TAMANHO
CODIGO N 6
NOME A 40
PRECO_VENDA N 4,2
EM_ESTOQUE N 10,2
UND_MEDIDA A 7

ÍNDICE SEGMENTOS UC DES


1 CODIGO

2 NOME X
CODIGO

Página 10
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

6-PEDIDO
CAMPO TIPO TAMANHO RELATES TO
PED_NUMERO N 8
CLIENTE A 15 CLIENTES.TELEFONE
DATA D 6
ENTREG N 4 ENTREG.CODIGO
VALOR_TOTAL N 4,2
FORMA_PAG A 1
OBS T 256

ÍNDICE SEGMENTOS UC DES


1 PED_NUMERO

2 CLIENTE X
RECNUM

3 DATA
RECNUM

7-PEDITENS
CAMPO TIPO TAMANHO RELACIONAMENTO
PED_NUMERO N 8 PEDIDO.PED_NUMERO
PRODUTO N 6 PREODUTOS.CODIGO
VALOR_UNITARIO N 4,2
QTD N 4,2
VALOR_TOTAL N 4,2

ÍNDICE SEGMENTOS UC DES


1 PED_NUMERO
RECNUM

6.2. Configurações dos parâmetros de cada banco de dados: (Guia Parameters)


Neste ponto é possível determinar o comportamento de cada arquivo ou tabela de acordo com os seguintes parâmetros:

File Satistics (Estatíscas do arquivo):


Max Records: Número máximo de registros que a tabea deverá suportar. O analista deve avaliar o número máximo de acordo
com as características de seus dados. Caso os dados armazenados na tabela ultrapassem o número previsto poderão ocorrer erro nos
índices dos arquivos e também danificar os dados do banco de dados. Portanto o analista/programador deve cuidar destes valores. Esta
informação é base para a criação das áreas de controle para a criação dos índices.
Record Length: Tamanho do Registo. Representa a somatória dos bytes necessários para alocação dos campos criados. O
DataFLex utiliza uma técnica binária para alocação de campos numéricos, e com isto ele economiza metade do espaço para campos
numéricos. O tamanho do registro nem sempre é a somatório simples dos bytes utilizados. Isto se deve ao fato da utilização de
tamanhos pré-definidos de grupos de bytes.
Records Used: Número de registros armazenados no banco de dados.
RecLen Used: Tamanho real de ocupação do registro em bytes
File Revision: Número da versão do banco de dados.
Record Identity: Nome do campo utilizado internamente por alguns bancos de dados para identificação única de cada
registro. Deve ser um campo numércio. Para tabelas do tipo DataFlex deixar este campo em branco, pois o DataFlex já utiliza o campo
RECNUM para este propósito.

Página 11
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

File Settings: Configurações do arquivo:


Multi User Reread: serve para indicar que o arquivo será utilizado por vários usuários ao mesmo tempo.
Reuse Delete Spaces: Serve para indicar que os espaços de registros excluídos devem ser reapriveitados por novos registros.
Header Integrity Checking: Habilita a verificação da integrida do arquivo através da comparação do arquivo .HDR e .DAT.
System File: Indica que o arquivo é arquivo de sistema e que serve para controlar entre outras configurações o sistema automático de
Auto Increment ou Códigos Numéricos Automáticos.

Compression: Compactação de dados. Com esta opção o tamanho dos arquivos de dados fica reduzido, o que libera espaço em disco.
None: Não usa compressão de dados.
Fast: Compressão simples que analçisa um série de dois ou mais caracteres iguais em sequência.
Standard: Analisa a frequência que os caracteres ocorrem no banco de dados.
Custom: Analisa a performace do DataBase Builder nas ações sobre o arquivo. Esta opção requer ação de recompressão de
tempos em tempos.

Transaction Type: Tipo de Transação do banco de dados:


None: Não utiliza.
Client Atomic: Esta opção permite que o programa seja abortado pela aplicação ou automaticamente pelo DataFlex em caso
de DeadLock. Esta opção não prevê segurança contra problemas na estação de trabalho. Isto é, uma transação que esteja em processo
ficará pela metade se a estação falhar. Este é o padrão do banco de dados DataFlex.
Server Atomic: Além das opções do client atomic permite segurança contra travamentos de estação ou de sistema
operacional. Neste caso a transação iniciada e não terminada pode ser desfeita.
Server Loged: Além das opções do client atomic e do Server atomic permite o uso de rollback, que possibilita ao analista de
dados voltar o banco de dados até um determinado check point. Por exemplo voltar o banco de dados nas características que tinha as
12:30.

Lock Type: Tipo de travamento em ambiente multi usuários


None: Não utiliza.
File: Travamento de arquivo. Esta é a opção para o banco de Dados DataFlex
Record: Travamento de registro.

Página 12
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

7. DICIONÁRIO DE DADOS
Os DDOs (Data Dictionary Object) servem para dois propósitos:
Coordenar a atividade dos dados nos Objetos de Entrada de Dados (DEOs – Data Entry Object), isto é, controlar o funcionamento de
cada tela (view) nas ações de inclusão, exclusão, pesquisa e alteração no bando de dados.
Fornecer validações e atualizações dos dados para o programa.

A este conjunto de operações chamamos Regra de Negócio.

Exemplos:
Ao cadastrarmos um item de pedido e uma certa quantidade, isto é, ao vendermos um produto, precisamos diminuir a
quantidade de estoque registrada neste produto.
Em uma entrada de dado para o dado sexo, precisamos fazer a checagem de consistência ou validação para M ou F, caso
contrário não deixar salvar o registro e avisar o usuário.

Antes de inicarmos o nosso trabalho vamos definir as regras de negócio de nosso projeto.

7.1. Definição das Regras de Negócio do Sistema de Pizzaria


1- Se um produto está sendo utilizado em algum pedido, não poderá ser apagado
2- O campo Total em Pedido deve conter o total de todos os itens pedidos
3- Os códigos de bairros, entregadores, produtos e pedidos serão automáticos pelo sistema.
4-O campo subtotal dos itens do pedido deve conter a quantidade comprada multiplicada pelo preço unitário do produto.
5- Se um entregador é responsável por algum pedido não poderá ser excluído
6- Quando o campo data do pedido receber o foco deverá aparecer a data do dia.
7- Quando o campo preço unitário do item de pedido receber o foco e estiver em branco deverá ser colocado nele o preço unitário do
produto.
8-A cada item de pedido salvo, o campo Total do pedido deve ser atualizado.
9-Os nomes e descrições devem sempre ser em letras maiúsculas.

7.2. Incluindo as Regras de Negócio no Banco de Dados DataFlex - Auto Increment


Inicialmente iremos atribuir os controles de códigos automáticos. No DataFlex é possível indicar que um campo é auto
increment, isto é, cada novo registro armazenado no banco de dados é somado de 1. Assim se o último bairro cadastrado ganhou o
código 15 o próximo será o 16. Se o último pedido foi o 190 o próximo será o 191. Este controle também respeita sistemas multi-
usuário, isto é, mais de um usuário cadastrando ao mesmo tempo. Por exemplo, se dois usuários estão cadastrando pedidos ao mesmo
tempo e o último número foi o 191, mesmo que os dois usuários confirmem a gravação do pedido ao mesmo tempo um pedido será o
número 192 e o outro o 193. Este controle é feito pelo banco de dados tanto que o dicionário de dados seja corretamente informado da
regra para este procedimento.
Pela definição de nosso sistema os arquivos que serão Auto Increment, isto é, que terão controle de código automático, são
bairros, entregadores, produtos e pedidos.
Abra o IDE e acesse o DataBase Builder
Abra o Arquivo 1-Config e certifique-se de que a opção System File na guia Parameters está assinalada.
Abra o arquivo 2-Bairros, clique na Guia Field Settings e dentro desta guia selecione a guia Other. Na opção Auto
Increment clique no botão com 3 pontinhos e escolha na coluna File List o arquivo CONFIG e na coluna Field List o campo
ULTIMO_BAIRRO e clique em OK. Caso estes campos não tenham aparecedo revise o tipo e tamanho de cada campo dos arquivos
CONFIG e BAIRROS. O resultado final deverá ser:

Repita os procedimentos para os arquivos ENTREG, PRODUTOS e PEDIDO.


O resultado final deverá ser:
No arquivo ENTREG: CONFIG.ULTIMO_ENTREG
No arquivo PEDIDO: CONFIG.ULTIMO_PEDIDO
No arquivo PRODUTO: CONFIG.ULTIMO_PRODUTO

Página 13
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

7.3. Field Settings / Options: (Configurações de campo / Opções)


Abra o IDE e acesse o DataBase Builder
Os dados referentes ao dicionário de dados serão informados nas guias Field Settings, Methods, Options e Structures.

Na guia Field Settings Options é possível informar várias características para cada campo. Escolha o campo desejado e assinale as
opções de acordo com a necessidade. Observe que cada opção tem um comportamento. Veja a seguir o significado de cada uma das
opções do sistema. Após a leitura abra cada arquivo como soliciado e informe as opções de cada campo de acordo com o solicitado e
interprete as opções utilizadas.

7.4. Significado de cada uma das opções de Field Settings/Options: Opções de Campo
Opção Descrição
Auto Find Esta opção é bastante utilizada em campos que fazem parte de índices exclusivos. Na janela
de entrada de dados, quando o usuário digita um valor para este campo que já foi cadastrado,
o programa irá posicionar o registro automaticamente na tela.
Auto Find Ge Semelhante ao Auto Find, porém irá procurar um registro igual ao da tela de entrada de dados
ou maior que. GE=Greater or Equal
Capslock Na entrada de dados para este campo irá fazer com que qualquer dado digitado fique em
maiusculas.
Display Only Esta opção fará com que o campo seja exibido em Shadow (sombreado) e não permite que o
usuário altere seu valor. O valor pode ser alterado através de programação.
Find Required Indica que é obrigatório que um registro relacionado seja encontrado. Utilizado normalmente
para campos estrangeiros, como é o caso do cliente no arquivo PEDCABEC. Na hora de
digitar o pedido enquanto o usuário não digitar um código de cliente válido o sistenma deve
rejeitar a entrada de dados
Force Put Força que o conteúdo da tela de entrada de dados seja colocado no Buffer de registro, mesmo
que o conteúdo não tenha sido alterado pelo usuário.
Key Field Esta opção impede que o conteúdo do campo seja alterado após ter sido salvo. Serve para
proteger o campo de relacionamento em arquivos pais evitando que ocorram registros filhos
órfãos em uma alteração do código principal do registro.
No Enter Não permitirá que o usuári oaltere este valor. O mesmo poderá ser alterado apenas por
programação.
No Put O usuário tem acesso ao campo, mas não pode alterá-lo. Normalmente usado em campos de
código automático, possibilitando pesquisa, mas o conteúdo é controlado pelo sistema.
Retain O campo não será limpo após a gravação. Serve para manter na tela o último dado digitado. O
campo será limpo digitando-se outra informação ou através do botão clear all.

Página 14
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Retain All O campo não será limpo nem com o clear all, somente manualmente pelo usuário.
Required Digitação obrigatória em campos com esta opção.
Skip Found Permite a inclusão de dados, porém após o registro estar salvo não permite alteração do
campo pelo usuário.

7.5. Parte Prática do Field Settings Options


Assinale para cada arquivo as seguintes opções de banco de dados:

ARQUIVO: BAIRROS
Campo Opções
COD_BAIRRO Auto Find, Key Field, No Put
NOME Required, Capslock
CIDADE Required, Capslock
ESTADO Required, Capslock

ARQUIVO: CLIENTES
Campo Opções
TELEFONE Auto Find, Key Field, Required
NOME Required, Capslock
ENDERECO Capslock, Required

ARQUIVO: ENTREG
Campo Opções
CODIGO Auto Find, Key Field, No Put
NOME Required, Capslock

ARQUIVO: PRODUTOS
Campo Opções
CODIGO Auto Find, Key Field, No put
NOME Capslock
UND_MEDIDA Capslock

ARQUIVO: PEDIDO
Campo Opções
PED_NUMERO Auto Find, Key Field, No Put
VALOR_TOTAL Display Only

ARQUIVO: PEDITENS
Campo Opções
PED_NUMERO No Put
VALOR_TOTAL Display Only

Página 15
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

8. CRIANDO UMA LOOKUP


Uma lookup é um objeto de lista para selecionar dados cadastrados. Para que uma lookup funcione corretamente são necessários dois
passos:
Informar no DataBase Builder para o dicionário de dados quais os campos terão lookups e qual o nome do objeto lookup que será
criado.
Construir o Objeto Lookup pelo IDE.

8.1 Informando ao Dicionário de Dados o Campo que terá uma Lookup


Abra o IDE e o DataBase Builder, selecione o arquivo de Bairros e posicione na Guia Field Settings – Validation / Lookup

Selecione o campo COD_BAIRRO e digite no lookup object BAIRROS_SL (nome do objeto que será gerado). Digite no campo
Lookup Package BAIRROS.SL (Nome do arquivo que conterá o objeto lookup)

Página 16
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

8.2 Construindo Objetos Lookup pelo IDE


Para construir uma Lookup vamos dar como exemplo a Lookup do arquivo de Fornecedores de nosso trabalho, isto é
forneced.
Pelo IDE clique em File, New Component
Escolha a opção Lookup, Default Lookup, e irá aparecer a tela de projeto da Lookup
Clique em DataBase Explorer para adicionar o DDO (Objeto de dicionário de dados)

Clique em Add DDO para selecionar os dicionários de dados que farão parte de sua LookUp. Observe que o primeiro a ser escolhido
normalmente é o principal (Main) . se existirem arquivos relacionados estes serão trazidos para a lista também. Neste último caso
mantenha os arquivos relacionados na lista, pois serão necessários ao salvar e ao excluir registros.
Escolha Forneced Data Dictionary e clique em Close

Página 17
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Neste ponto o DataBase Selector já está pronto para que você selecione os campos desejados a serem incluídos em sua Lookup ou em
sua View. Para isto de dois clicks no Banco de Dados do Forneced e escolha os campos desejados para a sua Lookup
Arraste os campos selecionados para dentro da LookUp em qualquer parte das linhas.

Para alterar as propriedades de cada objeto posicione o mouse em cima do objeto e clique com o botão direito do mouse e escolha a
opção Properties e altere por exemplo os Labels de cada objeto. Também existe a opção Grid Options para propriedades da Grid.

Página 18
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Após concluído a programação da Lookup você deve salvar. Um componente VDF sempre terá um nome de arquivo e uma descrição e
um nome do objeto.
Para o caso das Lookups o padrão definido para o nome do arquivo foi o nome do arquivo de dados e para o nome do objeto foi o
mesmo nome com a terminação _SL.
Exemplo:

O erro mais comum de programadores iniciantes é ao dar o nome das lookups não respeitar aregra utilizada no Dicionário de Dados.
Lembre que o nome dado para o arquivo (filename ou package) e o nome dado para o objeto (object name) devem ser os mesmos
utilizados no DataBase Builder, Tab Page Field_settings- Validation/LookUp.
Lembre tmbém que a LooKUp não pode ser testada separadamente. Para testá-la é preciso criar a View de entrada de dados que irá
usar a lookup.

Página 19
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

9. VALIDAÇÕES
Uma validação é a verificação da digitação do usuário, isto é, verificar se o usuári oestá digitando corretamente o que é solicitado
no campo. A validação aliada com as facilidades do Dicionário de Dados do VDF tornam a operação do software construído
intuitiva e segura. As validações são programadas no DataBase Builder.

9.1. Field Settings – Validation / Lookup – Validation Method


Esta opção é utilizada para validações ou testes mais complexos que exigem programação e não são resolvidos pelas demais
validações, como por exemplo teste de dígito verificador de CGC, CPF e outros do gênero. Iremos fazer um exemplo simples para
título de exemplo. A método de validação deve ser inserido na guia Methods do DataBase Builder.

Abra pelo DataBase Builder o arquivo Clientes e posicione o cursor na Guia MeThods logo abaixo do início da programação da
classe de dicionário de dados (isto é, logo abaixo da linha Class Pedido_DataDictionary is a DataDictionary) e digite o código
abaixo.

Function ValidaEmail Integer iField Returns Integer


String sEmail

Get Field_Current_Value iField To sEmail


If (Not(sEmail="")) Begin
If "@" in sEmail Function_Return 0
Else Begin
Error 999 "Email não é válido!"
Function_Return 1
End
End
End_Function

Após digitar esta validação entre na guia Validation/Lookup e selecione o campo E-mail e na janela Validation Method escolha
com o botão [...] a validação ValidaEmail. Com isto o seu programa irá validar o E-mail e o banco de dados não permitirá que o
usuário grave um E-mail fora do padrão definido.

9.2. Field Settings – Validation / Lookup – Simple Validation


Este método serve para validações de campo simples. É utilizando para campos do tipo ASCII e consiste em informar o
conjunto de caracteres aceitos na validação separados pelo símbolo Pipe “|” .

Para exemplificar abra o arquivo Clientes e posicione o cursor na janela Simple Validation do campo SEXO e digite:F|M
Desta forma só será possível cadastrar um cliente com o sexo M ou F informado.

Obs.: Caso queira que os dados F e M sejam apresentados para o usuário em forma de lista utilize a opção DbComboForm
que será explicada mais adiante.

9.3. Field Settings – Validation / Lookup – Range From To


Esta opção serve para informar intervalos de datas ou intervalos numéricos. Isto significa dizer que o usuário só conseguirá
cadastrar um registro que o campo configurado esteja com um valor dentro do intervalo informado.

Para exemplificar abra o arquivo Clientes e posicione o cursor na janela Range From To do campo QTD_PESSOAS e digite:
FROM: 1 TO 50
Desta forma só será possível cadastrar um cliente com a quantidade de pessoas de 1 a 50.

9.4. Field Settings – Validation / Lookup – Validation Error


Esta janela permite ao programador informar um número de erro e uma descrição de erro para a validação programada para o
campo. Normalmente já existe um erro pré-definido pelo VDF, mas é possível programar outro.
Para exemplificar informe o número 101 na primeira janela e na segunda a descrição QTD DE PESSOAS FORA DO
LIMITE!
Lembre de salvar o arquivo.
Página 20
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Para acessar a tabela de erros do DataFlex abra no Menu Workspace a opção Error Maintanance. Neste utilitário é possível
identificar a estrutura de controle de erros do VDF, bem como acrescentar erros a tabela. Para incluir um erro escolha o banco de
dados de erros USER e procure o erro 101. A partir deste erro o programador pode incluir seus próprios erros. Para informar um erro
ao usuário o comando é ERROR xxx, onde xxx é o número do erro.

9.5. Field Settings – Validation Table


Esta opção serve para o usuário criar uma tabela de validação com valor e descrição. Uma Tabela de Validação pode ser
Static, Dynamic ou Custom. Iremos aboradar neste curso Tabela Static e Dynamic.

9.5.1. Tabela de Validação Static


Serve para criar tabelas que não variam ou variam muito pouco. Para incluir um novo valor na tabela é preciso que o
programador entre no DataBase Builder acrescente o valor desejado e recompile o programa.
Para exemplificar abra o arquivo BAIRROS escolha o campo ESTADO clique em STATIC e digite a sigla e os estados da
federação.
A opção Validate [x] serve para garantir que será feita a validação dos dados da tabela. Caso desmarcada esta opção a tabela
será apenas de sugestão. Mantenha esta opção assinalada.
A opção Blanks [ ] serve para indicar a possibilidade de passar o camp oem branco. Mantenha neste exemplo a opção
desmarcada.

PR PARANA
SC SANTA CATARINA
RS RIO GRANDE DO SUL
SP SÃO PAULO
... etc

Agora abra o arquivo Pedido e escolha o campo forma_Pag e o tipo Static. Digite a tabela a seguir.

D Dinheiro
C Cheque
VR Vale Refeição

Desmarque a opção Validate e assinale a opção Blanks

9.5.2. Tabela de Validação Dynamic


Serve para criar uma tabela nos mesmos moldes da anterior porém com a possibilidade de que o próprio usuário cadastre
dados na tabela através de um utilitário.

Para exemplificar faça o seguinte.


- Abra o DataBase Builder mas mantenha todos os arquivos de dados fechados.
- Clique no menu Workspace e na opção Code Master Maintanance
- Em Type: digite UNIDADES
- Em Description digite UNIDADES DE MEDIDA
- Passe com o TAB e salve até entrar na linha de dados
- Digite as unidades conforme a tabela a seguir:
PC PEÇA
UM UNIDADE
KG QUILOGRAMA

- Feche o utilitário Code Maintanance


- Abra o arquivo PRODUTOS
- Na guia Field Settings – Validation Table selecione o campo UND_MEDIDA e marque a opção Dynamic e na opção
Type Value selecione UNIDADES
- Salve o arquivo

Página 21
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Após o programa compilado se for necessário incluir mais unidades de medida basta utilizar o program Code Master
Maintanance e acrescentar as unidades.

10. Máscaras - Field Settings - Mask


As máscaras são usadas para a formatação de campos de entrada de dados. Ex.: CEP O usuário digita 81020010 mas na tela
aparece 81020-010. Ou telefone. O usuário digita 021142471488 e na tela aparece (02114)247-1488.
Existem 4 tipos básicos de máscaras. Currency para moeda, Date para datas, Numeric para números e Text para texto. Se o
programador fizer uso do tipo básico apenas, o VDF irá verificar o padrão das configurações do windows de acordo com este tipo. Por
exemplo se o tipo for Date e não houver nenhum detalhamento na janela Custom Mask (Máscara personalizada) a data será mostrada
com o ano com 2 ou 4 casas de acordo com a configuração do windows da máquina que estiver rodando o sistema.
O Custom Mask é um detalhamento da máscara e depende do tipo utilizado e funciona com a utilização de tokens – simbolos
pré-definidos para cada tipo. A saber:

Text Mask Type or None

Token Significado
# Qualquer dígito numérico (0-9)
@ Qualquer caracter alfabético (A-Z, a-z)
! Qualquer caracter de pontuação
* Qualquer caracter

Date Mask Type

Token Significado
m Número do mes, será impresso como 1, 2, 3, …, 12
mm Número do mes, será impresso como 01, 02, 03, …, 12
mmm Nome do mes abreviado (traduzido para a lingua local) Jan, Fev, etc
mmmm Nome completo do mês. Janeiro, Fevereiro, etc
d Número do dia, impresso como 1, 2, 3, …, 31
dd Número do dia, impresso como 01, 02, 03, …, 31
ddd Dia da semana abreviado. Seg, Ter, Qua, etc
dddd Dia da semana completo. Segunda, Terça, etc
yy Ano com 2 casas. 00, 01, 02, …, 99
yyyy Ano com 4 casas. 2000, 2001, 2002, …, 2099
/ Separador para data

Nota: Símbolos para dia e mes são case-sensitive. Isto é, Mmm = Abr, MMM=ABR

Numeric e Currency

Token Significado
, Formatação do número para milhares. Separa de três em três a esquerda do ponto decimal. Este símbolo é traduzido
para o separador configurado na máquina local.
. Posição do ponto decimal.
; Separa números positivos a esquerda e negativos a direita do ponto e vírgula.
# Nenhum dígito ou um dígito
* Qualquer número de dígitos
0 Um dígito ou zero.

Exemplos:

Text Mask Type or None


Mask Dado digitado Dado formatado
###-##-#### "012345678" 012-34-5678
###-##-#### "012-34-5678" 012-34-5678
(###) ###-#### "2125551212" (212) 555-1212
Página 22
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

(###) ###*#### "212-555-1212" (212) 555-1212

Date Mask Type


Mask Dado digitado Dado Formatado Data
Ddd - Mmm d, yyyy 9/22/1998 Seg - Set 22, 1998
m/d/yy 9/22/1998 9/22/98
Mmmm d 9/22/1998 Setembro 9

Numeric e Currency Mask Type


Mask Raw Data Formatted Data (BR)
$#,##0;($#,##0) 1001.536 R$1.002
$#,##0;($#,##0) -1001.536 (R$1.002)
0.00 -0.2 -0,20
00000 123 00123
-> * <- 104 -> 104 <-
*0.* 30.2500 30,25
+*0.00;-*0.00 12 +12,00

Para representar o nosso exemplo utilizaremos as seguintes máscaras


Arquivo Campo Mask type Custom Mask
Clientes CEP Numeric 00000-000
Produtos PRECO_VENDA Currency
Pedido DATA Date
Pedido VALOR_TOTAL Currency

11. Aparência - Field Settings – Appearance


Esta guia permite a configuração da aparência dos objetos de entrada de dados quando forem criados pelo DataBase Selector.
Isto agiliza muito a criação de um software e principalmente determina um padrão de apresentação do mesmo, tornando o software
criado mais profissional.

Visual Control: O Controle Visual determina o tipo de objeto que será gerado na tela automaticamente quando o campo for
arrastado do seletor de campos para a View (tela de entrada de dados). Se não for informado o VDF irá decidir pelo objeto padrão do
tipo do campo.
São eles:
DbBitmap – Objeto que irá conter uma figura .bmp ou outro tipo (.jpg)
DbCheckBox – Objeto para marcar – assinalar com [X]
DbComboForm – Caixa de Combinação. Utilizado normalmente para campos com Simple Validation ou Validation Table
DBEdit – Campos para editoração. Utilizados para campos tipo TEXT
DbForm – Campo normal de entrada de dados. Utilizado para campos numéricos, data e ASCII
DbGrid – Tabela de entrada de dados composto de linhas e colunas
DbSpinForm – Campo de entrada de dados numéricos ou datas com botões para incrementar ou decrementar o valor do
campo.

Long Label: É o Label ou Rótulo para cada campo que será usado nas Views. Se long label não for informado será utilizado
o nome do campo como rótulo automático.

Short Label: É o Label ou rótulo para cada campo que é usado em uma Grid ou Lookup. Se não for informado será utilizado
o Long Label. Se Long Label não for informado será usado o nome do campo.

Para o nosso sistema a configuração fica da seguinte forma:

Arquivo Campo Visual Control Long Label Short Label


Bairros Cod_Bairro Codigo Cod
Nome Nome do Bairro Nome

Página 23
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Cidade Cidade Cidade


Estado DbComboForm Estado UF

Clientes Telefone Telefone Fone


Nome Nome Nome
Endereco Endereco Endereco
Bairro
Cep Cep Cep
E_Mail E-Mail E-Mail
Proximidade Proximidade
Sexo dbComboForm Sexo Sexo
Qtd_Pessoas Quantidade de Qtd
Pessoas

Entreg Codigo Codigo Codigo


Nome Nome
Telefone Telefone Fone
Celular Celular Celular

Produtos Codigo Codigo


Nome Nome
Preco_Venda Preço de Venda Preço
Em_Estoque dbSpinform Quantidade em QTD
Estoque’
Und_Medida dbComboForm Unidade Und

Pedido Ped_Numero Número Número


Cliente
Data DbSpinForm Data Data
Entreg
Valor_Total Total Total
Forma_Pag DbComboForm Forma de Pagamento Pgto em
Obs DbEdit Observação

Peditens Ped_Numero
Produto
Valor_Unitario Valor Unitário Unitário
Qtd DbSpinForm Quantidade Qtd
Valor_Total Total Total

12. Complementos do Dicionário de Dados - Field Settings – Other


Nesta guia poderemos informar outras opções como a seguir:

Status Help: Ajuda que irá aparecer na barra de status para cada campo. Informe um status help para cada campo.
Default Value: Valor default do campo para um novo cadastro.
Para o arquivo de Bairros no campo Estado informe PR
Para o arquivo de Peditens no campo Qtd informe o número 1
Entry Method: Neste campo informaremos o método ou procedure que será executada ao entrar no campo
Exit Method: Neste campo informaremos o método ou procedure a ser executada ao sair do campo.
Auto Increment: Arquivo.Campo que contém a referencia para códigos automáticos. Já visto no item 7.2
Short description: Ajuda ou documentação para o programador e para o analista. Não aparece para o usuário.

Página 24
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

13. Métodos – Methods


Nesta guia podemos inserir todos os métodos – procedures ou functions que precisarmos. Para cada arquivo do banco de
dados o VDF cria uma Sub Classe de dicionário de dados para possibilitar que criemos as nossas procedures e functions que irão
trabalhar em cada arquivo.

13.1. Procedures e Functions – qual a diferença entre elas


Uma procedure normalmente executa uma tarefa e não retorna valor, embora em DataFlex seja possível uma procedure
retornar valor.
Uma function executa uma rotina, um cálculo por exemplo, e sempre retorna um valor.

Exemplo:

Procedure pMostraCivil String sCivil


If (sCivil = “C”) Send Info_box “Casado”
If (sCivil = “S”) Send Info_box “Solteiro”
If (sCivil = “V”) Send Info_box “Viúvo”
If (sCivil = “D”) Send Info_box “Divorciado”
End_Procedure

Function fMostraCivil String sCivil Returns String


String sDescricao

If (sCivil = “C”) Move “Casado” To sDescricao


If (sCivil = “S”) Move “Solteiro” To sDescricao
If (sCivil = “V”) Move “Viúvo” To sDescricao
If (sCivil = “D”) Move “Divorciado” To sDescricao

Function_Return sDescricao
End_Function

Para executar (chamar) uma procedure utilize o comando Send + nome da procedure + os parâmetros
Ex.: Send pMostraCivil C Resultado: Casado

Para executar uma function pode utilizar o comando Get + nome da função + parâmetros + To + Variável destino
Ex.: Get fMostraCivil “C” To sDesc_Civil Resultado: A variável sDesc_Civil terá o conteúdo igual a “Casado”

13.2. Um exemplo de Entry Method


Abra o arquivo Pedido e clique na Gui Methos. Logo abaixo da linha Class Pedido_DataDictionary is a DataDictionary digite
a seguinte procedure:

Procedure pDataDoPedido Integer iField Date DataPedido


Integer Alterado

Get Field_Changed_State iField To Alterado


If (Alterado = 0 And DataPedido = 0) Begin
Sysdate4 DataPedido
Set Field_default_Value iField To DataPedido
End
End_Procedure

Agora clique na Guia Others e selecione o campo Data e clique no botão [...] e escolha a procedure pDataDoPedido.
Esta procedure faz com que ao entrar no campo de um novo pedido seja movida a data do sistema para a janela Data.

Página 25
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

13.3. Procedure UpDate, BackOut, Delete e Creating


Estas procedures são utilizadas para o controle de gravação e atua lização dos dados.

Procedure Inclusão Alteração Exclusão


Creating X
Deleting X
UpDating X X
BackOut X X

Um exemplo que ilustra muito bem o funcionamento da UpDating (atualizar) e da BackOut (desfazer) é o controle
de estoque. Portanto iremos programar a seguir as procedures para o correto controle de estoque ao vendermos os nossos itens
no sistema.

Abra o arquivo Peditens e posicione na guia Methods. Do lado esquerdo clique no [+] Unaugmented Methods e será
mostrado a lista dos métodos padrões do VDF que ainda não foram implementados para o dicionário de dados deste arquivo.
De dois clicks em Update e em Backout. No editor do lado esquerdo estará disponível a estrutura para que seja
possível a digitação do método. A seguir complemente os dois métodos e aproveite para digitar os demais métodos que serão
utilizados no programa e que ainda não foram digitados. Observe que algumas procedures já estão definidas pois são default
da classe.

Class Peditens_DataDictionary is a DataDictionary

// Backout: responsável por desfazer para os casos de alterações e exclusões


Procedure Backout
Forward Send Backout
Calc (Produtos.Em_estoque + Peditens.Qtd) To Produtos.Em_Estoque
Calc (Pedido.Valor_Total - Peditens.Valor_Total) To Pedido.Valor_Total
End_Procedure // Backout

// Update: realiza a atualização do estoque e do valor subtotal e total


Procedure Update
Forward Send Update
Move (Peditens.Qtd * Peditens.Valor_Unitario) To Peditens.Valor_Total
Calc (Produtos.Em_estoque - Peditens.Qtd) To Produtos.Em_Estoque
Calc (Pedido.Valor_Total + Peditens.Valor_Total) To Pedido.Valor_Total
End_Procedure // Update

//Serve para incluir automaticamente o preço de tabela na grid de itens de pedido


Procedure Preco_de_Tabela integer iField Number nValorUnitario
If (nValorUnitario = 0) Begin
Get File_Field_Current_Value File_Field Produtos.Preco_Venda To nValorUnitario
Set Field_Changed_Value iField To nValorUnitario
Send Exibir_Subtotal_Na_Tela
End
End_Procedure

//Esta procedure serve apenas para atualizar o valor na tela


Procedure Exibir_Subtotal_Na_Tela
Integer iQtd
Number nValorUnitario

Get Field_Current_Value Field Peditens.Qtd To iQtd


Get Field_Current_Value Field Peditens.Valor_Unitario To nValorUnitario
Set Field_Current_Value Field Peditens.Valor_Total To (iQtd * nValorUnitario)
End_procedure

Página 26
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

// Define_Fields:
// This procedure is used to set up all data-dictionary rules.

Procedure Define_Fields
Forward Send Define_Fields
//DDB-Generated-Code-Location
End_Procedure // Define_Fields

// Field_Defaults:
// This procedure is used to establish default field values.

Procedure Field_Defaults
Forward Send Field_Defaults
//DDB-Generated-Code-Location
End_Procedure // Field_Defaults

End_Class // Peditens_DataDictionary

Após digitar as procedures informe ao DataBase Builder arquivo de Peditens na Guia Others para o campo Valor_Unitario o
método Preco_De_Tabela.

14. Guia Structures – Estruturas de Exclusão e Gravação


Nesta guia o programador pode visualizar e alterar as estruturas de gravação e exclusão. Em VDF toda vez que é feito uma
exclusão o dicionário de dados acessa a lista Required Chield Files (Filhos) para decidir as exclusões em cascata e toda vez que é feita
uma gravação o dicionário de dados acessa a lista de Required Parent Files (Pais) para verificar quais os arquivos que devem ser
salvos. Esta estrutura normalmente é montada automaticamente com base no relacionamento de arquivos.

14.1. Cascade Delete


Também podemos controlar a exclusão em cascata ou não. Isto é ao excluir um registro verificar todos os registros filhos para
proceder a exclusão.
Para entender este procedimento proceda da seguinte forma:
Abra o arquivo Bairros e posicione na Guia Structure. Desmarque a opção Cascade Delete, pois não desejamos que ao excluir
um bairro todos os clientes sejam excluídos.
Abra o arquivo Entreg e proceda da mesma forma, pois não desejamos que todos os pedidos de um entregador sejam
excluídos na tentativa de excluir o entregador.
Abra o arquivo produtos e desmarque a opção Cascade Delete pois não desejamos que seja excluído os iten

Portanto o Cascade delete desmarcado significa que só será possível excluir o registro do arquivo se não existirem registros
filhos. Se o Cascade Delete estiver assinalado serão excluídos todos os registros filhos da árvore, a não ser que na árvore exista algum
arquivo que esteja com Cascade Delete desmarcado.

É bom lembrar que para excluir um registro é necessário que sejam incluídos os .DDs filhos na View do arquivo principal.
Exemplo. Para poder excluir um bairro é necessário que na View de bairros esteja a .DD do cliente.

15. Guia Options – Opções de relacionamento de arquivos


Nesta guia o programador define o comportamento do arquivo quando ele recebe o relacionamento de outro arquivo. Existem
três definições:
Key Foreign Field Options : definições para os campos chave
Idex Foreign Field Options : Definições para os campos que fazem parte de um índice.
Default Foreign Field Options : Definições para os demais campos

Na opção Other Settings existe uma checkbox chamada Protect Key Field normalmente assinalada para definir que os campos
chave não podem ser alterados depois de gravados.

Página 27
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

16. Criando Uma View pelo Wizard


O Wizard é um assistente para a criação de Views. É muito interessante para os iniciantes na programação VDF, porém o
mais comum é a utilização de uma Blank View e a criação completa da View.

Abra o Ide
Clique em file – New Component
Na guia Data Entry Views escolha View Wizard e clique no botão [OK]
Digite o nome da View. Ex.: wzBairros
Clique em Next
Você pode escolher
Only forms – Apenas Formulários
Only grids – Apenas tabelas de entrada de dados (linhas e colunas)
Forms and Grids – Os dois juntos. Utilizado para telas do tipo pedido, notas fiscais, orçamentos, etc.
Escolha Only forms e clique em Next
Agora Selecione o(s) Dicionários de Dados a serem usados. Para mais de um mantenha pressionado a tecla CTRL e clique
Selecione o Dicionário de Dados de Bairros e clique em Next
Agora selecione os campos desejados para compor a tela de entrada de dados.
Selecione: Cod_bairro, nome, cidade, estado e clique em Next
Pronto. Sua tela de entrada de dados está pronta
Clique em Finish

Você logo irá notar que o Wizard não reconhece alguns detalhes configurados do Dicionário de Dados, como nome dos
campos (appearance), Tipo de Objeto (objeto control), etc. Mas a View funciona perfeitamente.
Para testar clique no botão Teste (um homenzinho azul correndo)

Repita o processo para os cadastros de Clientes, Produtos e Entregadores

17. Criando Uma View pelo Blank View


Exemplo criando a View de entrada de dados de Bairros (Isto é, o Cadastro de Bairros)
Abra o Ide
Clique em file – New Component
Na guia Data Entry Views escolha BlankView e clique no botão [OK]
Selecione o Dicionário de Dados a ser Utilizado clicando no botão DataBase Selector
Como não existe nenhum dicionário de dados na View irá abrir automaticamente uma tela com o botão [ADD DDO]
Adiocione o dicionário de Dados. Clique neste botão.
Irá aparecer uma lista dos dicionários de dados disponíveis. A explicação para esta seleção é que quem controla a grvação,
pesquisa, alteração e exclusão no banco de dados é o dicionário de dados. Por isto a View precisa saber qual é, ou quais são, o(s)
dicionário(s) de dados que irá(rão) fazer parte da View.
Escolha o Dicionário de Dados de Bairros e clique no botão Select
Ele será o principal de nossa View (neste caso o único), clique em Sim (Yes) para a Pergunta se ele será o pricnipal (Main?)
Clique em close para fechar a tela de Dicionários de Dados e trabalhar com a tela Database Selector
Esta tela mostra os bancos de dados disponíveis para que possamos escolher os campos que farão parte da View.
Antes de escolhermos os campos vamos dar um toque profissional a nossa View
Clique no Menu Tools – controls Pallete (Ou no botão com o martelo e a chave de boca)
Este Painel possibilita a escolha de objetos para a composição de nossa View
Clique na Guia Data Containers – Clique no segundo container (dbContainer3d) – Clique, segure e arraste para o canto
superior esquerdo da View e solte. Redimensione o container para ocupar a maior parte da View.
Agora no Database Selector de 2 clicks no banco de dados de Bairros
Assinale os campos: Cod_Bairro, Nome, Cidade e Estado
Clique em um deles, segure e arraste para o canto superior esquerdo do Container, deixando espaço a esquerda para os
Rótulos (Labels).
Ajuste os tamanhos dos objetos para ficar com uma boa aparência.
Clique no disquete para Salvar.
File Name=Bairros
Description=Cadastro de Bairros
Object-Name=wBairros
Página 28
CURSO DE VISUAL DATAFLEX 7.0 PROFESSOR: MARCIO MARINO GUSSO

Deferred=[x]
18. Créditos
Marcio Marino Gusso é analista de sistemas e programador de computador formado pelo Centro Federal de Educação
Tecnológica do Paraná em Eletrônica e graduado em Cienência da Computação pela Pontifícia Universidade Católica do Paraná e com
pós-graduação em Engenharia da Informação pela mesma instituição.
Atua com a ferramenta Dataflex desde a versão 2.3b tendo trabalhado em ambiente UNIX, MS-DOS, Novell, NT e Windows.
Instrutor oficial de VDF-Visual DataFlex da DataAccess WorldWide, empresa que fornece o DataFlex.
Atualmente professor titular de Banco de Dados e de Visual DataFlex no Colégio e Faculdade Padre João Bagozzi e analista
de sistemas da empresa Marcol Informática Ltda.

DataFlex e Visual DataFlex são marcas registradas da empresa DataAccess World Wide

Links de interesse:

marcio@marcol.inf.br
marcio@bagozzi.com.br
www.marcol.inf.br
www.dataaccess.com.br
www.dataflex.com.br
www.apoioinfo.com
www.netpar.com.br

Página 29

You might also like