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
.BI
.DB
.LG
.LK
11
Componentes Físicos
.DB
DATABASE: Contém os dados atuais e descrições da
base
.BI
BEFORE-IMAGE: Contém a imagem dos dados de uma
transação
12
Componentes Físicos
.LG
.LK
LOG: Contém as referências dos usuários, hora de entrada,
saída e programas acessados (histórico).
LOCK: Informa se a base está sendo acessada.
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
Character
Integer
Decimal
Logical
Date
Formato
x(8)
Aceita: A – Alfabetico
! – Maiusculas
>>>,>>9
Aceita: z – espaço
9 – mostra “0”
>>>,>>9.99
Yes/No
Aceita: True/False
MM/DD/AAAA
Rowid
Recid
Exemplo
“x(40)”
–> string alfanumérica
“AAA-9999” –> MCZ-9283
“!x(10)”
–> STRING ALFANUMÉRICA
“>>>,>>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
--->>>>>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
DADOS
BUFFER
REGISTRO
BUFFER
TELA
ENTRADA
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
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
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!
[email protected]
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
Download

Progress DCA Desenvolvendo Aplicações Caracter