Post on 03-Apr-2018
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
1/67
1
Tecnologia
Progress DCADesenvolvendo Aplicaes Caracter
Parte 1
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
2/67
2
Parte 1
9 Introduo ao Progress9 Movimentao dos Dados
9 Manipulando os Dados
9 Blocos
9 Localizando Registros
9 Variveis
9 Processamento Condicional
Parte 2
9 Frames9 Includes
9 Relatrios
9 Programao Orientada a Eventos
Agenda
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
3/67
3
9 Widgets
9 Tipos de Widgets9 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 Registro9 Funes
Agenda
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
4/67
4
INTRODUO AO PROGRESS
Introduo ao Progress
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
5/67
5
9 Completo ambiente de desenvolvimento de aplicaes.
9 composto por:Sistema Gerenciador de Banco de Dados Relacional.
Linguagem de 4a. Gerao.
Ferramentas de Programao.
Introduo ao Progress
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
6/67
6
ABERTOFLEXVEL
COMPLETO
Benefcios
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
7/67
7
9 Flexvel
Assegura portabilidade das aplicaes em outras plataformas.
9 AbertoSuporta o padro industrial.
Assegura opes de desenvolvimento heterogneo.
9 CompletoPermite construo de grandes aplicaes.
Produz solues Client/Server.
Benefcios
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
8/67
8
Componentes Lgicos
9 Base de Dados
Tabela Registro
Campo
ndice
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
9/67
9
Cliente Empresa Banco
= Base Dados
Componentes Lgicos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
10/67
10
Tabela
Registro
CampoNome
ndice
Componentes Lgicos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
11/67
11
.DB
.LG.BI .LK
Componentes Fsicos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
12/67
12
.DB
BEFORE-IMAGE: Contm a imagem dos dados de umatransao.BI
DATABASE: Contm os dados atuais e descries dabase
Componentes Fsicos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
13/67
13
.LG
LOCK: Informa se a base est sendo acessada..LK
LOG: Contm as referncias dos usurios, hora de entrada,sada e programas acessados (histrico).
Componentes Fsicos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
14/67
14
Componentes da Linguagem
9 Blocos
9 Declaraes
9 Funes
9 Operadores
9 Variveis
9 Expresses
9Smbolos especiais
9 Elementos da interface com o usurio (atributos e mtodos
9 Eventos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
15/67
15
Tipos de Dados do Progress
Tipo Formato Exemplo
Character x(8)Aceita: A Alfabetico
! Maiusculas
x(40) > string alfanumrica AAA-9999 > MCZ-9283 !x(10) > STRING ALFANUMRICA
Integer >>>,>>9Aceita: z espao
9 mostra 0
>>>,>>9 > 1.500 999,999 > 001.500 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/NoAceita: True/False
YesNo
Date MM/DD/AAAA 12/31/9999
Rowid ----
Recid >>>>>9
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
16/67
16
MOVIMENTAO DOS DADOS
Movimentao dos Dados
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
17/67
17
BASE DE DADOS
BUFFER REGISTRO
BUFFER TELA
Localizao dos Dados
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
18/67
18
BASE DE DADOS BUFFER REGISTROBUFFER TELA
BASE DE DADOS TELA
Movimentando Dados
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
19/67
19
BASE DE
DADOS
BUFFER
REGISTRO
BUFFER
TELAENTRADAUSURIO
Movimentando Dados
TELA BASE DE DADOS
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
20/67
20
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 sejamcopiados do buffer de registro para o buffer de tela.
9 As alteraes que so feitas no buffer de tela ou buffer de registrono so atualizadas automaticamente em outro buffer. Deve-seprogramar o controle de movimentao entre os buffers.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
21/67
21
UPDATE
UsurioBuffer de TelaBuffer de RegistroBanco de DadosComando
ASSIGNCREATE
DELETE
DISPLAY
ENABLE
FIND
FOR EACH
GET
INSERT
PROMPT-FORRELEASE
SET
Comandos de Movimentao de Dados
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
22/67
22
MANIPULANDO OS DADOS
Manipulando os Dados
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
23/67
23
Insert
9 Cria um novo registro no banco, permite que o usurio faaalteraes e atualiza as informaes no banco.
9 Executa as aes de CREATE, DISPLAY, PROMPT-FOR e ASSIGN.
9 Ex.: I NSERT cust omer .
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
24/67
24
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 cust omer .
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
25/67
25
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 cust omer .UPDATE cust omer EXCEPT cust - num.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
26/67
26
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 oBuffer de Registro.
9 Ex.: DI SPLAY cust omer .DI SP cust omer . cust - num.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
27/67
27
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 cust omer .SET cust omer . name.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
28/67
28
Prompt-For
9 Solicita uma entrada de dados ao usurio e disponibiliza no buffer
de tela.
9 Ex.: PROMPT- FOR cust omer . cust - num.FI ND cust omer WHERE
cust omer . cust - num = I NPUTcust omer . cust - num NO- ERROR.
I F AVAI LABLE cust omer THENDI SPLAY cust omer
EXCEPT cust omer . comment sWI TH 1 COLUMN.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
29/67
29
Assign
9 Atualiza a informao no Banco de Dados.
9 Copia os dados do buffer de tela para seus respectivos campose/ou variveis no buffer de registro.
9 Ex.: DEF VAR i - cust- num AS i nt eger NO- UNDO.PROMPT- FOR i - cust - num.FI ND FI RST cust omer EXCLUSI VE- LOCK.ASSI GN cust omer . cust - num = i - cust - num.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
30/67
30
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 Bufferde Registro.
9 Ex.: REPEAT:PROMPT- FOR cust omer . cust - num.FI ND cust omer USI NG cust omer. cust - num.DELETE cust omer .
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
31/67
31
Quadro de Comandos
SET
ASSIGNPROMPT-FORDISPLAY
UPDATE
CREATE
INSERT
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
32/67
32
insert customer.
create customer.update customer.
create customer.
display customer.prompt-for customer.assign customer.
Observe a Movimentao
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
33/67
33
SET
ASSIGNDISPLAY
UPDATE
CREATE
INSERT
DELETE PROMPT-FOR FIND FOR EACH RELEASE
Quadro de Comandos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
34/67
34
LABORATRIO 1
Exerccio disponvel nomaterial de apoio
Laboratrio 1
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
35/67
35
BLOCOS
Blocos
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
36/67
36
Tipos de Blocos
9 REPEAT
9 FOR EACH
9 DO
9 PROCEDURES
9 TRIGGERS
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
37/67
37
Repeat
9 Lao (repetio) automtico. Continua a interagir at encontrar
um END-ERROR ou outra condio de trmino definida pelousurio.
9 Ex:REPEAT WI TH 1 COLUMN:
CREATE cust omer .UPDATE cust omer .
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
38/67
38
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 cust omer :
DI SPLAY cust omer . cust - num
cust omer . name.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
39/67
39
Do
9 Individualiza um grupo de comandos dentro de um bloco
simples.
9 Ex:
FOR EACH cust omer :
DI SPLAY cust omer . cust - num.
I F credi t - l i mi t > 15000 THEN DO:
UPDATE cust omer . name
cust omer . addr ess.
MESSAGE "Regi str o Al t er ado".
END.END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
40/67
40
Desvio de Execuo de Blocos
9 Forma de desviar a seqncia de execuo de determinado bloco.
9 Comandos: NEXT
LEAVE
9 Ex: FOR EACH cust omer :
DI SPLAY cust omer. cust - num.
I F credi t - l i mi t > 15000 THEN
NEXT.
I F credi t - l i mi t = 10000 THEN
LEAVE.
UPDATE cust omer . name
cust omer. addr ess.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
41/67
41
LABORATRIO 2
Exerccio disponvel nomaterial de apoio
Laboratrio 2
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
42/67
42
LOCALIZANDO REGISTROS
Localizando Registros
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
43/67
43
Find
9 Busca apenas um registro em uma tabela.
FI RST (primeiro)
LAST (ltimo)
NEXT (prximo)
PREV (anterior)
9 Ex.: FI ND FI RST cust omer
WHERE cust omer . credi t - l i mi t > 15000
NO- ERROR.
I F AVAI LABLE cust omer THENDI SPLAY cust omer WI TH 1 COLUMN.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
44/67
44
Where
9 Limita os registros a serem mostrados em uma leitura de uma
determinada tabela.
9 Ex: FOR EACH cust omer
WHERE cust omer . credi t - l i mi t > 15000:
DI SPLAY cust omer . cust - num
cust omer . credi t - l i mi t .
END.
9 OPERADORES:NOT > =
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
45/67
45
9 Substitui o WHERE, utilizando o dado informado no buffer de tela.
9 Ex: REPEAT WI TH 1 COLUMN:PROMPT- FOR cust omer . cust - num.
FI ND cust omer
USI NG cust omer. cust - num.DI SPLAY cust omer .
END.
WHERE cust omer . cust - num = I NPUT cust omer . cust - num
Using
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
46/67
46
9 Substitui o WHERE, utilizando o ndice para fazer o
relacionamento entre tabelas.
9 Ex: FI ND FI RST cust omer .
FOR EACH order OF cust omer :
DI SPLAY or der . or der - num
END.
WHERE or der . cust - num = cust omer . cust - num
Of
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
47/67
47
By
9 Usa-se a opo BY para classificao de registros por um campo
no indexado.
9 Ex: FOR EACH cust omer
BY bal ance DESCENDI NG:
DI SPLAY cust omer. bal ance
cust omer . name
cust omer . phone.
END.
9 Default: ordenao ascendente
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
48/67
48
Use-Index
9 A opo USE-INDEX permite que voc escolha qualquer ndice
definido para selecionar registros.
9 Ex: FOR EACH cust omer USE- I NDEX name:
DI SPLAY cust omer. bal ance
cust omer . name
cust omer . phone.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
49/67
49
Begins
9 Verifica se a 1 expresso inicia com a 2 expresso.
9 Utiliza um ndice caso exista.
9 Ex: FOR EACH cust omerWHERE cust omer . name BEGI NS S:
DI SPLAY cust omer . cust - num
cust omer . name
cust omer . phone.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
50/67
50
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 cust omer
WHERE cust omer. addr ess MATCHES *st:
DI SPLAY cust omer . cust - num
cust omer . name
cust omer. addr ess.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
51/67
51
Contains
9 Faz a busca por determinada palavra ou combinao delas, em
atributos do tipo word-index.
9 Ex: FOR EACH i t em
WHERE i t em. i t em- name CONTAI NS bal l :
DI SPLAY i t em. i t em- num
i t em. i t em- name
i t em. pr i ce.
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
52/67
52
Buffer
9 Funciona como um espelho da tabela.
9 Ex: DEFI NE BUFFER bf - cl i ente FOR cust omer .
FI ND FI RST cust omer .
UPDATE cust omer . cust - num
cust omer . name.
FI ND bf - cl i ente
WHERE bf - cl i ent e. cust - num = cust omer . cust - num.
DI SPLAY bf - cl i ent e. name
bf - cl i ent e. phone.
UPDATE cust omer. addr ess.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
53/67
53
Query
9 Pesquisa agrupada de registro do banco de dados.
9 Exemplos:
Definir a query:
DEFI NE QUERY nome- da- quer y
FOR t abel a SCROLLI NG.
Abrir a query:
OPEN QUERY nome- da- quer y FOR EACH t abel a.
Acessar os registros:
GET FI RST nome- da- quer y.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
54/67
54
Get
9 Retorna um registro de uma query previamente aberta.
9 Ex: GET FI RST nome- da- quer y.
GET NEXT nome- da- quer y.
GET PREV nome- da- quer y.
GET LAST nome- da- quer y.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
55/67
55
Exemplo: Query + Get
DEFI NE QUERY qr - cust
FOR cust omer SCROLLI NG.
OPEN QUERY qr - cust FOR EACH cust omer .
GET FI RST qr - cust .
REPEAT:
DI SP cust omer .
GET NEXT qr - cust .
END.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
56/67
56
LABORATRIO 3
Exerccio disponvel nomaterial de apoio
Laboratrio 3
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
57/67
57
VARIVEIS
Variveis
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
58/67
58
Variveis
9 Ex.: DEFI NE VARI ABLE nome- var i avel
AS Ti po de dadoLI KE Tabel a. at r i but o
I NI TI AL ABC NO- UNDO.
9 Ex.: DEFI NE VARI ABLE c- cust omer
AS char NO- UNDO.
DEF VAR i - cust- num
LI KE cust omer . cust - num NO- UNDO.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
59/67
59
Message
9 Envia uma mensagem para a tela.
9 Sintaxe:
MESSAGE texto
[ UPDATE var i avel ]
[ VI EW- AS ALERT- BOX
[ QUESTI ON | I NFORMATI ON | WARNI NG | ERROR ]
]
[ BUTTONS YES- NO | YES- NO- CANCEL |
OK | OK- CANCEL | RETRY- CANCEL ][ TI TLE t t ul o ] .
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
60/67
60
Exemplo: Message
DEF VAR l - resp AS l ogi calI NI TI AL no
NO- UNDO.
MESSAGE Conf i r ma At ual i zao?
UPDATE l - resp
VI EW- AS ALERT- BOX QUESTI ON
BUTTONS YES- NO
TI TLE At ual i zao de Dados.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
61/67
61
LABORATRIO 4
Exerccio disponvel nomaterial de apoio
Laboratrio 4
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
62/67
62
PROCESSAMENTO CONDICIONAL
Processamento Condicional
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
63/67
63
Processamento Condicional
SOLICITA NUM. CLIENTE
BUSCA REGISTRO NOBANCO DE DADOS
ENCONTROU?
ALTERA INFORMAES ADICIONA NOVO
SIM NO
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
64/67
64
Processamento Condicional: IF
I F expr essi on THEN
comando.
ELSE DO:
comando.
comando.
comando.
END.
BLOCO
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
65/67
65
Processamento Condicional: Case
CASE expr essi on:WHEN val ue THEN
comando.WHEN val ue THEN DO:
bl oco.END.WHEN val ue THEN
comando.OTHERWI SE DO:
bl oco.
END.END CASE.
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
66/67
66
LABORATRIO 5
Exerccio disponvel nomaterial de apoio
Laboratrio 5
7/29/2019 Desenvolvendo Aplicaes em Progress CHAR
67/67
Este material de propriedade da DATASUL S.A., sendo proibida a sua reproduo em qualquer meio, total ouparcial, 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 serdivulgada 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.
universidade@datasul.com.br
http://universidade.datasul.com.br
universidade@datasul.com.br
http://universidade.datasul.com.br
Obrigada!
Agradecimento