Progress DCA Desenvolvendo Aplicações Caracter

67
1 Tecnologia Progress DCA Desenvolvendo Aplicações Caracter Parte 1

Transcript of Progress DCA Desenvolvendo Aplicações Caracter

Page 1: Progress DCA Desenvolvendo Aplicações Caracter

1

Tecnologia

Progress DCADesenvolvendo Aplicações Caracter

Parte 1

Page 2: Progress DCA Desenvolvendo Aplicações Caracter

2

Parte 1

Introdução ao Progress

Movimentação dos Dados

Manipulando os Dados

Blocos

Localizando Registros

Variáveis

Processamento Condicional

Parte 2

Frames

Includes

Relatórios

Programação Orientada a Eventos

Agenda

Page 3: Progress DCA Desenvolvendo Aplicações Caracter

3

Widgets

Tipos de Widgets

Menus

Tabelas Temporárias (TEMP-TABLE)

Parte 3

Procedures

Compartilhamento de Dados

Importação e Exportação de Dados

Tratamento de Erros

Transações

Bloqueio de Registro

Funções

Agenda

Page 4: Progress DCA Desenvolvendo Aplicações Caracter

4

INTRODUÇÃO AO PROGRESS

Introdução ao Progress

Page 5: Progress DCA Desenvolvendo Aplicações Caracter

5

Completo ambiente de desenvolvimento de aplicações.

É composto por:Sistema Gerenciador de Banco de Dados Relacional.

Linguagem de 4a. Geração.

Ferramentas de Programação.

Introdução ao Progress

Page 6: Progress DCA Desenvolvendo Aplicações Caracter

6

ABERTOFLEXÍVEL

COMPLETO

Benefícios

Page 7: Progress DCA Desenvolvendo Aplicações Caracter

7

FlexívelAssegura portabilidade das aplicações em outras plataformas.

AbertoSuporta o padrão industrial.

Assegura opções de desenvolvimento heterogêneo.

CompletoPermite construção de grandes aplicações.

Produz soluções Client/Server.

Benefícios

Page 8: Progress DCA Desenvolvendo Aplicações Caracter

8

Componentes Lógicos

Base de Dados

Tabela• Registro

• Campo

Índice

Page 9: Progress DCA Desenvolvendo Aplicações Caracter

9

Cliente Empresa Banco

= Base Dados

Componentes Lógicos

Page 10: Progress DCA Desenvolvendo Aplicações Caracter

10

Tabela

Registro

CampoNome

Índice

Componentes Lógicos

Page 11: Progress DCA Desenvolvendo Aplicações Caracter

11

.DB

.LG.BI .LK

Componentes Físicos

Page 12: Progress DCA Desenvolvendo Aplicações Caracter

12

.DB

BEFORE-IMAGE: Contém a imagem dos dados de uma transação.BI

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

Componentes Físicos

Page 13: Progress DCA Desenvolvendo Aplicações Caracter

13

.LG

LOCK: Informa se a base está sendo acessada..LK

LOG: Contém as referências dos usuários, hora de entrada, saída e programas acessados (histórico).

Componentes Físicos

Page 14: Progress DCA Desenvolvendo Aplicações Caracter

14

Componentes da Linguagem

Blocos

Declarações

Funções

Operadores

Variáveis

Expressões

Símbolos especiais

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

Eventos

Page 15: Progress DCA Desenvolvendo Aplicações Caracter

15

Tipos de Dados do Progress

Tipo Formato Exemplo

Character x(8)Aceita: A – Alfabetico ! – Maiusculas

“x(40)” –> string alfanumérica“AAA-9999” –> MCZ-9283“!x(10)” –> STRING ALFANUMÉRICA

Integer >>>,>>9Aceita: z – espaço 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

Page 16: Progress DCA Desenvolvendo Aplicações Caracter

16

MOVIMENTAÇÃO DOS DADOS

Movimentação dos Dados

Page 17: Progress DCA Desenvolvendo Aplicações Caracter

17

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

Localização dos Dados

Page 18: Progress DCA Desenvolvendo Aplicações Caracter

18

BASE DE DADOS BUFFER REGISTRO BUFFER TELA

BASE DE DADOS → TELA

Movimentando Dados

Page 19: Progress DCA Desenvolvendo Aplicações Caracter

19

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

ENTRADA USUÁRIO

Movimentando Dados

TELA → BASE DE DADOS

Page 20: Progress DCA Desenvolvendo Aplicações Caracter

20

Regras para Movimentação de Dados

Os programas não podem manipular os dados da base de dados até que eles sejam copiados para o buffer de registro.

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

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.

Page 21: Progress DCA Desenvolvendo Aplicações Caracter

21

UPDATE

UsuárioBuffer de TelaBuffer de RegistroBanco de DadosComando

ASSIGN

CREATE

DELETE

DISPLAY

ENABLE

FIND

FOR EACH

GET

INSERT

PROMPT-FOR

RELEASE

SET

Comandos de Movimentação de Dados

Page 22: Progress DCA Desenvolvendo Aplicações Caracter

22

MANIPULANDO OS DADOS

Manipulando os Dados

Page 23: Progress DCA Desenvolvendo Aplicações Caracter

23

Insert

Cria um novo registro no banco, permite que o usuário faça alterações e atualiza as informações no banco.

Executa as ações de CREATE, DISPLAY, PROMPT-FOR e ASSIGN.

Ex.: INSERT customer.

Page 24: Progress DCA Desenvolvendo Aplicações Caracter

24

Create

Cria um novo registro no banco, inicializa com os valores defaults(padrãos) e deixa uma cópia do registro no buffer de registro.

Ex.: CREATE customer.

Page 25: Progress DCA Desenvolvendo Aplicações Caracter

25

Update

Mostra os valores, permite ao usuário alterar e atualiza os dados no banco.

Executa as ações de DISPLAY, PROMPT-FOR e ASSIGN.

Ex.: UPDATE customer.UPDATE customer EXCEPT cust-num.

Page 26: Progress DCA Desenvolvendo Aplicações Caracter

26

Display

Mostra os valores na Tela.

Move os dados do Buffer de Registro para o Buffer de Tela.

Os dados devem sempre ter sido previamente movidos para o Buffer de Registro.

Ex.: DISPLAY customer.DISP customer.cust-num.

Page 27: Progress DCA Desenvolvendo Aplicações Caracter

27

Set

Permite que o usuário altere as informações e atualiza o banco de dados.Executa as ações de PROMPT-FOR e ASSIGN.

Ex.: SET customer.SET customer.name.

Page 28: Progress DCA Desenvolvendo Aplicações Caracter

28

Prompt-For

Solicita uma entrada de dados ao usuário e disponibiliza no buffer de tela.

Ex.: PROMPT-FOR customer.cust-num.FIND customer WHERE

customer.cust-num = INPUT customer.cust-num NO-ERROR.

IF AVAILABLE customer THENDISPLAY customer

EXCEPT customer.commentsWITH 1 COLUMN.

Page 29: Progress DCA Desenvolvendo Aplicações Caracter

29

Assign

Atualiza a informação no Banco de Dados.

Copia os dados do buffer de tela para seus respectivos campos e/ou variáveis no buffer de registro.

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.

Page 30: Progress DCA Desenvolvendo Aplicações Caracter

30

Delete

Elimina um registro do buffer de registro e do banco de dados.

Os dados devem sempre ter sido previamente movidos para o Bufferde Registro.

Ex.: REPEAT:PROMPT-FOR customer.cust-num.FIND customer USING customer.cust-num.DELETE customer.

END.

Page 31: Progress DCA Desenvolvendo Aplicações Caracter

31

Quadro de Comandos

SET

ASSIGNPROMPT-FORDISPLAY

UPDATE

CREATE

INSERT

Page 32: Progress DCA Desenvolvendo Aplicações Caracter

32

insert customer.

create customer.update customer.

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

Observe a Movimentação

Page 33: Progress DCA Desenvolvendo Aplicações Caracter

33

SET

ASSIGNDISPLAY

UPDATE

CREATE

INSERT

DELETE PROMPT-FOR FIND FOR EACH RELEASE

Quadro de Comandos

Page 34: Progress DCA Desenvolvendo Aplicações Caracter

34

LABORATÓRIO 1

Exercício disponível no material de apoio

Laboratório 1

Page 35: Progress DCA Desenvolvendo Aplicações Caracter

35

BLOCOS

Blocos

Page 36: Progress DCA Desenvolvendo Aplicações Caracter

36

Tipos de Blocos

REPEAT

FOR EACH

DO

PROCEDURES

TRIGGERS

Page 37: Progress DCA Desenvolvendo Aplicações Caracter

37

Repeat

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.

Ex: REPEAT WITH 1 COLUMN:

CREATE customer.UPDATE customer.

END.

Page 38: Progress DCA Desenvolvendo Aplicações Caracter

38

For Each

Lê um registro a cada interação do bloco e copia os dados do banco para o buffer de registro.

Ex:

FOR EACH customer:

DISPLAY customer.cust-numcustomer.name.

END.

Page 39: Progress DCA Desenvolvendo Aplicações Caracter

39

Do

Individualiza um grupo de comandos dentro de um bloco simples.

Ex:

FOR EACH customer:

DISPLAY customer.cust-num.IF credit-limit > 15000 THEN DO:

UPDATE customer.namecustomer.address.

MESSAGE "Registro Alterado".END.

END.

Page 40: Progress DCA Desenvolvendo Aplicações Caracter

40

Desvio de Execução de Blocos

Forma de desviar a seqüência de execução de determinado bloco.

Comandos:– NEXT– LEAVE

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.

Page 41: Progress DCA Desenvolvendo Aplicações Caracter

41

LABORATÓRIO 2

Exercício disponível no material de apoio

Laboratório 2

Page 42: Progress DCA Desenvolvendo Aplicações Caracter

42

LOCALIZANDO REGISTROS

Localizando Registros

Page 43: Progress DCA Desenvolvendo Aplicações Caracter

43

Find

Busca apenas um registro em uma tabela.

– FIRST (primeiro)

– LAST (último)

– NEXT (próximo)

– PREV (anterior)

Ex.: FIND FIRST customerWHERE customer.credit-limit > 15000NO-ERROR.IF AVAILABLE customer THEN

DISPLAY customer WITH 1 COLUMN.

Page 44: Progress DCA Desenvolvendo Aplicações Caracter

44

Where

Limita os registros a serem mostrados em uma leitura de uma determinada tabela.

Ex: FOR EACH customerWHERE customer.credit-limit > 15000:DISPLAY customer.cust-num

customer.credit-limit.END.

OPERADORES:NOT > <AND >= <=OR <>

Page 45: Progress DCA Desenvolvendo Aplicações Caracter

45

Substitui o WHERE, utilizando o dado informado no buffer de tela.

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

Using

Page 46: Progress DCA Desenvolvendo Aplicações Caracter

46

Substitui o WHERE, utilizando o índice para fazer o relacionamento entre tabelas.

Ex: FIND FIRST customer.FOR EACH order OF customer:

DISPLAY order.order-numEND.

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

Of

Page 47: Progress DCA Desenvolvendo Aplicações Caracter

47

By

Usa-se a opção BY para classificação de registros por um campo não indexado.

Ex: FOR EACH customerBY balance DESCENDING: DISPLAY customer.balance

customer.namecustomer.phone.

END.

Default: ordenação ascendente

Page 48: Progress DCA Desenvolvendo Aplicações Caracter

48

Use-Index

A opção USE-INDEX permite que você escolha qualquer índice definido para selecionar registros.

Ex: FOR EACH customer USE-INDEX name:DISPLAY customer.balance

customer.namecustomer.phone.

END.

Page 49: Progress DCA Desenvolvendo Aplicações Caracter

49

Begins

Verifica se a 1ª expressão inicia com a 2ª expressão.

Utiliza um índice caso exista.

Ex: FOR EACH customerWHERE customer.name BEGINS “S”:DISPLAY customer.cust-num

customer.namecustomer.phone.

END.

Page 50: Progress DCA Desenvolvendo Aplicações Caracter

50

Matches

Compara uma expressão do tipo caracter com um padrão e retorna o valor verdadeiro se a expressão for atendida.Não utiliza índice.

Ex: FOR EACH customerWHERE customer.address MATCHES “*st”:DISPLAY customer.cust-num

customer.namecustomer.address.

END.

Page 51: Progress DCA Desenvolvendo Aplicações Caracter

51

Contains

Faz a busca por determinada palavra ou combinação delas, em atributos do tipo word-index.

Ex: FOR EACH itemWHERE item.item-name CONTAINS “ball”:DISPLAY item.item-num

item.item-nameitem.price.

END.

Page 52: Progress DCA Desenvolvendo Aplicações Caracter

52

Buffer

Funciona como um espelho da tabela.

Ex: DEFINE BUFFER bf-cliente FOR customer.

FIND FIRST customer.UPDATE customer.cust-num

customer.name.FIND bf-clienteWHERE bf-cliente.cust-num = customer.cust-num.DISPLAY bf-cliente.name

bf-cliente.phone.UPDATE customer.address.

Page 53: Progress DCA Desenvolvendo Aplicações Caracter

53

Query

Pesquisa agrupada de registro do banco de dados.

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.

Page 54: Progress DCA Desenvolvendo Aplicações Caracter

54

Get

Retorna um registro de uma query previamente aberta.

Ex: – GET FIRST nome-da-query.– GET NEXT nome-da-query.– GET PREV nome-da-query.– GET LAST nome-da-query.

Page 55: Progress DCA Desenvolvendo Aplicações Caracter

55

Exemplo: Query + Get

DEFINE QUERY qr-custFOR customer SCROLLING.

OPEN QUERY qr-cust FOR EACH customer.

GET FIRST qr-cust.REPEAT:

DISP customer.GET NEXT qr-cust.

END.

Page 56: Progress DCA Desenvolvendo Aplicações Caracter

56

LABORATÓRIO 3

Exercício disponível no material de apoio

Laboratório 3

Page 57: Progress DCA Desenvolvendo Aplicações Caracter

57

VARIÁVEIS

Variáveis

Page 58: Progress DCA Desenvolvendo Aplicações Caracter

58

Variáveis

Ex.: DEFINE VARIABLE nome-variavelAS Tipo de dadoLIKE Tabela.atributo INITIAL “ABC” NO-UNDO.

Ex.: DEFINE VARIABLE c-customerAS char NO-UNDO.

DEF VAR i-cust-numLIKE customer.cust-num NO-UNDO.

Page 59: Progress DCA Desenvolvendo Aplicações Caracter

59

Message

Envia uma mensagem para a tela.

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” ].

Page 60: Progress DCA Desenvolvendo Aplicações Caracter

60

Exemplo: Message

DEF VAR l-resp AS logical

INITIAL noNO-UNDO.

MESSAGE “Confirma Atualização?”UPDATE l-respVIEW-AS ALERT-BOX QUESTIONBUTTONS YES-NO TITLE “Atualização de Dados”.

Page 61: Progress DCA Desenvolvendo Aplicações Caracter

61

LABORATÓRIO 4

Exercício disponível no material de apoio

Laboratório 4

Page 62: Progress DCA Desenvolvendo Aplicações Caracter

62

PROCESSAMENTO CONDICIONAL

Processamento Condicional

Page 63: Progress DCA Desenvolvendo Aplicações Caracter

63

Processamento Condicional

SOLICITA NUM. CLIENTE

BUSCA REGISTRO NO BANCO DE DADOS

ENCONTROU?

ALTERA INFORMAÇÕES ADICIONA NOVO

SIM NÃO

Page 64: Progress DCA Desenvolvendo Aplicações Caracter

64

Processamento Condicional: IF

IF expression THENcomando.

ELSE DO:comando.comando.comando.

END.

BLOCO

Page 65: Progress DCA Desenvolvendo Aplicações Caracter

65

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.

Page 66: Progress DCA Desenvolvendo Aplicações Caracter

66

LABORATÓRIO 5

Exercício disponível no material de apoio

Laboratório 5

Page 67: Progress DCA Desenvolvendo Aplicações Caracter

67

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.

[email protected]

http://universidade.datasul.com.br

[email protected]

http://universidade.datasul.com.br

Obrigada!

Agradecimento