Progress DCA Desenvolvendo Aplicações...

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

Transcript of Progress DCA Desenvolvendo Aplicações...

1

Tecnologia

Progress DCADesenvolvendo Aplicações Caracter

Parte 1

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

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

4

INTRODUÇÃO AO PROGRESS

Introdução ao Progress

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

6

ABERTOFLEXÍVEL

COMPLETO

Benefícios

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

8

Componentes Lógicos

Base de Dados

Tabela• Registro

• Campo

Índice

9

Cliente Empresa Banco

= Base Dados

Componentes Lógicos

10

Tabela

Registro

CampoNome

Índice

Componentes Lógicos

11

.DB

.LG.BI .LK

Componentes Físicos

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

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

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

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

16

MOVIMENTAÇÃO DOS DADOS

Movimentação dos Dados

17

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

Localização dos Dados

18

BASE DE DADOS BUFFER REGISTRO BUFFER TELA

BASE DE DADOS → TELA

Movimentando Dados

19

BASE DE DADOS

BUFFER REGISTRO

BUFFER TELA

ENTRADA USUÁRIO

Movimentando Dados

TELA → BASE DE DADOS

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.

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

22

MANIPULANDO OS DADOS

Manipulando os Dados

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.

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.

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.

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.

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.

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.

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.

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.

31

Quadro de Comandos

SET

ASSIGNPROMPT-FORDISPLAY

UPDATE

CREATE

INSERT

32

insert customer.

create customer.update customer.

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

Observe a Movimentação

33

SET

ASSIGNDISPLAY

UPDATE

CREATE

INSERT

DELETE PROMPT-FOR FIND FOR EACH RELEASE

Quadro de Comandos

34

LABORATÓRIO 1

Exercício disponível no material de apoio

Laboratório 1

35

BLOCOS

Blocos

36

Tipos de Blocos

REPEAT

FOR EACH

DO

PROCEDURES

TRIGGERS

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.

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.

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.

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.

41

LABORATÓRIO 2

Exercício disponível no material de apoio

Laboratório 2

42

LOCALIZANDO REGISTROS

Localizando Registros

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.

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 <>

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

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

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

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.

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.

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.

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.

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.

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.

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.

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.

56

LABORATÓRIO 3

Exercício disponível no material de apoio

Laboratório 3

57

VARIÁVEIS

Variáveis

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.

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

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

61

LABORATÓRIO 4

Exercício disponível no material de apoio

Laboratório 4

62

PROCESSAMENTO CONDICIONAL

Processamento Condicional

63

Processamento Condicional

SOLICITA NUM. CLIENTE

BUSCA REGISTRO NO BANCO DE DADOS

ENCONTROU?

ALTERA INFORMAÇÕES ADICIONA NOVO

SIM NÃO

64

Processamento Condicional: IF

IF expression THENcomando.

ELSE DO:comando.comando.comando.

END.

BLOCO

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.

66

LABORATÓRIO 5

Exercício disponível no material de apoio

Laboratório 5

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