Você está na página 1de 67

Progress DCA

Desenvolvendo Aplicações Caracter

Parte 1

Tecnologia

1
Agenda

Parte 1
9 Introdução ao Progress
9 Movimentação dos Dados
9 Manipulando os Dados
9 Blocos
9 Localizando Registros
9 Variáveis
9 Processamento Condicional

Parte 2
9 Frames
9 Includes
9 Relatórios
9 Programação Orientada a Eventos

2
Agenda

9 Widgets
9 Tipos de Widgets
9 Menus
9 Tabelas Temporárias (TEMP-TABLE)
Parte 3
9 Procedures
9 Compartilhamento de Dados
9 Importação e Exportação de Dados
9 Tratamento de Erros
9 Transações
9 Bloqueio de Registro
9 Funções

3
Introdução ao Progress

INTRODUÇÃO AO PROGRESS

4
Introdução ao Progress

9 Completo ambiente de desenvolvimento de aplicações.

9 É composto por:
Sistema Gerenciador de Banco de Dados Relacional.
Linguagem de 4a. Geração.
Ferramentas de Programação.

5
Benefícios

FLEXÍVEL ABERTO

COMPLETO

6
Benefícios

9 Flexível
Assegura portabilidade das aplicações em outras plataformas.

9 Aberto
Suporta o padrão industrial.
Assegura opções de desenvolvimento heterogêneo.

9 Completo
Permite construção de grandes aplicações.
Produz soluções Client/Server.

7
Componentes Lógicos

9 Base de Dados

Tabela
• Registro
• Campo

Índice

8
Componentes Lógicos

Cliente Empresa Banco

= Base Dados

9
Componentes Lógicos

Tabela

Registro

Nome Campo

Índice

10
Componentes Físicos

.DB
.BI .LG .LK

11
Componentes Físicos

DATABASE: Contém os dados atuais e descrições da


.DB base

BEFORE-IMAGE: Contém a imagem dos dados de uma


.BI transação

12
Componentes Físicos

LOG: Contém as referências dos usuários, hora de entrada,


.LG saída e programas acessados (histórico).

LOCK: Informa se a base está sendo acessada.


.LK

13
Componentes da Linguagem

9 Blocos

9 Declarações

9 Funções

9 Operadores

9 Variáveis

9 Expressões

9 Símbolos especiais

9 Elementos da interface com o usuário (atributos e métodos

9 Eventos

14
Tipos de Dados do Progress

Tipo Formato Exemplo

Character x(8) “x(40)” –> string alfanumérica


Aceita: A – Alfabetico “AAA-9999” –> MCZ-9283
! – Maiusculas “!x(10)” –> STRING ALFANUMÉRICA
Integer >>>,>>9 “>>>,>>9” –> 1.500
Aceita: z – espaço “999,999” –> 001.500
9 – mostra “0” “zzz,zz9” –> 1.500
Decimal >>>,>>9.99 “>>>,>>9.99” –> 1.500,45
“999,999.99” –> 001.500,45
“zzz,zz9.99” –> 1.500,45
Logical Yes/No Yes
Aceita: True/False No
Date MM/DD/AAAA 12/31/9999

Rowid ----

Recid >>>>>9

15
Movimentação dos Dados

MOVIMENTAÇÃO DOS DADOS

16
Localização dos Dados

BASE DE DADOS
BUFFER TELA

BUFFER REGISTRO

17
Movimentando Dados

BASE DE DADOS → TELA

BASE DE DADOS BUFFER REGISTRO


BUFFER TELA

18
Movimentando Dados

TELA → BASE DE DADOS

BASE DE BUFFER BUFFER ENTRADA


DADOS REGISTRO TELA USUÁRIO

19
Regras para Movimentação de Dados

9 Os programas não podem manipular os dados da base de dados


até que eles sejam copiados para o buffer de registro.

9 O usuário não pode interagir com os dados até que eles sejam
copiados do buffer de registro para o buffer de tela.

9 As alterações que são feitas no buffer de tela ou buffer de registro


não são atualizadas automaticamente em outro buffer. Deve-se
programar o controle de movimentação entre os buffers.

20
Comandos de Movimentação de Dados

Comando Banco de Dados Buffer de Registro Buffer de Tela Usuário


ASSIGN
CREATE
DELETE
DISPLAY
ENABLE
FIND
FOR EACH
GET
INSERT
PROMPT-FOR
RELEASE
SET
UPDATE

21
Manipulando os Dados

MANIPULANDO OS DADOS

22
Insert

9 Cria um novo registro no banco, permite que o usuário faça


alterações e atualiza as informações no banco.

9 Executa as ações 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


(padrãos) e deixa uma cópia do registro no buffer de registro.

9 Ex.: CREATE customer.

24
Update

9 Mostra os valores, permite ao usuário alterar e atualiza os dados


no banco.

9 Executa as ações 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 usuário altere as informações e atualiza o banco de


dados.
9 Executa as ações de PROMPT-FOR e ASSIGN.

9 Ex.: SET customer.


SET customer.name.

27
Prompt-For

9 Solicita uma entrada de dados ao usuário 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 informação no Banco de Dados.

9 Copia os dados do buffer de tela para seus respectivos campos


e/ou variáveis 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 Movimentação

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
Laboratório 1

LABORATÓRIO 1
Exercício disponível 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 Laço (repetição) automático. Continua a interagir até encontrar


um END-ERROR ou outra condição de término definida pelo
usuário.

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

37
For Each

9 Lê um registro a cada interação 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 Execução de Blocos

9 Forma de desviar a seqüência de execução 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
Laboratório 2

LABORATÓRIO 2
Exercício disponível no
material de apoio

41
Localizando Registros

LOCALIZANDO REGISTROS

42
Find

9 Busca apenas um registro em uma tabela.


– FIRST (primeiro)
– LAST (último)
– NEXT (próximo)
– 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 opção BY para classificação de registros por um campo


não indexado.

9 Ex: FOR EACH customer


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

9 Default: ordenação ascendente

47
Use-Index

9 A opção 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ª expressão inicia com a 2ª expressão.

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 expressão do tipo caracter com um padrão e


retorna o valor verdadeiro se a expressão for atendida.
9 Não 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 combinação 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 FIRST nome-da-query.
– GET NEXT nome-da-query.
– GET PREV nome-da-query.
– GET 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
Laboratório 3

LABORATÓRIO 3
Exercício disponível no
material de apoio

56
Variáveis

VARIÁVEIS

57
Variáveis

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 “título” ].

59
Exemplo: Message

DEF VAR l-resp AS logical


INITIAL no
NO-UNDO.

MESSAGE “Confirma Atualização?”


UPDATE l-resp
VIEW-AS ALERT-BOX QUESTION
BUTTONS YES-NO
TITLE “Atualização de Dados”.

60
Laboratório 4

LABORATÓRIO 4
Exercício disponível no
material de apoio

61
Processamento Condicional

PROCESSAMENTO CONDICIONAL

62
Processamento Condicional

SOLICITA NUM. CLIENTE

BUSCA REGISTRO NO
BANCO DE DADOS

SIM NÃO
ENCONTROU?

ALTERA INFORMAÇÕES 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
Laboratório 5

LABORATÓRIO 5
Exercício disponível 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 reprodução em qualquer meio, total ou
parcial, sem aprovação por escrito. Todos os direitos estão reservados. A informação contida aqui é confidencial
e não pode ser utilizada fora da empresa ou das franquias que fazem parte da nossa rede, não podendo ser
divulgada para clientes, parceiros ou outra empresa ou indivíduo sem o prévio consentimento de um diretor da
DATASUL S.A. As opiniões expressas aqui estão sujeitas a modificação sem aviso prévio.

67

Você também pode gostar