Sei sulla pagina 1di 67

Progress DCA Desenvolvendo Aplicaes Caracter

Parte 1

Tecnologia

Agenda
Parte 1 9 Introduo ao Progress 9 Movimentao dos Dados 9 Manipulando os Dados 9 Blocos 9 Localizando Registros 9 Variveis 9 Processamento Condicional Parte 2 9 Frames 9 Includes 9 Relatrios 9 Programao Orientada a Eventos

Agenda
9 Widgets 9 Tipos de Widgets 9 Menus 9 Tabelas Temporrias (TEMP-TABLE) Parte 3 9 Procedures 9 Compartilhamento de Dados 9 Importao e Exportao de Dados 9 Tratamento de Erros 9 Transaes 9 Bloqueio de Registro 9 Funes

Introduo ao Progress

INTRODUO AO PROGRESS

Introduo ao Progress
9 Completo ambiente de desenvolvimento de aplicaes. 9 composto por: Sistema Gerenciador de Banco de Dados Relacional. Linguagem de 4a. Gerao. Ferramentas de Programao.

Benefcios

FLEXVEL

ABERTO

COMPLETO

Benefcios
9 Flexvel Assegura portabilidade das aplicaes em outras plataformas. 9 Aberto Suporta o padro industrial. Assegura opes de desenvolvimento heterogneo. 9 Completo Permite construo de grandes aplicaes. Produz solues Client/Server.

Componentes Lgicos
9 Base de Dados Tabela Registro Campo ndice

Componentes Lgicos

Cliente

Empresa

Banco

= Base Dados

Componentes Lgicos Tabela

Registro

Nome

Campo

ndice

10

Componentes Fsicos

.BI

.DB .LG

.LK

11

Componentes Fsicos

.DB

DATABASE: Contm os dados atuais e descries da base

.BI

BEFORE-IMAGE: Contm a imagem dos dados de uma transao

12

Componentes Fsicos

.LG

LOG: Contm as referncias dos usurios, hora de entrada, sada e programas acessados (histrico).

.LK

LOCK: Informa se a base est sendo acessada.

13

Componentes da Linguagem
9 Blocos 9 Declaraes 9 Funes 9 Operadores 9 Variveis 9 Expresses 9 Smbolos especiais 9 Elementos da interface com o usurio (atributos e mtodos 9 Eventos

14

Tipos de Dados do Progress

Tipo Character

Formato x(8) Aceita: A Alfabetico ! Maiusculas >>>,>>9 Aceita: z espao 9 mostra 0 >>>,>>9.99

Exemplo x(40) > string alfanumrica AAA-9999 > MCZ-9283 !x(10) > STRING ALFANUMRICA >>>,>>9 > 1.500 999,999 > 001.500 zzz,zz9 > 1.500 >>>,>>9.99 > 1.500,45 999,999.99 > 001.500,45 zzz,zz9.99 > 1.500,45 Yes No 12/31/9999

Integer

Decimal

Logical Date Rowid Recid

Yes/No Aceita: True/False MM/DD/AAAA --->>>>>9

15

Movimentao dos Dados

MOVIMENTAO DOS DADOS

16

Localizao dos Dados

BASE DE DADOS BUFFER REGISTRO

BUFFER TELA

17

Movimentando Dados

BASE DE DADOS TELA

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

18

Movimentando Dados

TELA BASE DE DADOS

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

ENTRADA USURIO

19

Regras para Movimentao de Dados


9 Os programas no podem manipular os dados da base de dados at que eles sejam copiados para o buffer de registro. 9 O usurio no pode interagir com os dados at que eles sejam copiados do buffer de registro para o buffer de tela. 9 As alteraes que so feitas no buffer de tela ou buffer de registro no so atualizadas automaticamente em outro buffer. Deve-se programar o controle de movimentao entre os buffers.

20

Comandos de Movimentao de Dados


Comando ASSIGN CREATE DELETE DISPLAY ENABLE FIND FOR EACH GET INSERT PROMPT-FOR RELEASE SET UPDATE Banco de Dados Buffer de Registro Buffer de Tela Usurio

21

Manipulando os Dados

MANIPULANDO OS DADOS

22

Insert
9 Cria um novo registro no banco, permite que o usurio faa alteraes e atualiza as informaes no banco. 9 Executa as aes de CREATE, DISPLAY, PROMPT-FOR e ASSIGN. 9 Ex.: INSERT customer.

23

Create
9 Cria um novo registro no banco, inicializa com os valores defaults (padros) e deixa uma cpia do registro no buffer de registro. 9 Ex.: CREATE customer.

24

Update
9 Mostra os valores, permite ao usurio alterar e atualiza os dados no banco. 9 Executa as aes de DISPLAY, PROMPT-FOR e ASSIGN. 9 Ex.: UPDATE customer.

UPDATE customer EXCEPT cust-num.

25

Display
9 Mostra os valores na Tela. 9 Move os dados do Buffer de Registro para o Buffer de Tela. 9 Os dados devem sempre ter sido previamente movidos para o Buffer de Registro. 9 Ex.: DISPLAY customer.

DISP customer.cust-num.

26

Set
9 Permite que o usurio altere as informaes e atualiza o banco de dados. 9 Executa as aes de PROMPT-FOR e ASSIGN. 9 Ex.: SET customer.

SET customer.name.

27

Prompt-For
9 Solicita uma entrada de dados ao usurio e disponibiliza no buffer de tela. 9 Ex.: PROMPT-FOR customer.cust-num.

FIND customer WHERE customer.cust-num = INPUT customer.cust-num NO-ERROR. IF AVAILABLE customer THEN DISPLAY customer EXCEPT customer.comments WITH 1 COLUMN.

28

Assign
9 Atualiza a informao no Banco de Dados. 9 Copia os dados do buffer de tela para seus respectivos campos e/ou variveis no buffer de registro. 9 Ex.: DEF VAR i-cust-num AS integer NO-UNDO.

PROMPT-FOR i-cust-num. FIND FIRST customer EXCLUSIVE-LOCK. ASSIGN customer.cust-num = i-cust-num.

29

Delete
9 Elimina um registro do buffer de registro e do banco de dados. 9 Os dados devem sempre ter sido previamente movidos para o Buffer de Registro. 9 Ex.: REPEAT:

PROMPT-FOR customer.cust-num. FIND customer USING customer.cust-num. DELETE customer. END.

30

Quadro de Comandos

INSERT UPDATE SET CREATE DISPLAY PROMPT-FOR ASSIGN

31

Observe a Movimentao

insert customer.

create customer. update customer. create customer. display customer. prompt-for customer. assign customer.

32

Quadro de Comandos

INSERT UPDATE SET


DELETE CREATE DISPLAY PROMPT-FOR ASSIGN FIND FOR EACH RELEASE

33

Laboratrio 1

LABORATRIO 1
Exerccio disponvel no material de apoio

34

Blocos

BLOCOS

35

Tipos de Blocos
9 REPEAT 9 FOR EACH 9 DO 9 PROCEDURES 9 TRIGGERS

36

Repeat
9 Lao (repetio) automtico. Continua a interagir at encontrar um END-ERROR ou outra condio de trmino definida pelo usurio. 9 Ex:

REPEAT WITH 1 COLUMN: CREATE customer. UPDATE customer. END.

37

For Each
9 L um registro a cada interao do bloco e copia os dados do banco para o buffer de registro. 9 Ex:

FOR EACH customer: DISPLAY customer.cust-num customer.name. END.

38

Do
9 Individualiza um grupo de comandos dentro de um bloco simples. 9 Ex: FOR EACH customer: DISPLAY customer.cust-num. IF credit-limit > 15000 THEN DO: UPDATE customer.name customer.address. MESSAGE "Registro Alterado". END. END.

39

Desvio de Execuo de Blocos


9 Forma de desviar a seqncia de execuo de determinado bloco. 9 Comandos:

NEXT LEAVE
9 Ex: FOR EACH customer:

DISPLAY customer.cust-num. IF credit-limit > 15000 THEN NEXT. IF credit-limit = 10000 THEN LEAVE. UPDATE customer.name customer.address. END.

40

Laboratrio 2

LABORATRIO 2
Exerccio disponvel no material de apoio

41

Localizando Registros

LOCALIZANDO REGISTROS

42

Find
9 Busca apenas um registro em uma tabela.

FIRST (primeiro) LAST (ltimo) NEXT (prximo) PREV (anterior)


9 Ex.: FIND FIRST customer

WHERE customer.credit-limit > 15000 NO-ERROR. IF AVAILABLE customer THEN DISPLAY customer WITH 1 COLUMN.

43

Where
9 Limita os registros a serem mostrados em uma leitura de uma determinada tabela. 9 Ex: FOR EACH customer

WHERE customer.credit-limit > 15000: DISPLAY customer.cust-num customer.credit-limit. END.


9 OPERADORES:

NOT AND OR

> >= <>

< <=

44

Using
9 Substitui o WHERE, utilizando o dado informado no buffer de tela. 9 Ex: REPEAT WITH 1 COLUMN:

PROMPT-FOR customer.cust-num. FIND customer USING customer.cust-num. DISPLAY customer. END. WHERE customer.cust-num = INPUT customer.cust-num

45

Of
9 Substitui o WHERE, utilizando o ndice para fazer o relacionamento entre tabelas. 9 Ex: FIND FIRST customer.

FOR EACH order OF customer: DISPLAY order.order-num END.

WHERE order.cust-num = customer.cust-num

46

By
9 Usa-se a opo BY para classificao de registros por um campo no indexado. 9 Ex: FOR EACH customer

BY balance DESCENDING: DISPLAY customer.balance customer.name customer.phone. END.


9 Default: ordenao ascendente

47

Use-Index
9 A opo USE-INDEX permite que voc escolha qualquer ndice definido para selecionar registros. 9 Ex: FOR EACH customer USE-INDEX name:

DISPLAY customer.balance customer.name customer.phone. END.

48

Begins
9 Verifica se a 1 expresso inicia com a 2 expresso. 9 Utiliza um ndice caso exista. 9 Ex: FOR EACH customer WHERE customer.name BEGINS S: DISPLAY customer.cust-num customer.name customer.phone. END.

49

Matches
9 Compara uma expresso do tipo caracter com um padro e retorna o valor verdadeiro se a expresso for atendida. 9 No utiliza ndice. 9 Ex: FOR EACH customer

WHERE customer.address MATCHES *st: DISPLAY customer.cust-num customer.name customer.address. END.

50

Contains
9 Faz a busca por determinada palavra ou combinao delas, em atributos do tipo word-index. 9 Ex: FOR EACH item

WHERE item.item-name CONTAINS ball: DISPLAY item.item-num item.item-name item.price. END.

51

Buffer
9 Funciona como um espelho da tabela. 9 Ex: DEFINE BUFFER bf-cliente FOR customer.

FIND FIRST customer. UPDATE customer.cust-num customer.name. FIND bf-cliente WHERE bf-cliente.cust-num = customer.cust-num. DISPLAY bf-cliente.name bf-cliente.phone. UPDATE customer.address.

52

Query
9 Pesquisa agrupada de registro do banco de dados. 9 Exemplos: Definir a query:

DEFINE QUERY nome-da-query FOR tabela SCROLLING.


Abrir a query:

OPEN QUERY nome-da-query FOR EACH tabela.


Acessar os registros:

GET FIRST nome-da-query.

53

Get
9 Retorna um registro de uma query previamente aberta. 9 Ex:

GET GET GET GET

FIRST nome-da-query. NEXT nome-da-query. PREV nome-da-query. LAST nome-da-query.

54

Exemplo: Query + Get


DEFINE QUERY qr-cust FOR customer SCROLLING. OPEN QUERY qr-cust FOR EACH customer. GET FIRST qr-cust. REPEAT: DISP customer. GET NEXT qr-cust. END.

55

Laboratrio 3

LABORATRIO 3
Exerccio disponvel no material de apoio

56

Variveis

VARIVEIS

57

Variveis
9 Ex.: DEFINE VARIABLE nome-variavel

AS Tipo de dado LIKE Tabela.atributo INITIAL ABC NO-UNDO.

9 Ex.: DEFINE VARIABLE c-customer

AS char NO-UNDO. DEF VAR i-cust-num LIKE customer.cust-num NO-UNDO.

58

Message
9 Envia uma mensagem para a tela. 9 Sintaxe:

MESSAGE texto [ UPDATE variavel ] [ VIEW-AS ALERT-BOX [ QUESTION | INFORMATION | WARNING | ERROR ] ] [ BUTTONS YES-NO | YES-NO-CANCEL | OK | OK-CANCEL | RETRY-CANCEL ] [ TITLE ttulo ].

59

Exemplo: Message
DEF VAR l-resp AS logical INITIAL no NO-UNDO. MESSAGE Confirma Atualizao? UPDATE l-resp VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO TITLE Atualizao de Dados.

60

Laboratrio 4

LABORATRIO 4
Exerccio disponvel no material de apoio

61

Processamento Condicional

PROCESSAMENTO CONDICIONAL

62

Processamento Condicional

SOLICITA NUM. CLIENTE

BUSCA REGISTRO NO BANCO DE DADOS

SIM ENCONTROU?

NO

ALTERA INFORMAES

ADICIONA NOVO

63

Processamento Condicional: IF

IF expression THEN comando. ELSE DO: comando. comando. BLOCO comando. END.

64

Processamento Condicional: Case

CASE expression: WHEN value THEN comando. WHEN value THEN DO: bloco. END. WHEN value THEN comando. OTHERWISE DO: bloco. END. END CASE.

65

Laboratrio 5

LABORATRIO 5
Exerccio disponvel no material de apoio

66

Agradecimento
Obrigada!

universidade@datasul.com.br http://universidade.datasul.com.br

Este material de propriedade da DATASUL S.A., sendo proibida a sua reproduo em qualquer meio, total ou parcial, sem aprovao por escrito. Todos os direitos esto reservados. A informao contida aqui confidencial e no pode ser utilizada fora da empresa ou das franquias que fazem parte da nossa rede, no podendo ser divulgada para clientes, parceiros ou outra empresa ou indivduo sem o prvio consentimento de um diretor da DATASUL S.A. As opinies expressas aqui esto sujeitas a modificao sem aviso prvio.

67

Potrebbero piacerti anche