oracle forms builder 6

373
Oracle Forms Builder 6

Upload: laercioleo

Post on 18-Jun-2015

3.836 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Oracle Forms Builder 6

Oracle Forms Builder 6

F61Revisão 1.0

Page 2: Oracle Forms Builder 6

Oracle Forms Builder 6

Sumário

1. Conceitos e Componentes........................................................................................................1-1Objetivos....................................................................................................................................1-2Oracle Forms 6 - Visão Geral....................................................................................................1-3Módulos Oracle Forms 6...........................................................................................................1-4Componentes do produto Oracle Forms 6.................................................................................1-5Estrutura de um módulo Forms.................................................................................................1-6Navegando em um módulo Forms............................................................................................1-7Preview de blocos Base Table...................................................................................................1-8Preview de Relacionamento Mestre Detalhe.............................................................................1-9Preview de blocos Single Record e Multi Record...................................................................1-10

2. Aplicações Oracle Forms.........................................................................................................2-1Objetivos....................................................................................................................................2-2Iniciando uma sessão Runform.................................................................................................2-3MDI Parent Window.................................................................................................................2-4Menu DEFAULT&SMARTBAR.............................................................................................2-5Console......................................................................................................................................2-6Identificando os elementos de dados.........................................................................................2-7Navegando por uma aplicação Oracle Forms............................................................................2-8Tornando as Alterações Permanentes........................................................................................2-9Consultando dados...................................................................................................................2-10Utilizando a cláusula Where em restrições de consulta.........................................................2-16Modos de operação..................................................................................................................2-18Inserindo, atualizando e deletando registros...........................................................................2-19Efetivando ou descartando as mudanças efetivadas................................................................2-20EXERCÍCIOS..........................................................................................................................2-21

3. Módulo Form............................................................................................................................3-1Objetivos....................................................................................................................................3-2Tipos de Módulos......................................................................................................................3-3Iniciando uma sessão Oracle Forms Builder.............................................................................3-4Criando um novo módulo form.................................................................................................3-5Conectando-se ao banco............................................................................................................3-6Trocando o nome de um módulo form......................................................................................3-7Propriedades de um módulo form.............................................................................................3-8

4. Blocos........................................................................................................................................4-1Objetivos....................................................................................................................................4-2Conceito de bloco......................................................................................................................4-3Bloco Base Table.......................................................................................................................4-3Criação de um bloco..................................................................................................................4-4Criando um bloco de controle...................................................................................................4-5Criando um bloco Base Table...................................................................................................4-6Usando o Assistente de Layout...............................................................................................4-10 Removendo um bloco.............................................................................................................4-14Atributo Visual........................................................................................................................4-15

DBC Database Company

Page 3: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um bloco.......................................................................................................4-16Manipulando propriedades de Objetos....................................................................................4-17Propriedades de um bloco.......................................................................................................4-18Salvando um módulo form......................................................................................................4-21Executando um módulo form..................................................................................................4-22EXERCÍCIOS..........................................................................................................................4-23

5. Relacionamento Entre Blocos.................................................................................................5-1Objetivos....................................................................................................................................5-2Conceito de relacionamento......................................................................................................5-3Criando um relacionamento entre dois blocos..........................................................................5-4Construindo um relacionamento automaticamente...................................................................5-5Executando um módulo form mestre detalhe............................................................................5-7Propriedades de relacionamento................................................................................................5-8O que acontece quando você modifica um relacionamento......................................................5-9EXERCÍCIOS..........................................................................................................................5-10

6. Frames.......................................................................................................................................6-1Objetivos....................................................................................................................................6-2Conceito de frame......................................................................................................................6-3Reorganizando os itens dimencionando o frame.......................................................................6-4Propriedades de um frame.........................................................................................................6-5

7. Itens tipo Texto.........................................................................................................................7-1Objetivos....................................................................................................................................7-2Conceito de itens tipo texto (Text Item)....................................................................................7-3Criando um item tipo texto (Text Item).....................................................................................7-4Propriedades de um text item....................................................................................................7-5Alterando cores e fontes............................................................................................................7-7Controlando os dados em um text item.....................................................................................7-8Formatando itens.......................................................................................................................7-9Alterando o comportamento de navegação.............................................................................7-10Setando as propriedades Keyboard Navigable e Enabled.......................................................7-11Alterando o relacionamento do item com o banco de dados...................................................7-12Adicionando funcionalidades a um item.................................................................................7-13Adicionando funções de grupo e fórmulas a um item.............................................................7-14Labels associados do item.......................................................................................................7-15Itens multi-line.........................................................................................................................7-16Incluindo mensagens de ajuda.................................................................................................7-17EXERCÍCIOS..........................................................................................................................7-18

8. LOVs e Editores.......................................................................................................................8-1Objetivos....................................................................................................................................8-2Conceito de Lista de Valores (LOV).........................................................................................8-3Utilizando uma LOV em momento de execução......................................................................8-4Definindo uma Lista de Valores................................................................................................8-5Criando uma Lista de Valores (LOV).......................................................................................8-6Propriedades da LOV..............................................................................................................8-10Mapeando colunas da LOV para itens do bloco......................................................................8-11Associando uma LOV a um item tipo texto............................................................................8-12

DBC Database Company II

Page 4: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Editor...................................................................................................................8-13Utilizando um Editor em momento de execução....................................................................8-14Criando um Editor...................................................................................................................8-15Associando um Editor a um item tipo texto............................................................................8-16EXERCÍCIOS..........................................................................................................................8-17

9. Outros tipos de Itens................................................................................................................9-1Objetivos....................................................................................................................................9-2Conceito de item tipo Check-box..............................................................................................9-3Utilizando um Check-box em momento de execução...............................................................9-4Criando um item tipo Check-box..............................................................................................9-5Propriedades específicas de um item tipo CheckBox................................................................9-7Incluindo mensagens de ajuda...................................................................................................9-8Tratando valores nulos em itens tipo Check Box......................................................................9-9Conceito de item tipo List.......................................................................................................9-10Setando valores para um List Item em momento de execução...............................................9-11Criando um item tipo List........................................................................................................9-12Propriedades específicas de um item tipo List........................................................................9-14Incluindo mensagens de ajuda.................................................................................................9-15Tratando valores nulos em itens tipo List................................................................................9-16Conceito de itens Radio Groups..............................................................................................9-17Criando um item Radio Group................................................................................................9-18Propriedades específicas de um item tipo Radio Group..........................................................9-20Tratando valores nulos em um Radio Group...........................................................................9-21EXERCÍCIOS..........................................................................................................................9-22

10. Itens tipo Não Input...............................................................................................................10-1Objetivos..................................................................................................................................10-2Conceito de itens Não Input....................................................................................................10-3Conceito de Itens tipo Display................................................................................................10-4Criando um item tipo Display.................................................................................................10-5Propriedades específicas de um item tipo Display..................................................................10-6Conceito de Itens tipo Image...................................................................................................10-7Armazenando imagens............................................................................................................10-8Criando um item tipo Image....................................................................................................10-9Propriedades específicas de um item tipo Image..................................................................10-10Incluindo mensagens de ajuda...............................................................................................10-11Conceito de Itens tipo Sound.................................................................................................10-12Armazenando sons.................................................................................................................10-13Criando um item tipo Sound..................................................................................................10-14Propriedades específicas de um item tipo Image..................................................................10-15Incluindo mensagens de ajuda...............................................................................................10-16Conceito de Itens tipo Button................................................................................................10-17Criando um Button................................................................................................................10-18Propriedades específicas de um Button.................................................................................10-19Incluindo mensagens de ajuda...............................................................................................10-20EXERCÍCIOS........................................................................................................................10-21

11. Windows e Canvas.................................................................................................................11-1Objetivo...................................................................................................................................11-2

DBC Database Company III

Page 5: Oracle Forms Builder 6

Produzindo Triggers

Conceito de window, canvas e viewport.................................................................................11-3Exemplo de window................................................................................................................11-5Criando uma window..............................................................................................................11-6Propriedades de uma window..................................................................................................11-7Tipos de canvas.......................................................................................................................11-9Conceito de content canvas...................................................................................................11-10Exemplo de content canvas...................................................................................................11-11Criando um Content Canvas..................................................................................................11-12Propriedades de um content canvas.......................................................................................11-13Conceito de Stacked canvas..................................................................................................11-15Criando um Stacked Canvas..................................................................................................11-16Propriedades de um Stacked canvas......................................................................................11-17Conceito de Canvas Toolbar.................................................................................................11-18Usos e benefícios de um Toolbar..........................................................................................11-19Criando um canvas Toolbar...................................................................................................11-20Propriedades de um canvas Tollbar.......................................................................................11-21Conceito de Canvas Tab........................................................................................................11-22Criando um Canvas Tab........................................................................................................11-23Propriedades de um Canvas Tab...........................................................................................11-24EXERCÍCIOS........................................................................................................................11-25

12. Introdução as Triggers..........................................................................................................12-1Objetivos..................................................................................................................................12-2Visão geral sobre Triggers.......................................................................................................12-3Trigger Type............................................................................................................................12-4Trigger Code............................................................................................................................12-5Trigger Scope..........................................................................................................................12-6Escopo e execução da Trigger.................................................................................................12-7

13. Produzindo Triggers..............................................................................................................13-1Objetivos..................................................................................................................................13-2Criando um Triggers................................................................................................................13-3Utilizando o PL/SQL EDITOR...............................................................................................13-5Propriedades de uma Trigger...................................................................................................13-7Escrevendo o código da Trigger..............................................................................................13-8Utilizando variáveis no Oracle Forms.....................................................................................13-9Referenciando variáveis Oracle Forms.................................................................................13-10Suplementando validações....................................................................................................13-11Populando itens com dados derivados...................................................................................13-12Controlando falhas em Triggers............................................................................................13-13EXERCÍCIOS........................................................................................................................13-14

14. Monitorando e Depurando Triggers....................................................................................14-1Objetivos..................................................................................................................................14-2Debugando Triggers no Forms Builder...................................................................................14-3Executando um Form no modo Debug....................................................................................14-4Mostrando mensagens quando a Trigger é disparada..............................................................14-5Utilizando o PL/SQL Debugger..............................................................................................14-6Componentes do Debug..........................................................................................................14-7Comandos úteis no Debug.......................................................................................................14-8

DBC Database Company IV

Page 6: Oracle Forms Builder 6

Produzindo Triggers

Invocando o Debugger............................................................................................................14-9Definindo Debug Triggers.....................................................................................................14-11Desabilitando ações do Debug..............................................................................................14-12

15. Adicionando Funcionalidades à Itens..................................................................................15-1Objetivos..................................................................................................................................15-2Respondendo a interações com itens.......................................................................................15-3Definindo funcionalidades à Itens Input..................................................................................15-5Definindo Funcionalidades à itens Não Input.........................................................................15-6Interagindo com Itens do tipo Image.......................................................................................15-7Interagindo com itens do tipo Sound.......................................................................................15-8EXERCÍCIOS..........................................................................................................................15-9

16. Mensagens e Alertas..............................................................................................................16-1Objetivos..................................................................................................................................16-2Tipos de Mensagens................................................................................................................16-3Detectando o sucesso ou a falha de Built-ins..........................................................................16-4Controlando Mensagens de Sistema........................................................................................16-5Suprimindo Mensagens de Trabalho.......................................................................................16-6Criando e controlando Alerts...................................................................................................16-8Utilização.................................................................................................................................16-9Propriedades de um Alert......................................................................................................16-10Built-ins úteis à manipulação com Alerts..............................................................................16-11EXERCÍCIOS........................................................................................................................16-12

17. Triggers de Consulta..............................................................................................................17-1Objetivos..................................................................................................................................17-2Associação entre triggers e consulta........................................................................................17-3Processamento de consultas no Oracle Forms.........................................................................17-4Trigger PRE-QUERY..............................................................................................................17-5Trigger POST-QUERY...........................................................................................................17-6POST-QUERY e WHEN-VALIDATE-ITEM........................................................................17-7Disparando Triggers no Modo Enter Query............................................................................17-8Obtendo informações de consultas através de variáveis de sistema........................................17-9Usando as Built-ins GET_BLOCK_PROPERTY e SET_BLOCK_PROPERTY................17-10EXERCÍCIOS........................................................................................................................17-11

18. Validações...............................................................................................................................18-1Objetivos..................................................................................................................................18-2Processo de Validação.............................................................................................................18-3Unidade de Validação..............................................................................................................18-4Utilizando LOVs para validações............................................................................................18-5Utilizando Triggers para Validações.......................................................................................18-6Status de validação..................................................................................................................18-8Relação de algumas Built-ins..................................................................................................18-9

19. Navegação...............................................................................................................................19-1Objetivos..................................................................................................................................19-2Controlando a Navegação........................................................................................................19-3Propriedade Mouse Navigate..................................................................................................19-4

DBC Database Company V

Page 7: Oracle Forms Builder 6

Produzindo Triggers

Navegação interna...................................................................................................................19-5Triggers de Navegação............................................................................................................19-6Armadilha de Navegação........................................................................................................19-7Triggers WHEN-NEW-“objeto”-INSTANCE........................................................................19-8Built-ins usadas para Navegação em Triggers........................................................................19-9EXERCÍCIOS........................................................................................................................19-10

20. Processamento de Transação................................................................................................20-1Objetivos..................................................................................................................................20-2Processamento de Transação...................................................................................................20-3Tarefas executada em um processamento de transação..........................................................20-4Incrementando o processamento de uma Transação...............................................................20-5Validação de um Delete...........................................................................................................20-7Atribuindo números seqüenciais a registros............................................................................20-8Mantendo uma trilha de auditoria............................................................................................20-9Informações sobre uma variável tipo Cursor no PL/SQL.....................................................20-10Customizando o início e o fim de uma transação..................................................................20-11Outras triggers transacionais a nível de bloco.......................................................................20-12EXERCÍCIOS........................................................................................................................20-13

21. Código Flexível.......................................................................................................................21-1Objetivos..................................................................................................................................21-2Conceito de código flexível.....................................................................................................21-3Utilizando variáveis de sistema...............................................................................................21-4Utilizando Built-ins para obter informações sobre objetos.....................................................21-6Referenciando objetos pelo ID interno....................................................................................21-7Built-ins FIND_ e tipos de dados retornados..........................................................................21-8Utilizando variáveis globais..................................................................................................21-10Utilizando a Built-in NAME_IN...........................................................................................21-11Utilizando a Built-in COPY..................................................................................................21-12EXERCÍCIOS........................................................................................................................21-13

22. Compartilhando Objetos e Códigos.....................................................................................22-1Objetivos..................................................................................................................................22-2Compartilhando e reutilizando Código...................................................................................22-3Classes de Propriedades..........................................................................................................22-4Herdando uma classe de propriedades....................................................................................22-5Grupo de Objetos.....................................................................................................................22-6Copiando e Referenciando Objetos e Códigos........................................................................22-7Reutilizando PL/SQL..............................................................................................................22-8Object Library.........................................................................................................................22-9SmartClasses..........................................................................................................................22-10EXERCÍCIOS........................................................................................................................22-11

23. Aplicações Multi-Form..........................................................................................................23-1Objetivos..................................................................................................................................23-2Iniciando outro Módulo Form.................................................................................................23-3Buit-in OPEN_FORM.............................................................................................................23-4Passando valores para outro Módulo Form.............................................................................23-5Navegando para um módulo já aberto na sessão.....................................................................23-6

DBC Database Company VI

Page 8: Oracle Forms Builder 6

Produzindo Triggers

Definindo funcionalidades a uma aplicação Multi-Form........................................................23-7EXERCÍCIOS..........................................................................................................................23-8

DBC Database Company VII

Page 9: Oracle Forms Builder 6

Oracle Forms Builder 6

1.1. Conceitos eConceitos e Componentes

DBC Database Company

Page 10: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Obter uma visão geral do produto, entendendo seus princípios e sua função no conjunto de ferramentas Oracle.

Identificar os principais componentes do Oracle Forms 6 e como eles estão relacionados.

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 11: Oracle Forms Builder 6

Produzindo Triggers

Oracle Forms 6 - Visão Geral

O que é o Oracle Forms 6 ?

O Oracle Forms 6 é o maior produto dentro do Developer 2000. É destinado a produzir aplicações On-line baseadas em telas e janelas, permitindo apresentação e manipulação dos dados de várias formas.

Características de uma aplicação Oracle Forms 6

Possibilita inserção, atualização, deleção e consulta de dados usando uma variedade de interfaces gráficos.

Apresenta dados utilizando-se de itens tipo texto e imagens. Permite o desenvolvimento de aplicações utilizando janelas e transações de Banco de

dados. Possui integração com os produtos Oracle Report, Oracle Graphics e aplicações OLE2,

permitindo a utilização de recursos destes produtos. Apresenta-se sob a forma de menus.

Características do ambiente de desenvolvimento

Utilização de menus. Construção de aplicações utilizando poderosa ferramenta gráfica de desenvolvimento. Construção de aplicações que são portáveis entre ambientes gráficos e ambientes modo

caracter. Fácil cópia ou movimentação de objetos entre os componentes de uma aplicação. Uso de ferramentas comuns aos outros produtos do Developer 2000, tais como: Layout

Editor, Object Navigator e ambiente de desenvolvimento PL/SQL.

DBC Database Company 3

Page 12: Oracle Forms Builder 6

Produzindo Triggers

Módulos Oracle Forms 6

Uma aplicação Oracle Forms pode ser composta de muitos módulos. Estes módulos podem ser do tipo: Form, Menu, Library ou Object Libraries.

Módulo tipo Form: apresenta os objetos e os dados que os usuários podem ver ou interagir. Módulo tipo Menu: é composto por uma hierarquia de menus, cada qual com itens

selecionáveis. Módulos Menu são atachados a módulos Form. Módulo tipo Library: é um conjunto de subprogramas PL/SQL (como em outras

ferramentas PL/SQL). Módulo tipo Object Libraries: é um conjunto de diferentes objetos armazenados pelo

desenvolvedor para assim referenciar ou copiá-los em um módulo forms.

DBC Database Company 4

Page 13: Oracle Forms Builder 6

Produzindo Triggers

Componentes do produto Oracle Forms 6

O produto Oracle Forms 6 possui três componentes :

Oracle Forms Generate - interpreta as definições de um módulo, criando um arquivo executável. Oracle Forms Runform - executa um arquivo executável de uma aplicação Oracle Forms. Os arquivos utilizados no momento da execução já devem ter sido gerados pelo Oracle Forms Generate. Oracle Forms Builder - permite o design e armazenamento das especificações de um módulo tipo Form, Menu ou Library. Permite também invocar os outros componentes Forms Generate e Forms Runform.

DBC Database Company 5

Page 14: Oracle Forms Builder 6

Produzindo Triggers

Estrutura de um módulo Forms

Módulos Forms consistem no corpo principal de uma aplicação Oracle Forms.

Principais objetos de um módulo Form

Itens - São objetos que apresentam valores de dados ao usuário ou, dependendo do tipo de item, permitem ao operador interagir com o form. Itens estão logicamente agrupados em blocos e visivelmente arranjados em canvas.

Bloco - É o dono lógico de um item. Em um bloco os itens estão logicamente relacionados. Eles podem, por exemplo, pertencer a colunas de um mesma tabela ou fazer parte de um mesmo ciclo de navegação.

Canvas - É a superfície onde os objetos visuais estão arranjados (podemos imaginá-lo como a tela de um pintor). Um módulo Form pode ter vários canvas. Por default, todos os canvas ficam na mesma janela, mas podemos alocar janelas separadas para cada canvas.

DBC Database Company 6

Page 15: Oracle Forms Builder 6

Produzindo Triggers

Navegando em um módulo Forms

Quando se executa um módulo Form, navega-se pelo seu conteúdo através de itens e blocos, não através de canvas.

Cada item tem sua posição seqüencial dentro do bloco e cada bloco tem sua posição seqüencial dentro do Form.

A navegação pode ser feita através de teclas, menus, mouse ou por definição de programa.

DBC Database Company 7

Page 16: Oracle Forms Builder 6

Produzindo Triggers

Preview de blocos Base Table

Um bloco Base Table é aquele que está associado com uma tabela (ou view). Cada bloco pode ter somente uma tabela associado a ele, entretanto é possível acessar dados

de outras tabelas, programando-se através de triggers. Na criação de um bloco Base Table são automaticamente criados os itens para as colunas da

tabela base. O Oracle Forms automaticamente gera:

O código necessário para implementar as regras das constraints da tabela base; SQL (implícito) para inserir, atualizar, deletar e consultar linhas da tabela base.

Em momento de execução é possível utilizar teclas de funções, botões ou opções de menu para iniciar consultas, inserções, atualizações e deleções na tabela base e posteriormente efetivar a transação (Commit).

Exemplo de um bloco de dados:

DBC Database Company 8

Page 17: Oracle Forms Builder 6

Produzindo Triggers

Preview de Relacionamento Mestre Detalhe

Para suportar o relacionamento entre blocos e suas tabelas base é possível definir um bloco como detalhe de um outro (mestre). Isto permite valores de chave primária e de chave estrangeira ligados através dos blocos, havendo desta forma, o sincronismo dos dados.

O Oracle Forms automaticamente gera o código necessário para suportar o relacionamento mestre detalhe.

DBC Database Company 9

Page 18: Oracle Forms Builder 6

Produzindo Triggers

Preview de blocos Single Record e Multi Record

É possível definir quantos registros um bloco mostra de cada vez.

Tipos de Blocos Descrição

Bloco Single-record Mostra um registro de cada vez.

Bloco Multi-record Mostra mais de um registro de cada vez..

Obs.:

Em ambos os casos os registros de um bloco que não estão visíveis na tela estão armazenados no buffer do bloco.

DBC Database Company 10

Page 19: Oracle Forms Builder 6

Oracle Forms Builder 6

2.2. Aplicações Oracle FormsAplicações Oracle Forms

DBC Database Company

Page 20: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Entender a terminologia do ambiente de execução. Navegar por uma aplicação Oracle Forms. Consultar dados sem restrições. Consultar dados utilizando argumentos de pesquisa. Inserir, atualizar e deletar registros. Consultar erros pelo help.

Neste capítulo você vai executar uma aplicação já existente, e familiarizar-se com a interface do Oracle Forms Runtime, o qual é essencial para a execução das aplicações desenvolvidas no Forms Builder.

DBC Database Company 2

Page 21: Oracle Forms Builder 6

Produzindo Triggers

Iniciando uma sessão Runform

Uma sessão Runform consiste de um ou mais módulos Forms e Menus ligados todos sobre o controle de um usuário.

Uma sessão Runform pode ser iniciada selecionando um ícone ou uma opção de menu no sistema Windows. Em ambos os casos a ação vai executar um comando Runform para iniciar uma sessão.

Em um ambiente GUI (Interface Gráfica) uma tela Runform Options é mostrada quando você executa o comando (IFRUN60). Esta tela permite que você entre com o nome do form, o usuário, a password, o Banco de dados e outras opções que você não especificar na linha de comandos.

DBC Database Company 3

IFRUN60 ...MODULE = <nome forms> USERID = <usuário/password>

Page 22: Oracle Forms Builder 6

Produzindo Triggers

MDI Parent Window

O Multiple Document Interface (MDI) Parent Window é a janela (window) na qual sua aplicação pode mostrar múltiplos módulos Form (document windows). O título default da MDI Parent Window é: Oracle Developer Forms Runtime.

Para executar o forms, à partir da versão 5.0, sem a MDI, no Forms Runtime acrescente a cláusula USESDI = YES.

DBC Database Company 4

Page 23: Oracle Forms Builder 6

Produzindo Triggers

Menu DEFAULT&SMARTBAR

O menu DEFAULT&SMARTBAR é o menu default que é automaticamente utilizado por todas as aplicações Oracle Forms. Ele possui um método alternativo ao uso de operações por teclas.

Pode ser customizado ou substituído por outro menu de modo a introduzir sua funcionalidade ao módulo Form.

DBC Database Company 5

Page 24: Oracle Forms Builder 6

Produzindo Triggers

Console

A console inclui uma linha de mensagem e uma linha de status que provêm informações essenciais ao usuário em momento de execução.

A linha de mensagem mostra as mensagens do Oracle Forms e as específicas da aplicação. A linha de status mostra uma variedade de indicadores que refletem o estado corrente do

módulo Form.Indicador Descrição

Count Informa o número de registros recuperados e mostrados pela consulta.

Record Informa o indicativo do registro corrente em relação ao total consultado, na seguinte máscara : Atual/Total.

Até a navegação do último registro mostrará ? no total de registros da consulta.

Enter-Query Indica que o bloco corrente esta em modo ENTER QUERY e nenhum registro foi consultado ainda.

List of Value Indica que existe uma lista de valores associada ao item corrente.

DBC Database Company 6

Page 25: Oracle Forms Builder 6

Produzindo Triggers

Identificando os elementos de dados

Uma aplicação típica Oracle Forms utiliza uma variedade de objetos e tipos de itens, tais como: Boilerplate Text, Boilerplate Graphics, Text Itens, Display Itens, Radio Buttons, Check Boxes, Image Itens, Sound Itens e Custom Itens.

DBC Database Company 7

Page 26: Oracle Forms Builder 6

Produzindo Triggers

Navegando por uma aplicação Oracle Forms

Navegando pela aplicação com o menu DEFAULT&SMARTBAR

Selecione opções do menu utilizando o mouse. Mova o cursor para o próximo bloco (Block-Next) ou para o bloco anterior (Block-

Previous). Mova o cursor para o próximo item (Field-Next) ou para o item anterior(Field-Previous). Mova o cursor para o próximo registro (Record-Next) ou para o registro anterior (Record-

Previous). Salve (Save) ou desfaça suas mudanças (Action-> Clear All, informando o que deve ser

feito com as alterações). Insira novos registros (Record-> Insert). Remova registros já existentes (Record-> Remove). Limpe o registro corrente (Record-> Clear). Execute consultas sobre o bloco corrente (Query->Enter, Query-> Execute). Chame o Help On-line (Help-> Help, Help-> Keys, Help-> List, Help-> Display Error).

Navegando através da aplicação com o Mouse

Mova o cursor. Selecione opções do menu. Selecione uma opção de uma lista de valores (LOV). Marque ou desmarque um Check Box. Pressione um botão. Pressione um botão em um Radio Group. Troque o contexto para uma outra janela aberta. Responda a um Alert Box. Navegue por registros de um bloco utilizando o Scroll Bar.

Navegando através da aplicação com Botões

Algumas aplicações utilizam botões como meio de navegação. Você pode pressionar um botão com o mouse ou com a tecla [Select] para iniciar essa ação.

Navegando pela aplicação com teclas de função

Existe uma tecla de função associada a cada função de navegação ou operação do Oracle Forms.

Para ver a lista de teclas e suas funções selecione Help->Keys do Menu Default. Quando executando uma aplicação Oracle Forms em ambiente de modo caracter as teclas de

função são o único meio de navegação. Algumas teclas de função ficam habilitadas e outras desabilitadas dependendo do contexto

da aplicação.

DBC Database Company 8

Page 27: Oracle Forms Builder 6

Produzindo Triggers

Tornando as Alterações Permanentes

DBC Database Company 9

MóduloMódulo Forms Forms

PEDIDOS

Pedido

Itens do Pedido

Deleções

AlteraçõesAlterações

InserçõesInserções

MemóriaMemória

Action

FORMS RUNTIME

ouou

Save

BancoBanco Forms Forms

Page 28: Oracle Forms Builder 6

Produzindo Triggers

Consultando dados

Você pode consultar os dados de um Banco de dados sem conhecimento de sintaxe da linguagem SQL. Entretanto se você tem experiência com SQL é possível complementar o processamento default do Oracle Forms.

Tipos de consulta:

Tipo Descrição

Incondicional (Unrestricted)

Seleciona todas as linhas de todas as colunas representadas no bloco em relação a tabela base sem especificar condição.

Condicional (Restricted)

Seleciona somente as linhas que satisfaçam as condições especificadas para todas as colunas representadas no bloco em relação a tabela base.

DBC Database Company 10

Page 29: Oracle Forms Builder 6

Produzindo Triggers

Executando consultas incondicionais

Selecionando as opções do menu default (Query -> Execute)

Pressionando a tecla [Execute Query]. Para ver a lista de teclas e suas funções selecione Help -> Keys do menu default.

Clicando em um botão de Execute Query, se definido.

DBC Database Company 11

Page 30: Oracle Forms Builder 6

Produzindo Triggers

Executando consultas condicionais

Passos para executar uma Query condicional

1. Selecione Query -> Enter do menu default ou a tecla [Enter Query]. 2. A linha de status deve sinalizar ENTER QUERY indicando que o form está no modo

ENTER QUERY.3. Entre com o critério de pesquisa apropriado.4. Selecione Query -> Execute do menu default ou a tecla [Execute Query].

Critérios válidosCritério Descrição

Valores compatíveis Pesquisa as linhas que possuem exatamente os mesmos valores passados como argumentos.

Caracteres de substituição

(wildcards % ou _ )

Implica na utilização do operador LIKE possibilitando o uso dos wildcards % e _ como argumentos.

Diálogo Query Where Permite a especificação de uma cláusula WHERE mais complexa para uma consulta.

Operadores condicionais

Permite a utilização de outros operadores condicionais, tais como : >, <, >=, <=, <>, através do prefixo #.

DBC Database Company 12

Page 31: Oracle Forms Builder 6

Produzindo Triggers

Exemplo 1:

Consultando os clientes do país “Japao”, com classificação de crédito “RUIN”.

DBC Database Company 13

Page 32: Oracle Forms Builder 6

Produzindo Triggers

Exemplo 2:

Consultando os clientes que possuem o nome iniciado pela letra “S”.

DBC Database Company 14

Page 33: Oracle Forms Builder 6

Produzindo Triggers

Exemplo 3:

Consultando os clientes atendidos por vendedores com o número maior que 14.

DBC Database Company 15

Page 34: Oracle Forms Builder 6

Produzindo Triggers

Utilizando a cláusula Where em restrições de consulta

Passos para a utilização do diálogo Query Where:

1. Selecione Query -> Enter do menu default ou a tecla [Enter Query]. 2. Especifique variáveis para cada item participante da condição prefixando a

variável com “:”.Exemplo: Sales Rep Id -> :S, Pais -> :P.3. Selecione Query -> Execute do menu default ou a tecla [Execute Query].4. Entre com a expressão condicional da cláusula where utilizando as variáveis

definidas anteriormente. Clique no botão OK.

Exemplo:

Consultando os clientes dos países “USA” e “Japao” ou os clientes atendidos pelo vendedor com número 14.

1. Definindo as variáveis envolvidas:

DBC Database Company 16

Page 35: Oracle Forms Builder 6

Produzindo Triggers

2. Especificando a condição da cláusula WHERE:

DBC Database Company 17

Page 36: Oracle Forms Builder 6

Produzindo Triggers

Modos de operação

Oracle Forms possui dois modos de operação: modo Normal e modo Enter Query.

Modo Enter-QueryÉ o modo de operação que permite a entrada de critérios de pesquisa para uma consulta.

No modo Enter-Query você pode:

Consultar todos os registros. Consultar registros utilizando um critério. Consultar registros utilizando o diálogo Query Where. Obter o número de registros que seriam retornados por uma consulta antes de executá-la

utilizando a opção Query -> Count Hits.

No modo Enter-Query você não pode:

Navegar fora do bloco corrente. Sair da sessão Runform. Usar certas funções, tais como Next Record. Inserir registros. Atualizar registros. Deletar registros.

Modo NormalÉ o modo de operação que permite a inserção, atualização e deleção de registros (linhas) do

Banco de dados.

No modo Normal você pode:

Consultar registros. Inserir novos registros. Atualizar registros. Deletar registros. Efetivar as mudanças (Comitt: Action -> Save). Sair da sessão Runform.

No modo Normal você não pode:

Executar uma consulta condicional. Utilizar o diálogo Query Where.

DBC Database Company 18

Page 37: Oracle Forms Builder 6

Produzindo Triggers

Inserindo, atualizando e deletando registros

Passos para inserir um registro

Garanta que você está posicionado em um registro. Use a tecla Scroll Down até encontrar um registro vazio

ou

Selecione no menu a opção Record -> Insert ou tecle [Insert Record]. Preencha o registro. Efetive a mudança (Action -> Save).

Passos para atualizar um registro

Consulte o registro desejado. Atualize o registro. Efetive a mudança (Action -> Save).

Passos para deletar um registro

Consulte o registro desejado. Remova o registro. Efetive a mudança (Action -> Save).

DBC Database Company 19

Page 38: Oracle Forms Builder 6

Produzindo Triggers

Efetivando ou descartando as mudanças efetivadas

Para efetivar as inserções, atualizações e deleções é necessário salvar (Commit da transação) no Banco de dados. Selecione a opção Action -> Save.

Para descartar as inserções, atualizações e deleções (Rollback da transação) selecione a opção Action -> Clear All.

Mostrando erros

Se uma mensagem de erro Oracle aparecer na linha de mensagens você pode ver o comando SQL que originou o erro selecionado no menu a opção Help -> Display Error.

DBC Database Company 20

Page 39: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Inicie uma sessão Runform utilizando o Forms CLIENTES.FMX com o usuário, password e String de conexão, fornecidos pelo instrutor.

2. Selecione a opção Help -> Keys do menu. Utilize o scrollbar para ver as funções e suas teclas correspondentes.

3. Execute uma consulta incondicional. Após, navegue para os próximos registros e retorne para os registros anteriores, utilizando as setas [Up] e [Down].

4. Execute consultas condicionais:

consulte o cliente com o nome “Womansport”; consulte os clientes com o código do vendedor maior que 13; consulte todas as cidades iniciadas pelo string “Sa”; consulte os clientes localizados no país “USA” com classificação de crédito “Excelente”.

5. Consulte o cliente “Big John’s Sports Emporium” e clique no botão “Pedidos” para chamar o form PEDIDOS.FMX.

6. Clique no botão Image On para desligar a imagem do item.

7. Consulte somente os pedidos com o tipo de pagamento “A Prazo”.

8. Mova para o primeiro registro do bloco “Itens” e pressione o botão “Estoque”.

9. Insira um novo registro no bloco “Pedidos” e um novo registro no bloco “Itens”.

10. Salve os registros novos.

11. Atualize o pedido que você inseriu.

12. Tente remover o pedido que você inseriu, o que acontece?

13. Remova o item do pedido que você inseriu e salve.

14. Agora tente deletar o pedido que você inseriu.

15. Encerre a sessão Runform.

DBC Database Company 21

Page 40: Oracle Forms Builder 6

Oracle Forms Builder 6

3.3. Módulo FormMódulo Form

DBC Database Company

Page 41: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Entender os tipos de módulos form. Criar um módulo form com e sem o assistente. Construir um bloco utilizando uma especificação de tabela existente com e sem o assistente. Salvar um módulo form. Executar um módulo form. Construir um módulo form mestre/detalhe.

DBC Database Company 2

Page 42: Oracle Forms Builder 6

Produzindo Triggers

Tipos de Módulos

Lembre-se de que existem 4 tipos de módulos de aplicação que podem ser criados através da ferramenta Oracle Forms.

Módulo Descrição

Form Telas (janelas) com blocos de dados pertencentes ou não a tabelas do Banco de dados que proporcionam consultas, inserções, atualizações e deleção de linhas.

Menu Interface hierárquico com o objetivo de prover um método simples de emitir comandos para a aplicação.

Library Conjunto de sub programas PL/SQL armazenados centralizados, proporcionando reutilização.

Object Libraries Biblioteca de objetos, armazena objetos criados pelo desenvolvedor, para serem copiados ou referenciados à modulos forms.

Obs.:

Você pode atachar um módulo Menu a um módulo form executando as opções disponíveis em momento de execução.

Você pode atachar um módulo Library a um módulo form ou Menu a fim de tornar disponíveis os sub programas dentro do outro módulo.

DBC Database Company 3

Page 43: Oracle Forms Builder 6

Produzindo Triggers

Iniciando uma sessão Oracle Forms Builder

Para iniciar uma sessão efetue duplo clique no ícone Oracle Forms Builder Ao executar o Forms Builder 6, se a preference “Welcome Dialog” estiver setada e

mostrado antes de entrar no forms um Wizard: Para criar um novo modulo form manualmente, selecione “Build a new form manually”; Para, com o Wizard, criar um novo modulo form e já criar um bloco nele, selecione “Use

the Data Block Wizard”; Para criar um novo modulo form baseado em um modulo form template, selecione “Build a

form based on a template”; Para Abrir um modulo form já existente, selecione “Open na existing form”.

DBC Database Company 4

Page 44: Oracle Forms Builder 6

Produzindo Triggers

Criando um novo módulo form

Existem 5 formas de se criar um módulo tipo form:

Iniciando uma sessão Forms Builder (implicitamente é criado um novo módulo). Selecionando File -> New -> Form.

Efetuando um clique na entrada Form, ou um módulo existente, no Object Navigator e no ícone CREATE.

Selecione qualquer objeto dentro da entrada Forms, e clique no ícone NEW.

Efetuando um duplo clique na entrada Forms no Object Navigator, quando nenhum outro módulo form está aberto.

DBC Database Company 5

Page 45: Oracle Forms Builder 6

Produzindo Triggers

Conectando-se ao banco

Conecte-se ao Banco de dados Oracle selecionando File -> Connect.

Na janela Connect, entre com o nome do usuário Oracle (User Name), a senha (Password) e o nome do Banco de dados (Database). Após, clique em Connect.

DBC Database Company 6

Page 46: Oracle Forms Builder 6

Produzindo Triggers

Trocando o nome de um módulo form

O Oracle Form atribui o nome MODULEn para um novo módulo, onde n é o próximo número disponível para nomes de módulos. Este nome aparece no Object Navigator e no Property Palette.

Existem duas formas para trocar o nome de um módulo tipo form:

no Object Navigator efetuando um duplo clique no nome do módulo form

no Property Pallete, na propriedade Name:nelecionando no menu Tools -> Property Palette;

com um duplo clique no ícone do módulo form no Object Navigator ou com o botão direito do mouse e selecionado a opção Properties.

Convenções de nomenclatura

Não é permitido nomes duplicados para objetos do mesmo tipo nem a utilização de palavras reservadas do Oracle.

Nomes devem:

Conter até 30 caracteres. Possuir o primeiro caracter como uma letra. Ou podem possuir combinação de letras, números e alguns caracteres especiais ($, “, etc).

DBC Database Company 7

Page 47: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um módulo form

Todos os objetos dentro de um form possuem propriedades, inclusive o módulo que também é um objeto.

Efetuado alterações de propriedades

Efetue uma alteração ou consulta nas propriedades de um módulo através do Property Pallete:

selecionando no menu Tools -> Property Palette ou com um duplo clique no ícone do módulo form no Object Navigator ou um clique com o botão direito do mouse e escolhendo a opção Property Palette.

Demonstrado anteriormente

É aconselhável definir as propriedades de um módulo form na sua criação, visto que as mesmas afetam o comportamento do form genericamente.

Principais Propriedades de um módulo

Name: nome interno do módulo form (visualizado no Object Navigator). Coordinate System: define a unidade usado como medida para os objetos de um form e

suas posições (coordenadas).

Outras propriedades de um módulo form serão vistas nos próximos capítulos.

DBC Database Company 8

Page 48: Oracle Forms Builder 6

Produzindo Triggers

Escolhendo a unidade de coordenação

Pressione o botão More na propriedade Coordinate System no Property Palette.

Na janela Coordinate Info altere as propriedades desejadas.

O sistema de coordenação para um form pode ser:

Opção Descrição

Real Utilizada para modo gráfico, permite flexibilidade e alinhamento fino quando ajustando posições e tamanhos de objetos na tela. Ao selecioná-la pode-se escolher na opção Real Unit: Pixels, Centímetros, Pontos e Decipontos. A unidade default é Point.

Caracter Utilizadas para modo caracteri, ncluem dispositivos de modo caracter.

DBC Database Company 9

Page 49: Oracle Forms Builder 6

Oracle Forms Builder 6

4.4. BlocosBlocos

DBC Database Company

Page 50: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Modificar o comportamento e a aparência de um bloco e seus componentes. Utilizar as técnicas de construção para gerenciar as propriedades de blocos e seus objetos. Construir blocos baseados em tabelas do banco de dados. Construir blocos que não são baseados à tabelas do banco de dados.

DBC Database Company 2

Page 51: Oracle Forms Builder 6

Produzindo Triggers

Conceito de bloco

Bloco é o dono lógico de um Ítem, ele armazena-os e contém propriedades que afetam ao funcionamento dos quais. Um bloco pode ser de controle, sem ser baseado à uma origem de dados, ou ser Base Table, baseado à uma origem de dados.

Bloco Base Table

É um bloco que é baseado à uma origem de dados do banco, seja tabela, view, stored procedure ou ainda uma query. Na criação de um bloco base table o forms arranja e modifica as propriedades de tela e itens, automaticamente conforme especificações da fonte dos dados e do Layout Wizard, assistente de disposição dos dados do bloco na tela, setadas ao criar o bloco, facilitando e agilizando ainda mais na construção de uma aplicação.

Algumas tarefas efetuadas pelo forms na criação de um bloco Base Table:

Alteração das propriedades do bloco conforme a tabela, view ou array. Cria um item tipo Text para cada coluna do objeto origem dos dados. Seta as propriedades para cada Text item (name, data type, max length e etc) de acordo com

a especificação da coluna correspondente. Cria um prompt tipo label para cada item, o default é o nome da coluna. Arranja os itens na tela de acordo com as propriedades de layout especificadas.

Bloco de Controle

Um Control Block é um bloco que não está associado a nenhuma origem de dados do banco. Em outras palavras a propriedade Basetable Data Block é No. Use um bloco de controle para organizar a disposição dos objetos auxiliares, como botões, que poderão ser colocados em uma Toolbar.

DBC Database Company 3

Page 52: Oracle Forms Builder 6

Produzindo Triggers

Criação de um bloco

Clique na entrada Data Blocks no Object Navigator.

Clique no ícone Create no Object Navigator. A janela New Data Block Options aparecerá.

1. Para usar o Wizard na criação do bloco selecione “Use the Data Block Wizard”;2. Para criar um bloco manualmente, sem items, em branco, selecione a opção

“Build a new data block manually”. Esta opção, normalmente é utilizada na criação de um bloco de controle, visto a seguir.

DBC Database Company 4

Page 53: Oracle Forms Builder 6

Produzindo Triggers

Criando um bloco de controle

Siga os passos definidos acima, para criação de um bloco. Na janela New Data Block, selecione a opção Build a new data block manually. Clique em OK. Altere a propriedade Database Data Block do bloco para No.

DBC Database Company 5

Page 54: Oracle Forms Builder 6

Produzindo Triggers

Criando um bloco Base Table

Siga os passos definidos acima, para criação de um bloco. Na janela New Data Block, selecione a opção Use the Data Block Wizard. Clique em OK.

Tela de boas vindas do Data Block Wizard

Um diálogo, avisando que o Wizard irá criar um bloco com especificações que devem ser preenchidas nos próximos diálogos, será mostrado.

DBC Database Company 6

Page 55: Oracle Forms Builder 6

Produzindo Triggers

Escolha do tipo de origem de dados (Table or View)

Escolha o tipo da origem de dados do bloco:

Table or View : Tabela ou Visão do banco; Stored Procedure : Array em forma de record retornado de uma procedure do banco, visto

no curso de Forms Avançado.

DBC Database Company 7

Page 56: Oracle Forms Builder 6

Produzindo Triggers

Escolhendo os itens que farão parte do bloco

1. Digite o nome da, tabela ou visão, caso não saiba, pressione o botão Browse e escolha uma opção da lista;

2. Mova as colunas que deseja incluir no bloco, as arrastando ou através dos botões;

3. Marque o CheckBox Enforce data integrity, para criar triggers relativas as constraints da tabela ou visão;

DBC Database Company 8

Page 57: Oracle Forms Builder 6

Produzindo Triggers

Etapa final da criação do bloco

Na página do Assistente selecione uma das seguintes opções:

Create the data block, then call the Layout Wizard : executa o Assistente de Layout; Just create the data block : não executa o Assistente de Layout, o usuário deve fazer-lo mais

tarde.

DBC Database Company 9

Page 58: Oracle Forms Builder 6

Produzindo Triggers

Usando o Assistente de Layout

Tela de boas vindas do assistente

Seleção do canvas, tela, no qual será adicionados os itens do bloco

Selecione um Canvas já existente na lista;, ou New Canvas, criará um novo canvas.

DBC Database Company 10

Page 59: Oracle Forms Builder 6

Produzindo Triggers

Seleção dos itens do bloco que serão mostrados no layout

Acerto dos prompts e tamanho dos itens

DBC Database Company 11

Page 60: Oracle Forms Builder 6

Produzindo Triggers

Seleção do estilo dos prompts em relação aos itens

Form : Label, prompt, à esquerda do Item;

Tabular : Label, prompt, à cima do Item.

DBC Database Company 12

Page 61: Oracle Forms Builder 6

Produzindo Triggers

Especificação de scrollbar e argumentos de agrupamento de tela

Frame Title : Descrição do frame, quadro, envolvedor dos dados na tela. Records Displayed : Numero de registros, instâncias, mostrados na tela. Distance Between Records : Distância entre os registros, quando mostrados mais do que 1. Display Scrollba : Informa se o bloco deve possuir uma barra de rolagem dos registros.

Conclusão das especificações de Layout

DBC Database Company 13

Page 62: Oracle Forms Builder 6

Produzindo Triggers

Removendo um bloco

Selecione o bloco desejado no Object Navigator.

Clique no ícone Delete no Object Navigator. Um diálogo solicitará a confirmação.

Click em Yes.

DBC Database Company 14

Page 63: Oracle Forms Builder 6

Produzindo Triggers

Atributo Visual

Um atributo visual é um objeto usado para definir propriedades visuais que serão associadas a objetos de tela, nele são definidas propriedades por exemplo cor de fonte e cor de fundo.

Um atributo visual é bastante utilizado para destacar o registro corrente, que possui o foco, de um bloco com mais de uma instância visível na tela, Multi-Records.

Criando um atributo visual

Selecione a entrada Visual Atributtes no Object Navigator.

Clique no ícone Create . Altere as propriedades desejadas do atributo criado.

DBC Database Company 15

Page 64: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um bloco

Você pode definir ou alterar propriedades adicionais aos blocos após a criação dos mesmos.

As propriedades de um bloco estão dispostas em grupos de propriedades para agilizar na busca das quais.

DBC Database Company 16

Page 65: Oracle Forms Builder 6

Produzindo Triggers

Manipulando propriedades de Objetos

As propriedades de qualquer tipo de objeto podem ser consultadas e modificadas pelo Property Palette.

Para abrir o Property Palette existem 5 formas:

Selecionando Tool -> Property Palette. Pressionando a tecla <F4>. Efetuando duplo clique no ícone do objeto no Object Navigator. Efetuando duplo clique no objeto no layout editor. Efetuando um clique no botão direito do mouse e selecionando a opção Property Palette.

Uma vez ativado o Property Palette você pode manipular as propriedades do objeto.

Tipos de Interface de manipulação do Property Palette

Existem 4 tipo de interface para a manipulação do Property Palette:

Interface Descrição

Text Field Uma linha de texto é aberta na control area. Um botão icônico também aparece permitindo o uso de um editor.

Pop List Uma lista de valores é oferecida com um conjunto de valores fixos. Clique na control área para abrir a lista de valores ou dê um duplo clique na propriedade para ver o próximo valor na lista.

LOV Window Uma lista de valores potencialmente grande é oferecida. Clique na control área para abrir a lista de valores ou dê um duplo clique na propriedade para ver o próximo valor na lista.

More button Clicando no botão More na control área, mais propriedades são oferecidas através de um diálogo extra.

DBC Database Company 17

Page 66: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um bloco

Propriedades de navegação

Propriedade Descrição

Navigation Style Same Record – quando você navega do último item em um registro utilizando [Next Item] o cursor move para o primeiro item do mesmo registro.Change Record - quando você navega do último item em um registro utilizando [Next Item] o cursor move para o primeiro item do próximo registro.Change Block – quando você navega do último item do bloco utilizando [Next Item] o cursor move para o primeiro item do primeiro registro do próximo bloco.

Previous Navigation Data Block

Normalmente quando se executa uma operação para se movimentar para o bloco anterior o Oracle Forms move o controle para o bloco anterior na seqüência, a menos que você especifique um bloco nesta propriedade.

Next Navigation Data Block

Normalmente quando se executa uma operação para se movimentar para o próximo bloco o Oracle Forms move o controle para o próximo bloco na seqüência, a menos que você especifique um bloco nesta propriedade.

Propriedades de registro

Propriedade Descrição

Current Record Visual Atributte Group

Atributo visual utilizado para realçar o registro corrente do bloco.

Query Array Size Quantidade de Registros para dar fetch. Para agilizar no display dos os primeiros registros de um bloco multi-records.

Number of Records Buffered

Quantidade de registros trazidos a cada fetch.

Number of Records Displayed

Número de display de registros de um bloco multi-records.

Query All Records Força o fetch de todos os registros. Usado em itens tipo sumario.

Record Orientation Orientação dos registros no bloco. Geralmente os registros são orientados verticalmente. Você pode alterar para horizontal se assim desejar.

Single Record Informa que o bloco só tem um registro, somente para blocos de controle.

DBC Database Company 18

Page 67: Oracle Forms Builder 6

Produzindo Triggers

Propriedades relacionadas aos dados

Propriedade Descrição

Database Data Block Se o bloco é baseado em uma tabela, view ou array.

Enforce Primary Key Controla se este registro é único antes dele ser inserido na tabela base. Yes significa que pelo menos um item no bloco tem a propriedade Primary Key setada como Yes.

Delete/nsert/Query/Updade Allowed

Define se a operação associada pode ser executada( Yes / No )

Query Data Source Type

Especifica o tipo da origem dos dados, tabela, view, ou procedure (array). None significa que o bloco é de controle (não base table).

Query Data Source Name

Especifica o nome da tabela, view ou procedure.

Query Data Source Columns

Especificações de tipo e tamanho das colunas da tabela, view, sub-query, ou procedure.

Query Data Source Arguments

Argumentos de tipo, tamanho, nome de coluna, tipo da coluna e valores para transação de dados via procedure.

WHERE Clause Permite que você defina uma condição para a clausula Where, do comando Select, que será executada para todas consultas efetuadas no bloco.Se for executada uma consulta condicional os argumentos da consulta serão adicionados a condição especificada da cláusula Where através do operador AND.

ORDER BY Clause Permite que você defina a cláusula order by para a ordenação dos registros para todas consultas efetuadas no bloco.

Optimizer Hint Permite a definição de um hint string que será adicionado ao SQL implícito gerado para as consultas efetuadas no bloco.Exemplo: /*+ FIRST ROWS */

Enforce Column Security

Habilita o controle para que somente os itens que o operador tenha permissão de atualização podem ser atualizados pelo mesmo.

Update Changed Columns Only

Yes - somente os itens alterados pelo operador são inseridos ou alterados na tabela base.No - o Oracle Forms atualiza todas as colunas associadas ao bloco na tabela base.

Key Mode / Locking Mode /Transational Triggers

Estas propriedades referenciam-se a transações com registros de blocos associados a tabelas não Oracle. Para transações com tabelas Oracle as propriedades default são as mais apropriadas.

DBC Database Company 19

Page 68: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de scrollbar

Propriedade Descrição

Show Scroll Bar Yes – inclui um scroll bar para o bloco. Quando setado habilita outras propriedades, como o canvas, a posição e o tamanho para o scroll bar. Você pode definir estas propriedades pelo layout editor.No – não inclui um scroll bar para o bloco.

Scroll Bar Canvas Canvas onde deve mostrar o scrollbar.

Scroll Bar Tab Page Se o canvas é do tipo Tab, em qual Page ele deve ser mostrado.

Propriedades a nível de módulo

Propriedade Descrição

Listed In Data Block Menu

Permite que o bloco apareça no menu de blocos, <F5>.

Data Block Description

Define a descrição do bloco no menu de blocos.

DBC Database Company 20

Page 69: Oracle Forms Builder 6

Produzindo Triggers

Salvando um módulo form

Você pode salvar um módulo Forms de 2 formas:

Selecionando File -> Save ou File -> Save As

Clicando no ícone Save .As duas opções causam o aparecimento do diálogo Save As, aonde você deve entrar com a

localização e o nome do arquivo e clicar em OK.

Obs. :

você pode definir entre salvar no Banco de dados (database) ou em arquivo (file) setando a preference Access, selecionando no menu Tools -> Preferences -> Access.

DBC Database Company 21

Page 70: Oracle Forms Builder 6

Produzindo Triggers

Executando um módulo form

Você pode executar um módulo, do módo “Client/Server”, sem sair do Form Builder, de 2 formas:

Selecionando no menu Program -> Run Form -> Client/Server CTRL+R;

Clicando no ícone Run .

Quando você termina a sua sessão Runform, você retorna ao Oracle Forms Builder.

DBC Database Company 22

Page 71: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Execute o Oracle Forms Builder. Conecte-se ao banco utilizando o User Name, Password e Database fornecidos pelo instrutor.

2. Crie um módulo forms, chamado CLIENTES. Nele crie um bloco baseado na tabela CLIENTES, inclua todas as colunas da tabela no bloco. Para o layout use o estilo “Form”, e mostre somente um registro na tela.

3. Garanta que os registros consultados no bloco CLIENTES, sejam classificados pelo código do cliente.

4. Salve e execute o módulo CLIENTES, Experimente os efeitos das propriedades que você definiu. Encerre a sessão Runform e retorne ao Oracle Forms Builder.

5. Feche o módulo CLIENTES.

6. Crie um novo módulo form, chamado PEDIDOS. Nele crie um bloco baseado na tabela PEDIDOS, inclua todas as colunas da tabela no bloco. Para o layout, use o estilo “form”, e mostre somente um registro na tela.

7. Ainda no módulo PEDIDOS, crie outro bloco baseado na tabela ITENS. Para o layout, utilize o estilo “Tabular” e na mesma tela, canvas, mostre 4 registros. Mostre uma Scroll Bar. Garanta que os registros correntes no bloco ITENS apareçam visualmente diferentes. Crie um atributo visual chamado REGISTRO_CORRENTE, com as seguintes propriedades:

Foreground Color : White; Background Color : Darkcyan.8. Garanta que os registros consultados no bloco ITENS sejam classificados por

Numero_do_Item.

9. Defina que a navegação para o bloco ITENS, quando estiver no último item do bloco PEDIDOS, seja automática.

10. Defina que a navegação para o próximo registro, quando estiver no último item do bloco ITENS, seja automática.

11. Salve e execute o módulo PEDIDOS. Experimente os efeitos das propriedades que você definiu. Encerre a sessão Runform e retorne ao Oracle Forms Builder.

DBC Database Company 23

Page 72: Oracle Forms Builder 6

Oracle Forms Builder 6

5.5. Relacionamento Entre BlocosRelacionamento Entre Blocos

DBC Database Company

Page 73: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Entender o conceito de relação entre blocos. Criar uma relação usando o assistente. Criar uma relação manualmente. Entender as propriedades de uma relação.

DBC Database Company 2

Page 74: Oracle Forms Builder 6

Produzindo Triggers

Conceito de relacionamento

Relacionamento é uma relação entre dois blocos através de uma chave primária e uma chave estrangeira das tabelas nas quais os blocos estão baseados. O bloco Mestre é aquele baseado na tabela que possui a chave primária e o bloco detalhe é aquele baseado na tabela que possui a chave estrangeira.

O relacionamento Mestre Detalhe equivale a um relacionamento 1:M no diagrama ER. Um bloco detalhe pode ser um bloco mestre em relação a outro bloco. Um bloco mestre pode ter mais de um bloco detalhe.

DBC Database Company 3

Page 75: Oracle Forms Builder 6

Produzindo Triggers

Criando um relacionamento entre dois blocos

Existem duas formas de criar-se relacionamentos:

Automática: Usando o Data Block Wizard. Manual: Especificando manualmente o relacionamento.

Passos para a criação de uma relação manual

1. Selecione a entrada Relations do bloco Mestre, no Object Navigator.

2. Clique no ícone Create .3. Será mostrada a janela New Relations.4. Especifique o nome do bloco Detalhe.

5. Escolha a propriedade de deleção.

6. Escolha a propriedade de coordenação.

7. Especifique a condição de Join.

DBC Database Company 4

Page 76: Oracle Forms Builder 6

Produzindo Triggers

Construindo um relacionamento automaticamente

Crie o bloco mestre; Crie o bloco detalhe setando as opções de relacionamento:

1. Clique no botão Create Relationship;2. Ao mostrar lista de blocos criados selecione o bloco mestre;3. Se necessário corrija a condição de join.

DBC Database Company 5

Page 77: Oracle Forms Builder 6

Produzindo Triggers

Opções do Assistente:

Opção Descrição

Create Relationship Button

Motra a lista de blocos criados no modulo para selecionar o bloco mestre do relacionamento.

Delete Relationship Button

Deleta o relacionamento selecionado.

Auto-join data blocks Check Box

Cria automáticamente a relação de join.

Detail Item List Lista de items do bloco detalhe para o join com items do bloco mestre.

Master Item List Lista de items do bloco mestre para o join com items do bloco detalhe.

DBC Database Company 6

Page 78: Oracle Forms Builder 6

Produzindo Triggers

Executando um módulo form mestre detalhe

Características de execução

Consultando o bloco mestre, automaticamente são consultados os registros correspondentes no bloco detalhe.

Inserindo um registro no bloco detalhe automaticamente, ele estará associado ao registro mestre corrente.

A tentativa de deleção de um registro mestre é impedida caso um registro detalhe associado exista.

As características de um relacionamento mestre detalhe podem ser alteradas através das propriedades de uma relação (Relations) que serão vistas em capítulos seguintes.

DBC Database Company 7

Page 79: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de relacionamento

Você pode alterar as propriedades de uma relação de maneira a afetar o comportamento das deleções e das coordenações de consultas.

Master Deletes

Propriedade Uso

Non Isolated Previne a deleção do registro do bloco mestre quando registros detalhes para esse mestre existem.

Cascading Deleta os registros detalhes em cascata quando o registro mestre é deletado. Obs.: a mensagem de Commit mostra somente o número de registros deletados do bloco mestre, embora os registros detalhe também sejam deletados.

Isolated Deleta somente o registro mestre.

Coordenação de consultas

Propriedade Uso

Default Força a coordenação dos blocos de maneira a sempre que o registro mestre for trocado os correspondentes registros detalhes serão apresentados.

Deferred with Auto Query

Adia a consulta dos registros detalhes associados ao registro mestre de maneira que eles sejam consultados automaticamente no momento em que o cursor se posicionar no bloco detalhe.

Deferred without Auto Query

Adia a consulta dos registros detalhes associados ao registro mestre de maneira que eles sejam consultados no momento em que o cursor se posicionar no bloco detalhe e for executada uma consulta no bloco detalhe.

Prevent Masterless Operations

Garante que um bloco detalhe não pode ser consultado ou utilizado para inserção de registros quando não existe um registro mestre.

Join Condition

Propriedade Uso

Condição de join Condição de ligação entre blocos. Obs: utilize nomes de blocos e itens ao invés de nomes de tabelas e colunas na expressão de condição.

DBC Database Company 8

Page 80: Oracle Forms Builder 6

Produzindo Triggers

O que acontece quando você modifica um relacionamento

Trocando a propriedade Delete Record Behavior de Non Isolated para Cascading a trigger ON_CHECK_DELETE_MASTER é substituida pela trigger PRE_DELETE.

Trocando a propriedade Delete Record Behavior de Non Isolated para Isolated a trigger ON_DELETE_MASTER é removida.

DBC Database Company 9

Page 81: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo PEDIDOS. No bloco ITENS, crie uma relação com o bloco PEDIDOS, garanta que não seja permitido a exclusão de um pedido se houverem itens associados a ele.

2. Invocando o Assistente de Layout, retire da tela o item CODIGO_DO_PEDIDO do bloco ITENS.

3. Salve e execute o módulo. Teste as propriedades da relação.

4. Crie um bloco baseado na tabela ESTOQUES, aproveitando o assistente, crie uma relação do bloco ITENS, que será o mestre da relação. Este bloco deve ser o último bloco navegável.

5. Diferencie os registros correntes deste bloco associando a ele o atributo visual REGISTRO_CORRENTE.

6. Defina que a navegação para o próximo registro, quando estiver no último item do bloco ESTOQUE, seja automática.

7. Garanta que seja possível deletar um item, se houverem registros no bloco ESTOQUE.

8. Defina a coordenação de maneira que o bloco ESTOQUE não seja consultado até que você efetue explicitamente uma consulta no bloco.

9. Salve e execute o módulo PEDIDOS. Experimente os efeitos das propriedades que você definiu.

10. Encerre a sessão Runform e retorne ao Oracle Forms Builder.

DBC Database Company 10

Page 82: Oracle Forms Builder 6

Oracle Forms Builder 6

6.6. FramesFrames

DBC Database Company

Page 83: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Entender o conceito de frame. Modificar a aparência de itens de bloco, no canvas, utilizando frame.

DBC Database Company 2

Page 84: Oracle Forms Builder 6

Produzindo Triggers

Conceito de frame

Frame é o dono logico de um grupo de items do bloco, no canvas, onde pode-se referenciar os items deste bloco diretamente pelo frame, podendo assim dimenciona-los, e preenche-los automaticamente na área do mesmo. Também é possível setar algumas propriedades comuns nos itens do mesmo, pelo frame.

DBC Database Company 3

Page 85: Oracle Forms Builder 6

Produzindo Triggers

Reorganizando os itens dimencionando o frame

Você pode reorganizar os itens do canvas englobados pelo frame, dimencionando o mesmo no canvas.

DBC Database Company 4

Page 86: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um frame

Propriedade Descrição

Name Nome do frame.

Layout Data Block Bloco com o qual o frame está associado.

Update Layout Forma de controle do frame com os itens englobados por ele:Automatically : Dimenciona e controla os itens automaticamente, ao setar propriedades no frame, é repassado aos itens e bloco;Manually : O frame passa a não mais fazer efeito nos respectivos itens e bloco, mas o Layout Wizard consegue alterá-lo;Locked : O frame passa a não mais fazer efeito nos respectivos itens e bloco, e o Layout Wizard não consegue alterá-lo.

Layout Style Estilo de Layout:Form : Label à esquerda do item;Tabular : Label à cima do item.

Frame Alignment Alinhamento dos objetos no frameStart : Início;End : Fim;Center : Centro;Fill : Ajusta preenchendo o espaço;Column : Alinha os objetos na mesma coluna.

Single Object Alignment

Alinhamento quando o frame possuir um só objeto e a propriedade Frame Alignment for Fill.

Hirizontal e Verital Margin

Especifica a margem horizontal e vertical dos objetos do frame.

Hirizontal e Verital Object Offset

Especifica a distância horizontal e vertical entre os objetos dentro do frame.

Allow Expansion Habilita expandir a borda do frame quando algum item, ao ser redimensionado, passar da borda do frame

Shrinkwrap Redimenciona o frame para eliminar os espaços vazios entre as margens e as bordas do frame.

Vertical Fill Força os objetos a ajustarem-se de forma a preencher o máximo possível da linha.

Maximum Objects per Line

Determina o número máximo de objetos por linha, faz efeito se a propriedade Vertical Fill for No.

DBC Database Company 5

Page 87: Oracle Forms Builder 6

Produzindo Triggers

Continuação...

Propriedade Descrição

Start prompt Alignment

Alinhamento do label em relação ao item.

Start prompt Offset Distância horizontal do label ao item.

Top Prompt Alignment

Alinhamento do label em relação ao item, quando o label posiciona-se à cima do item(estilo tabular).

Top prompt Offset Distância vertical do label ao item.

Allow Start-Attached Prompts

Permite otimizar o prompt, quando o Form Styte for Tabular, permite reorganizá-lo para, se houver espaço, mover ao lado do item.

Frame Title Descrição do label título do frame.

Frame Title Alignment

Alinhamento do título do frame.

Frame Title Offset Margem distância do título do frame.

Frame Title Spacing Espaço entre a borda do frame e o título.

Number of Records Displayed

Número de registros à serem mostrados no bloco.

Distance Between Records

Distância entre os registros.

Show Scroll Bar Habilita a barra de rolagem para os registros.

Scroll Bar Alignment Especifica a posição da Scroll Bar em relação aos itens.

Scroll Bar Width Especifica a largura da Scroll Bar.

X e Y Position Posição, nas coordenadas X e Y, do frame em relação ao canvas.

Width Largura do frame.

Height Altura do frame.

Line Width Espessura da linha (borda) do frame.

Dash Style Estilo do tracejado da linha.

Bevel Representação de saliência e depressão da linha.

DBC Database Company 6

Page 88: Oracle Forms Builder 6

Produzindo Triggers

Tela de propriedades de um frame

DBC Database Company 7

Page 89: Oracle Forms Builder 6

Oracle Forms Builder 6

7.7. Itens tipo TextoItens tipo Texto

DBC Database Company

Page 90: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Criar um item tipo texto. Controlar os dados em itens tipo texto. Alterar as propriedades de navegação de um item tipo texto. Incrementar o relacionamento entre um item tipo texto e o Banco de dados. Adicionar funcionalidade a um item tipo texto. Incluir mensagens de ajuda. Incluir Helps tipo ToolTip.

DBC Database Company 2

Page 91: Oracle Forms Builder 6

Produzindo Triggers

Conceito de itens tipo texto (Text Item)

Text item ou item tipo texto são itens de interface, através dos quais você pode consultar, inserir, atualizar e deletar dados. Um item tipo texto corresponde a uma coluna de uma tabela.

O tipo de item determina as propriedades disponíveis no Property Palette. Neste capítulo serão vistas as propriedades relativas a um item tipo texto (Text Item).

DBC Database Company 3

Page 92: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo texto (Text Item)

Você pode criar um item do tipo texto de 4 formas:

Convertendo um item já existente para Text Item Usando o ícone Text Item do Toolbar no layout editor. Usando o ícone Create no Object Navigator. Criando um novo bloco Base Table, usando o wizard e selecionando a opção para layout, os respectivos Text Itens serão criados implicitamente.

Passos para a criação de um Text Item no Layout Editor

1. Entre no Layout Editor. Selecione Tools -> Layout Editor F2.2. Clique no ícone Text Item no Toolbar do Layout Editor.3. Clique no Canvas, e o Text Item deve aparecer.4. Dê um duplo clique no Text Item, e o Property Palette deve aparecer.5. Defina as propriedades conforme sua necessidade.

DBC Database Company 4

Page 93: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um text item

Propriedade Descrição

Item Type Define o tipo de item que você deseja criar.

Canvas Determina em qual canvas o item deverá ser mostrado.

Visible Determina se o item deve ou não ser mostrado.

X e Y Position Define as coordenadas dos eixos X e Y relativa ao canvas definido.

Width Define a largura do item.

Heigth Define a altura do item.

Distance Between Records

Define a quantidade de espaços entre registros.

Bevel Define a aparência da borda do item:Depressão, saliência e efeito de foco.None: o item não possui borda.

Rendered Conserva os recursos do sistema. Quando um item Rendered não é o foco, os recursos utilizados para mostrá-lo, são liberados.

DBC Database Company 5

Page 94: Oracle Forms Builder 6

Produzindo Triggers

Continuação...

Propriedade Descrição

Visual Atribute Group Especifica o nome de um atributo visual previamente definido.

Font Name Especifica o tipo de fonte

Font Size Especifica o tamanho do fonte em pontos.

Font Style Especifica o estilo do fonte.

Font Spacing Especifica a largura do fonte.

Font Weight Especifica o peso da luminosidade do fonte.

Foreground Color Especifica a cor de primeiro plano do item.

Background Color Especifica a cor de fundo do item.

Fill Pattern Especifica o padrão de preenchimento para o item.

Character mode Logical Attribute

Especifica o nome do arquivo de recursos Oracle Terminal, que seta os atributos quando executado em modo caracter.

White on Black Especifica se o item deve ser mostrado de cor branca em fundo preto (em dispositivos monocromáticos).

Current Record Visual Attribute Group

Especifica o nome de um atributo visual, previamente definido, para utilizar no item quando for o registro corrente.

Number of Itens Displayed

Define o número de ocorrências de um item.

DBC Database Company 6

Page 95: Oracle Forms Builder 6

Produzindo Triggers

Alterando cores e fontes

Utilize a propriedade Visual Attribute Group para definir cores e fontes para um item texto. O atributo visual é um conjunto de propriedades que podem ser aplicadas a um objeto do Oracle Forms.

Existem dois tipos diferentes de atributos visuais.

Tipos de Atributos Visuais

Uso

Default Atributo visual default. Utiliza definições default, podendo setar algumas propriedades do Windows.

Named Especifica o nome de um atributo visual, pré-definido, que pode ser utilizado por vários objetos.

DBC Database Company 7

Page 96: Oracle Forms Builder 6

Produzindo Triggers

Controlando os dados em um text item

Utilize as seguintes propriedades de dados de um Text Item para controlar o modo como os dados serão mostrados e inseridos:

Data Properties Descrição

Synchronize with Item Especifica o nome de um item a partir do qual este item copia seu valor. Esta propriedade significa que você pode ter dois itens em um bloco que simultaneamente representam o mesmo valor.

Data Type Determina o tipo de dado Oracle permitido como entrada para este item.

Maximum Length Define o número máximo de caracteres permitidos para este item. Geralmente corresponde a largura da coluna da tabela base.

Fixed Length Especifica se o usuário necessita preencher o item completamente antes de poder se mover para outro item.Fixed Length é freqüentemente utilizado em conjunto com a propriedade Auto Skip.

Required Determina se o item é obrigatório.

Format Mask Define o formato da máscara para o item.

Lowest Allowed Value

Especifica o valor mínimo permitido para este item.

Highest Allowed Value

Especifica o valor máximo permitido para este item.

Initial Value Especifica o valor default para o item a cada novo registro.

Copy Value from Item Especifica o bloco e o item utilizado como fonte para o valor deste item. Utilizado quando da existência de relações entre blocos.

DBC Database Company 8

Page 97: Oracle Forms Builder 6

Produzindo Triggers

Formatando itens

A máscara de formatação permite que você especifique o formato pelo qual o valor do item será visualizado.

Utilize padrões SQL de formatação para datas e números. Por exemplo: DD/MM/YY e 99,999.99.

Definindo um valor default

Utilize uma das seguintes opções para definir um valor default para um item:

Tipo Descrição e exemplo

Valor Valor simples. Exemplo:340.

Variável de sistema Exemplo de utilização de variáveis de sistema:$$DATE$$ - data do sistema operacional no formato DD-MON-YY$$DATETIME$$ - data do sistema operacional no formato DD-MON-YYYY hh:mi:[ss]$$TIME$$ - hora do sistema operacional no formato hh:mi[:ss]$$DBDATE$$ - data do Banco de dados no formato DD-MON-YY$$DBDATETIME$$ - data do Banco de dados no formato DD-MON-YYYY hh:mi:[ss]$$DBTIME$$ - hora do Banco de dados no formato hh:mi[:ss]

Variável Global Exemplo de utilização de variáveis globais::GLOBAL.CODIGO_DO_PRODUTO

Item do Form Exemplo de utilização de itens do módulo form::PEDIDOS.CODIGO

Sequence Exemplo de utilização de valores de seqüências::SEQUENCE.PEDIDOS_CODIGO_SQ.NEXTVAL

DBC Database Company 9

Page 98: Oracle Forms Builder 6

Produzindo Triggers

Alterando o comportamento de navegação

Você pode alterar a seqüência de navegação dos itens no Object Navigator. Como as entradas de itens são mostradas na ordem de navegação basta selecionar o item e arrasta-lo para a posição desejada na seqüência de navegação.

Para forçar a navegação de um item seta-se as seguintes propriedades dele:

Navigation Descrição

Enabled Determina se é possível navegar e manipular o item com o mouse.

Keyboard Navigable Determina se é possível navegar para o item com as teclas de função ou itens de menu.

Next Navigation Item Determina para qual item a navegação será feita quando for selecionado Field -> Next ou for usada a tecla [Next Item].

Previous Navigation Item

Determina para qual item a navegação será feita quando for selecionado Field -> Previous ou for uasada a tecla [Previous Item].

DBC Database Company 10

Page 99: Oracle Forms Builder 6

Produzindo Triggers

Setando as propriedades Keyboard Navigable e Enabled

Keyboard Navigable

Enabled Comportamento da Navegação

Yes YesO item é incluído na navegação default, através de teclas e menu, e pode ser navegado e manipulado pelo mouse.

No YesO item é excluído da navegação default, através de teclas e menu, mas pode ser navegado e manipulado pelo mouse.

No NoO item é excluído da navegação default e não pode ser navegado ou manipulado pelo mouse.

Yes NoO item é excluído da navegação default e não pode ser navegado ou manipulado pelo mouse.Neste caso, a propriedade Keyboard Navigable é efetivamente setada para No.

Obs.:

Se você setar a propriedade Enabled para No o item será visualizado em cor cinza.

DBC Database Company 11

Page 100: Oracle Forms Builder 6

Produzindo Triggers

Alterando o relacionamento do item com o banco de dados

Você pode alterar a maneira como o item interage com a coluna correspondente na tabela base do Banco de dados, setando as seguintes propriedades:

Database Properties Descrição

Database Item Determina se o valor do item está armazenado em uma coluna da tabela base do bloco.

Column Name Especifica o nome da coluna origem, no banco, a qual o item representa.Primary Key Determina se o item é baseado em uma coluna que faz parte da Primary Key

da tabela base para o bloco.Insert Allowed Determina se o item permite a inserção de valores. Esta propriedade se

aplica somente para novos registros.Update Allowed Determina se o item permite a atualização de valores.Query Allowed Determina se o item permite a utilização de critérios de consulta sobre ele.

Query Length Define o tamanho máximo para um argumento ou expressão de consulta sobre o item. Não pode ser definido um valor menor do que Maximum Length, a não ser zero.

Case Insensitive Query

Determina se a diferença entre maiúsculas e minúsculas deve ser reconhecida durante o processo de consulta. Yes: não leva em consideração o Case. No: obedece rigidamente o Case.

Update Only if NULL Determina se o item permite atualização somente quando o valor corrente é nulo (NULL). Esta propriedade se aplica somente a registros já existentes.

Lock Record Determina se o registro é travado (locked) quando o item é modificado. Esta propriedade se aplica somente a itens não pertencentes a tabela base.

DBC Database Company 12

Page 101: Oracle Forms Builder 6

Produzindo Triggers

Adicionando funcionalidades a um item

Você pode mudar a funcionalidade de um item através das seguintes propriedades:

Functional Properties

Descrição

Case Restriction Upper: obriga a informação de letras maiúsculas.Lower: obriga a informação de letras minúsculas.Mixed: aceita a informação de letras minúsculas e maiúsculas.

Justification Determina o critério de alinhamento do item.

Multi-LIne Determina se o item pode armazenar mais de uma linha de texto. Utilizado para colunas VARCHAR2 e LONG.

Wrap Style Determina se um item multi-line continua na próxima linha.None: não continua.Character: continua normalmente.Word: continua sem truncar palavras.

Conceal Data Determina se o valor do item digitado deve ser visível ao usuário.

Keep Cursor Position Mantém a posição do cursor de modo que quando o usuário reentrar no item o cursor voltará a mesma posição.

Automatic Skip Determina se o cursor automaticamente pula para o próximo item ao completar o item.

Show Vertical Scroll Bar

Determina se um item Multi-Line inclui um Scroll Bar.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 13

Page 102: Oracle Forms Builder 6

Produzindo Triggers

Adicionando funções de grupo e fórmulas a um item

É possível adicionar funções e fórmulas a um item, usando as seguintes propriedades:

Calculation Properties

Descrição

Calculation Mode Especifica o que será adicionado ao item:Formula : Habilita uma fórmula ao item;Summary : Habilita uma função de grupo ao item;

Formula Especifica a fórmula do item.

Summary Function Relação das funções de grupo que será assimilada ao item:Avg : Média;Count : Quantidade;Max : Valor máximo;Min : Valor mínimo;Stddev : Desvio padrão;Sum : Soma;Variance : Variância.

Summarized Block Especifica o bloco no qual será executada a função de grupo.

Summarized Item Especifica o item no qual será executada a função de grupo.

Para Sumarizar um item, os seguintes cuidados devem ser tomados:

O bloco sumarizado deve estar com a propriedade Query All Records como Yes. Se o item sumarizado estiver em um bloco de controle, o qual deve possuir a propriedade

Single Record como Yes.

DBC Database Company 14

Page 103: Oracle Forms Builder 6

Produzindo Triggers

Labels associados do item

Prompt Properties Descrição

Prompt Descrição do label do item.

Prompt Display Style Freqüência de visualização do labelHidden: Nunca;First Record: Só no primeiro registro;

All Records : Sempre.

Prompt Justification Determina o critério de alinhamento do label.

Prompt Attachment Edge

Determina o posicionamento do label em relação ao item.

Prompt Alignment Determina o alinhamento do label em relação ao item.

Prompt Attachment Offset

Determina a distância do label em relação ao item.

Prompt Alignment Offset

Determina a margem alinhamento do label em relação ao item.

DBC Database Company 15

Page 104: Oracle Forms Builder 6

Produzindo Triggers

Itens multi-line

Utilize itens multi-line para mostrar:

Endereços Comentátios Descrições

O tipo de dado de um item multi-line deve ser um dos seguintes:

Char Alpha Long

Na criação de um item multi-line considere as seguintes propriedades:

Width Heigth Maximun Length

DBC Database Company 16

Page 105: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 17

Page 106: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo CLIENTES. Remova o item CODIGO_DA_REGIAO do bloco.

2. Controle automaticamente o número do cliente, CODIGO, como único para cada novo cliente, associando a ele a sequence CODIGO_DO_CLIENTE_SQ.

3. Garanta que não seja permitido a inserção neste item, e que ele não tenha navegação interna.

Alterar as propriedades Insert Allowed e Keyboard Navigable para No.

4. Crie um novo item chamado NOME_DO_VENDEDOR (51 caracteres), e posicione-o próximo ao item CODIGO_DO_VENDEDOR. Garanta que NOME_DO_VENDEDOR não esteja associado com a tabela CLIENTES. Não permita inserção, atualização ou consulta neste item e garanta que a navegação só seja possível através do mouse.

5. Renomeie o frame do bloco de clientes para FRAME_CLIENTES. Garanta que a manipulação deste frame não reposicione mais os itens automaticamente.

6. Torne o item OBSERVAÇÃO como Mult-Line, quebrando o texto por palavras.

7. Reposicione os itens e seus labels e acerte os tamanhos. Utilize a tela a seguir como sugestão.

8. Salve e execute o módulo CLIENTES. Experimente o form.

DBC Database Company 18

Page 107: Oracle Forms Builder 6

Produzindo Triggers

9. Abra o módulo PEDIDOS. Renomeie o frame do bloco de pedidos para FRAME_PEDIDOS, do bloco de itens para FRAME_ITENS, e do bloco de estoque para FRAME_ESTOQUE. Garanta que a manipulação neles não reposicionem mais os itens automaticamente.

10. Crie um novo item no bloco PEDIDOS chamado NOME_DO_CLIENTE (50 caracteres), e posicione-o próximo ao item CODIGO_DO_CLIENTE. Garanta que não esteja associado com a tabela PEDIDOS. Não permita inserção, atualização ou consulta neste item e garanta que a navegação só seja possível através do mouse.

11. Crie outro item no bloco PEDIDOS chamado NOME_DO_VENDEDOR (51 caracteres), e posicione-o próximo ao item CODIGO_DO_VENDEDOR. Garanta que ele não esteja associado com a tabela PEDIDOS. Não permita inserção, atualização ou consulta neste item e garanta que a navegação só seja possível através do mouse.

12. Exclua o item QUANTIDADE_ENTREQUE do bloco ITENS.

13. Exclua os seguintes itens do bloco ESTOQUE:

CODIGO_DO_DEPOSITO;

DATA_DE_REABASTECIMENTO;

MOTIVO_DE_FORA_DE_ESTOQUE.

14. Mude o label dos itens dos seguintes blocos:

PEDIDOS: - DATA_DO_PEDIDO para “Data”; - DATA_PREVISAO_DA_ENTREGA para “Entrega”; - CODIGO_DO_CLIENTE para “Cliente”; - CODIGO_DO_VENDEDOR para “Vendedor”.

ITENS: - NUMERO_DO_ITEM para “Item”; - CODIGO_DO_PRODUTO para “Produto”; - PRECO para “Preço”.

ESTOQUE: - CODIGO_DO_PRODUTO para “Produto”; - QUANTIDADE_EM_ESTOQUE para “Estoque”; - QUANTIDADE_MINIMA para “Qtd. Mínima”; - QUANTIDADE_MAXIMA para “Qtd. Máxima”.

15. Defina as propriedades para o item TOTAL do bloco PEDIDOS, de modo que a navegação só seja possível com o mouse. Não permita inserção, atualização ou consulta neste item. Mostre o valor utilizando 9,999,990.99 como máscara, alinhado pela direita.

16. Defina DD/MM/YYYY como máscara para os itens DATA_DO_PEDIDO e DATA_PREVISAO_DA_ENTREGA.

17. Gere, automaticamente, um valor default igual a data do sistema operacional para o item DATA_DO_PEDIDO para cada novo registro de pedido.

DBC Database Company 19

Page 108: Oracle Forms Builder 6

Produzindo Triggers

18. Graranta que os itens CODIGO e DATA_DO_PEDIDO do bloco PEDIDOS, somente sejam navegados com o mouse.

19. Controle automaticamente o número do pedido, CODIGO, como único para cada novo pedido, associando a ele a sequence CODIGO_DO_PEDIDO_SQ.

20. Crie um novo item no bloco ITENS chamado TOTAL_DO_ITEM.

Posicione ao lado do item QUANTIDADE;

Garanta que ele não esteja associado com a tabela ITENS;

Não permita inserção, atualização ou consulta neste item;

Garanta que a navegação só seja possível através do mouse.

Permita somente valores numéricos, a máscara seja 9,999,990.99, e alinhe-o a direita.

Este item deve ser o resultado do item QUANTIDADE * PRECO do bloco ITENS.

21. Crie outro item no bloco ITENS chamado TOTAL_DOS_ITENS.

Posicione abaixo do item TOTAL_DO_ITEM;

Garanta que ele não esteja associado com a tabela ITENS;

Não permita inserção, atualização ou consulta neste item;

Garanta que a navegação só seja possível através do mouse.

Mostre somente uma instância na tela;

Permita somente valores numéricos, a máscara seja 99,999,999,990.00, e alinhe-o a direita.

Este item deve ser o somatório de TOTAL_DO_ITEM do bloco ITENS.

22. Crie um outro item, agora no bloco ESTOQUE chamado TOTAL_EM_ESTOQUE.

Posicione abaixo do item QUANTIDADE_EM_ESTOQUE;

Garanta que ele não esteja associado com a tabela ESTOQUE;

Não permita inserção, atualização ou consulta neste item;

Garanta que a navegação só seja possível através do mouse.

Mostre somente uma instância na tela;

Permita somente valores numéricos, a máscara seja 99,999,999,990.00, e alinhe-o a direita.

Este item deve ser o somatório de QUANTIDADE_EM_ESTOQUE do bloco ESTOQUE.

23. Reposicione os itens, seus labels, e tamanhos. Utilize a tela à seguir como sugestão:

DBC Database Company 20

Page 109: Oracle Forms Builder 6

Produzindo Triggers

24. Execute o forms, teste as alterações e encerre a sessão Forms Builder:

DBC Database Company 21

Page 110: Oracle Forms Builder 6

Oracle Forms Builder 6

8.8. LOVs e EditoresLOVs e Editores

DBC Database Company

Page 111: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Identificar os objetos e mecanismos envolvidos em LOVs. Definir LOVs e associá-las com itens tipo texto em um form. Criar editores e associá-los a itens tipo texto.

DBC Database Company 2

Page 112: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Lista de Valores (LOV)

Uma LOV é um tipo de objeto utilizado para prover ao operador uma lista de valores dinâmica. São definidas a nível de form, ou seja podem ser utilizadas por mais de um item em qualquer bloco do módulo form.

LOVs podem ser:

Dinâmicas - as entradas da lista de valores podem refletir os valores disponíveis, exatamente no momento em que se solicitou a lista. Independentes - pode-se chamar uma mesma lista de vários itens, desde que a mesma lista esteja associada a esses itens. Eficientes - pode-se definir LOVs que reutilizem valores já carregados anteriormente, evitando vários acessos ao Banco de dados. Esta opção somente deve ser utilizada quando os valores da lista são estáticos.

DBC Database Company 3

Page 113: Oracle Forms Builder 6

Produzindo Triggers

Utilizando uma LOV em momento de execução

Você pode identificar facilmente se um item tipo texto possui uma lista de valores associada a ele através do indicador “List of Value” na linha de status do form, quando o cursor está posicionado no mesmo.

Para acionar a lista de valores:

1. Posicione o cursor no item que possui a lista de valores associada.2. Pressione a tecla [List] ou selecione a opção Edit -> Display List do menu ou clique no

botão que aciona a lista de valores, se houver algum definido para esta função.3. Escolha um dos valores oferecidos pela lista. Você pode digitar caracteres para auto-

reduzir a lista ou entrar com um argumento de pesquisa no campo Find.4. Clique em OK ou dê um duplo clique na opção escolhida para recuperar o valor da lista.

DBC Database Company 4

Page 114: Oracle Forms Builder 6

Produzindo Triggers

Definindo uma Lista de Valores

Quando você cria uma LOV existem 3 tipos de objetos envolvidos:

Record Group - objeto utilizado para armazenar o array de valores representados pela lista. Pode ser criado antes ou fazer parte do processo de criação da LOV. LOV - lista de valores propriamente dita. Apresenta os valores, a partir do Record Group, que poderão ser selecionados e passados para os itens do form. Text Itens - item tipo texto do form associado a lista de valores (LOV), a partir do qual a lista de valores poderá ser chamada.

DBC Database Company 5

Page 115: Oracle Forms Builder 6

Produzindo Triggers

Criando uma Lista de Valores (LOV)

Selecione a entrada LOVs no Object Navigator.

Clique no ícone Create . A janela New List-Of-Values (LOV) deverá ser apresentada.

Para criar uma LOV definindo maualmente todas suas propriedades selecione a opção Build a new LOV manually. Selecione Use the LOV Wizard, para cirar uma LOV usando o assistente, escolha esta opção.

A janela de associação de um Record Group será apresentada. Com a opção Existing Record Group, você seleciona um Record Group existente. Com a opção New-Record Group based on a query, você cria um novo Record Group, escolha esta opção.

Defina uma query na seção SQL Query Statement, da janela de definição de Record Group. Com o botão Build SQL Query invoque a ferramenta de criação de consultas, Query Builder. Com o botão Import SQL Query importe uma consulta de um arquivo

externo.DBC Database Company 6

Page 116: Oracle Forms Builder 6

Produzindo Triggers

Escolha as colunas do Record Group que farão parte da LOV.

Defina as propriedades visuais das colunas da LOV: Title: Descrição da coluna; Width: Largura da coluna. Return Value: Quando selecionado um valor na LOV, este retornará no item especificado neste campo. Botão LooK up return item: Mostra uma LOV com todos os itens, para selecionar um item de retorno.

DBC Database Company 7

Page 117: Oracle Forms Builder 6

Produzindo Triggers

Propriedades da janela da LOV

Defina o título da LOV, no campo Title. Defina o tamanho da janela da LOV com os campos Width e Height. Para posicionar a janela da LOV próximo ao item que a invocar, selecione a opção Yes, let

Forms position my LOV automatically, caso contrário defina as posições em coordenadas do canto superior esquerdo da janela da LOV, selecionando No, I want to position it manually.

Propriedades de Processamento da LOV

Retrieve ? rows at a time : Número de registros para armazenamento de buffer. Refresh record group data before displaying LOV: Força a execução da query do Record

Group, a cada chamada da query. Let the user filter records before displaying them : Força a execução de um filtro ao invocar

a LOV, isto para melhorar a performance da consulta dos dados.

DBC Database Company 8

Page 118: Oracle Forms Builder 6

Produzindo Triggers

Selecionando os Itens que invocarão a LOV

Finalizando a criação da LOV

DBC Database Company 9

Page 119: Oracle Forms Builder 6

Produzindo Triggers

Propriedades da LOV

Depois de criar uma LOV é possível definir outras propriedades importantes.

Propriedade Descrição

Name Define um nome apropriado para a LOV.

Title Define um título.

X Position Coordenada do eixo X onde o canto superior esquerdo da janela da lista de valores deve ser apresentada.

Y Position Coordenada do eixo Y onde o canto superior esquerdo da janela da lista de valores deve ser apresentada.

Width Largura da janela da lista. Escolha um tamanho apropriado para conter os dados.

Heigth Altura da janela da lista. Escolha um tamanho apropriado para conter os dados.

Column Mapping Properties

Clicando no botão More é apresentada a janela Column Mapping (será visto a seguir).

Automatic Select Determina se a LOV deve fechar e retornar valores automaticamente quando só existe uma entrada.

Automatic Display Determina se a LOV deve ser chamada automaticamente quando o cursor entrar no item associado ao LOV.

Automatic Refresh Yes: o Record Group re-executa a consulta toda vez que a LOV é chamada.No: o Record Group executa a consulta somente na primeira vez que a LOV é chamada.Obs.: mais eficiente quando os dados são estáticos.

Automatic Skip No retorno da LOV o cursor se posiciona automaticamente no próximo Item.

Automatic Position Tenta posicionar a LOV próximo ao item.

Filter Before Display Determina se será apresentado um diálogo que permite entrar com um critério de pesquisa antes da LOV ser chamada. Este critério é utilizado como restrição adicional na primeira coluna da cláusula SELECT.

DBC Database Company 10

Page 120: Oracle Forms Builder 6

Produzindo Triggers

Mapeando colunas da LOV para itens do bloco

Você pode montar sua lista de valores e especificar que o valor de uma ou mais colunas da LOV retornem em um item especificado no forms, setando as seguintes propriedades:

Propriedade Descrição

Column Names Coluna a ser mapeada.

Return Item Define o valor a ser retornado, podem ser:bloco.item (item do form). GLOBAL.nome_variável (variável global)PARAMETER.nome_parametro (parâmetro do form)<Em Branco> (nenhum valor é retornado).

Display Width Largura da coluna na janela LOV. O valor 0 determina que a coluna fique invisível enquanto o valor fica disponível para ser retornado.

Column Title Cabeçalho para a coluna na janela LOV.

DBC Database Company 11

Page 121: Oracle Forms Builder 6

Produzindo Triggers

Associando uma LOV a um item tipo texto

Depois de criar uma LOV, deve-se associá-la a um item, especificando o nome da LOV nas propriedades do item.

Passos para associar uma LOV a um Item:

1. Selecione o item no Object Navigator.2. No Property Palette do item selecione a propriedade LOV ( no grupo List of Values

(LOV) ).3. Escolha o LOV para este item a partir da lista apresentada.4. Para apresentar a LOV em coordenadas diferentes determine:

List X Position List Y Position

DBC Database Company 12

Page 122: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Editor

Um Editor é um tipo de objeto utilizado para prover ao operador um editor customizado para itens multi-line.

Editores são definidos a nível de form, ou seja podem ser utilizados por mais de um item em qualquer bloco do módulo form.

Todo Text Item já possue um editor default disponível, mas você pode definir o seu próprio Editor para atender uma determinada necessidade.

Criando seu próprio Editor você pode:

Prover uma janela de edição maior. Opcionalmente utilizar um editor externo do sistema operacional.

DBC Database Company 13

Page 123: Oracle Forms Builder 6

Produzindo Triggers

Utilizando um Editor em momento de execução

Para acionar o Editor:

1. Posicione o cursor no item que possui o editor associado.2. Pressione a tecla [Edit] ou selecione a opção Edit -> Edit do menu ou clique no botão

que aciona o editor, se houver algum definido para esta função.3. Edite o texto na janela do Editor.4. Clique em OK para salvar suas mudanças no item tipo texto.

DBC Database Company 14

Page 124: Oracle Forms Builder 6

Produzindo Triggers

Criando um Editor

Selecione a entrada Editors no Object Navigator e clique no ícone Create. A janela de diálogo para a criação de Editor será ser apresentada.

Defina as propriedades do Editor criado no Property Palette do mesmo.

Propriedade Descrição

Title Título do Editor.

Bottom Title Rodapé do Editor.

Width Largura do Editor.

Heigth Altura do Editor.

X Position Coordenado do eixo X onde o canto superior esquerdo do Editor deve ser apresentado.

Y Position Coordenado do eixo Y onde o canto superior esquerdo do Editor deve ser apresentado.

Wrap Style Word, Character ou None.

Vertical Scroll Bar Determina se deve ser criado um Scroll bar vertical.

DBC Database Company 15

Page 125: Oracle Forms Builder 6

Produzindo Triggers

Associando um Editor a um item tipo texto

Depois de criar um Editor você deve associá-lo a um item especificando o nome do Editor nas propriedades do item.

Passos para associar um Editor a um Item:

1. Selecione o item no Object Navigator.2. No Property Palette do item selecione a propriedade Editor (no grupo Editor).3. Escolha o Editor para este item a partir da Lista.

Null - o item utiliza o editor default do Oracle Forms. SYSTEM_EDITOR - o item utiliza o editor do sistema operacional. <nome_editor> - o item utiliza um editor criado pelo Oracle forms Builder.

4. Se você deseja apresentar o Editor em coordenadas diferentes determine: 1. Editor X Position 2. Editor Y Position

DBC Database Company 16

Page 126: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Crie uma Lista de Valores (LOV) para mostrar os clientes e suas descrições. Utilize as colunas CODIGO e NOME da tabela CLIENTES, classifique a consulta por nome. Defina que a coluna CODIGO preencha o item CODIGO_DO_CLIENTE do bloco ITENS. Mude o título “Consulta de Clientes” para a lista de valores. Troque o nome da lista de valores para LOV_DE_CLIENTES e o Record Group para RG_DE_CLIENTES.

2. Crie uma Lista de Valores (LOV) para mostrar os vendedores e suas descrições. Utilize as colunas CODIGO, NOME e SOBRENOME da tabela VENDEDORES, classifique a consulta por nome e sobrenome. Defina que a coluna CODIGO preencha o item CODIGO_DO_VENDEDOR do bloco ITENS. Mude o título “Consulta de Vendedores” para a lista de valores. Troque o nome da lista de valores para LOV_DE_VENDEDORES e o Record Group para RG_DE_VENDEDORES.

3. Crie uma Lista de Valores (LOV) para mostrar os produtos e suas descrições. Utilize as colunas CODIGO e NOME da tabela PRODUTOS, classifique a consulta por nome. Defina que a coluna CODIGO preencha o item CODIGO_DO_PRODUTO do bloco ITENS. Mude o título “Consulta de Produtos” para a lista de valores. Troque o nome da lista de valores para LOV_DE_PRODUTOS e o Record Group para RG_DE_ PRODUTOS.

4. Associe a lista LOV_DE_CLIENTES ao item CODIGO_DO_CLIENTE do bloco ITENS.

5. Associe a lista LOV_DE_VENDEDORES ao item CODIGO_DO_VENDEDOR do bloco ITENS.

6. Associe a lista LOV_DE_PRODUTOS ao item CODIGO_DO_PRODUTO do bloco ITENS.

7. Execute o form e teste a lista de valores criada.

8. Abra o módulo CLIENTES. Crie uma Lista de Valores (LOV) para mostrar os vendedores e suas descrições. Utilize as colunas CODIGO, NOME e SOBRENOME da tabela VENDEDORES, classifique a consulta por nome e sobrenome. Defina que a coluna CODIGO preencha o item CODIGO_DO_VENDEDOR do bloco ITENS. Mude o título “Consulta de Vendedores” para a lista de valores. Troque o nome da lista de valores para LOV_DE_VENDEDORES e o Record Group para RG_DE_VENDEDORES.

9. Associe a lista LOV_DE_VENDEDORES ao item CODIGO_DO_VENDEDOR do bloco CLIENTES.

10. No form CLIENTES crie um editor e associe-o ao item OBSERVACAO do bloco CLIENTES. Coloque o título de “O.B.S.” para o editor e troque o nome do editor para EDITOR_OBSERVACAO. Inclua um Scroll Bar vertical.

11. Execute o form e teste a lista de valores e o editor criados. Encerre a sessão Oracle Forms Builder.

DBC Database Company 17

Page 127: Oracle Forms Builder 6

Oracle Forms Builder 6

9.9. Outros tipos de ItensOutros tipos de Itens

DBC Database Company

Page 128: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Criar um item tipo Check-box. Criar um item tipo List Item. Criar um item tipo Radio Group.

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 129: Oracle Forms Builder 6

Produzindo Triggers

Conceito de item tipo Check-box

Check-box é um tipo de item que possui dois estados “Checked” ou “Unchecked”. Para cada um dos estados existe um valor associado.

Você deve especificar um valor para “Checked” e um valor para “Unchecked” e ainda como os outros valores devem ser processados.

DBC Database Company 3

Page 130: Oracle Forms Builder 6

Produzindo Triggers

Utilizando um Check-box em momento de execução

Como setar valores

Você pode setar valores para itens tipo check-box da seguinte maneira:

pelo input do usuário; pela propriedade Initial Value; por programação.

Como consultar valores

Você pode consultar valores em itens tipo check-box da seguinte maneira:

por valores marcados; por valores desmarcados; ignorando os valores do Check Box no modo Enter Query desabilitando o item através do Shift-Click.

DBC Database Company 4

Page 131: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo Check-box

Um item Check-box pode ser criado da seguinte maneira:

convertendo um item já existente; utilizando o ícone check-box no Layout Editor; usando o ícone Create no Object Navigator.

Passos para converter um item para Check-box

1. Acesse o Property Pallete para o ítem que você deseja converter.2. Altere o tipo do item para Check-box.3. Entre com um valor default para o item.4. Entre com um label para o Check-box.5. Entre com os valores para os estados “Checked” e “Unchecked”6. Defina a propriedade Check Box Mapping of Other Values.

DBC Database Company 5

Page 132: Oracle Forms Builder 6

Produzindo Triggers

Passos para criar um item tipo Check-box no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone Check Box na tool bar do Layout Editor.3. Clique no canvas na posição que você deseja que o Check Box seja mostrado.4. Dê um duplo clique no item tipo Check Box que você criou para acessar o Property

Pallete.5. Entre com um valor default para o item.6. Entre com um label para o Check Box.7. Entre com os valores para os estados “Checked” e “Unchecked”8. Defina a propriedade Check Box Mapping of Other Values.

DBC Database Company 6

Page 133: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo CheckBox

Propriedade Descrição

Item Type Determina o tipo de dado do item.

Label / Prompt Define o label e o Prompt adjacente ao item Check Box.

Access Key Determina que combinação de teclas pode ser usada para navegar e manipular o item.

Mouse Navigate Determina se o Oracle Forms navega para o item quando o usuário clica no item com o mouse. O default é Yes.

Value when Checked Especifica o valor que está associado ao estado “Checked” do item. O valor deve ser compatível com o Data Type especificado.

Value when Unchecked

Especifica o valor que está associado ao estado “Unchecked” do Item. O valor deve ser compatível com o Data Type especificado.

Check Box Mapping of Other Values

Determina como outros valores são processados em uma consulta, quando os registros forem diferentes dos valores associados à “Checked” e “Unchecked”: Not Allowed - são ignorados.Checked - são associados a “Checked” e se forem salvos serão convertidos para este valor.Unchecked - são associados a “Unchecked” e se forem salvos serão convertidos para este valor.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 7

Page 134: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 8

Page 135: Oracle Forms Builder 6

Produzindo Triggers

Tratando valores nulos em itens tipo Check Box

Se a coluna em que o item está baseado permite nulos, você pode tratá-los:

Setando a propriedade Check Box Mapping of Other Values; Setando o estado “Checked” ou “Unchecked”. Para representar nulo (NULL), basta permitir que o valor não seja preenchido; Ignorando o Check Box no modo Enter Query (Utilize Shift-Clique).

DBC Database Company 9

Page 136: Oracle Forms Builder 6

Produzindo Triggers

Conceito de item tipo List

List é um tipo de item que apresenta um conjunto de valores pré-definidos para escolha. Você utiliza um item tipo List, em momento de execução, para selecionar somente um valor. A lista de elementos a escolher é mutuamente exclusiva. Um e somente um elemento pode ser selecionado por vez.

Estilos de itens tipo List

Estilo Descrição

Pop List Item com um botão icônico conjugado do lado direito. Clique no Pop List para ver a lista de elementos pré-definidos. Não é permitida a digitação de valores.

T-List Item com um scroll bar conjugado ao lado direito. Utilize o scroll bar para ver a lista de elementos.

Combo Box Item com um botão icônico ao seu lado direito, mas não conjugado. Clique no botão para ver a lista de elementos. Permite a digitação de valores.

DBC Database Company 10

Page 137: Oracle Forms Builder 6

Produzindo Triggers

Setando valores para um List Item em momento de execução

Você pode setar o valor de um List Item da seguinte maneira:

Pelo input do usuário, selecionando o elemento da lista; Por digitação (somente para Item List do estilo Combo box); Por programação; Definindo um valor default para o item.

DBC Database Company 11

Page 138: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo List

Um item tipo List pode ser criado:

Convertendo um item já existente; Utilizando o Layout Editor; Usando o Object Navigator.

Passos para converter um item para List Item

1. Acesse o Property Pallete para o item que você deseja converter.2. Altere o tipo de item para List Item.3. Selecione a propriedade Elements in List. Clique em More... , o diálogo List Elements

irá aparecer.4. Entre com o primeiro elemento que você deseja que apareça na lista.5. Entre com valor para o elemento corrente selecionado na lista de elementos na

propriedade List Item Value.6. Entre com outros elementos da lista e valores repetindo os passos 4 e 57. Entre com um valor default para o Item.8. Defina a propriedade Mapping of Other Values.

DBC Database Company 12

Page 139: Oracle Forms Builder 6

Produzindo Triggers

Passos para criar um item tipo List Item no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone List Item na tool bar do Layout Editor.3. Clique no canvas na posição que você deseja que o List Item seja mostrado.4. Dê um duplo clique no item tipo List que você criou, para acessar o Property Pallete.5. Selecione a propriedade Elements in List. Clique em More... , o diálogo List Elements

irá aparecer.6. Entre com o primeiro elemento que você deseja que apareça na lista.7. Na propriedade List Item Value, entre com o valor para o elemento corrente. 8. Entre com os outros elementos e valores repetindo os passos 6 e 7.9. Entre com um valor default para o item.10. Defina a propriedade Mapping of Other Values.

DBC Database Company 13

Page 140: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo List

Propriedade Descrição

Item Type Determina o tipo de dado do item.

Access Key Determina que combinação de teclas pode ser usada para navegar e manipular o item.

List Style Determina o estilo de interface da lista. Escolha entre Pop-List, T-List ou Combo-Box.

Mapping of Other Values

Determina como os outros valores são processados. Escolha entre:Deixar o valor em branco - ignora outros valores além dos definidos na lista. No processamento de consultas, os registros com valores diferentes dos associados `a lista são ignorados.Associar com o um dos elementos da lista ou definir um valor - no processamento de consultas, os registros com valores diferentes dos associados à lista são associados ao elemento da lista especificado. Se forem salvos os valores serão convertidos para o valor associado.

Elements in List Clique no botão More... para abrir o diálogo List Elements.List Elements - especifica o label do elemento da lista.List Item Value - especifica o valor associado ao elemento corrente da lista de elementos.

Mouse Navigate Determina se o Oracle Forms navega para o item quando o usuário clica no item com o mouse. O default é Yes.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 14

Page 141: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 15

Page 142: Oracle Forms Builder 6

Produzindo Triggers

Tratando valores nulos em itens tipo List

Se a coluna em que o item está baseado permite nulos você pode tratá-los criando explicitamente um elemento da lista associado ao valor nulo (NULL).

Se este não for criado, o Oracle Forms criará implicitamente um elemento para representar os nulos.

Pop List - mostra um elemento vazio. T-list - mostra a lista sem nenhum elemento selecionado. Combo-Box - mostra um elemento vazio.

DBC Database Company 16

Page 143: Oracle Forms Builder 6

Produzindo Triggers

Conceito de itens Radio Groups

Radio Groups são um conjunto de radio buttons. Cada radio button representa um valor diferente. Os radio buttons pertencentes a um Radio Group são mutuamente exclusivos.

Usos e benefícios de um Radio Group

Mostrar mais do que dois valores estáticos. Prover uma alternativa aos itens tipo List com 2 ou 3 escolhas. Prover uma alternativa aos itens prazo tipo Check Boxes diferentes de SIM/NÃO, ON/OFF,

YES/NO, etc.Para mais do que 3 ou 4 escolhas, não use Radio Groups; Para estes casos utilize item tipo List.

Setando valores para um Radio Group em momento de execução

Você pode setar o valor de um Radio Group da seguinte maneira:

Pelo input do usuário, selecionando o elemento da lista; Por programação; Definindo um valor default para o item.

Consultando valores em um item Radio Group:

Ignore o valor de um Radio Group em modo Enter Query garantindo que nada foi selecionado, com Shift-Click.

DBC Database Company 17

Page 144: Oracle Forms Builder 6

Produzindo Triggers

Criando um item Radio Group

Você pode criar um item Radio Group da seguinte maneira:

Convertendo um Item já existente. Utilizando o ícone Radio Button no Layout Editor. Usando o ícone Create no Object Navigator.

Passos para converter um item para Radio Group

1. Acesse o Property Pallete para o item que você deseja converter.2. Altere o tipo de item para Radio Group.3. Defina a propriedade Mapping of Other Values.4. Especifique o valor default e as demais propriedades do Radio Group5. Expanda a entrada do Radio Group criado no Object Navigator. A entrada dos Radio

Buttons deve aparecer.6. Selecione a entrada Radio Buttons, clique no ícone Create. E Radio Button será

criado no Object navigator. 7. Acesse o Property Palette correspondente ao Radio Button criado, entre com o label

e o valor para o Radio Button.8. Especifique as demais propriedades do Radio Button. 9. Crie outros Radio Buttons repetindo os passos 5,6 e 7

DBC Database Company 18

Page 145: Oracle Forms Builder 6

Produzindo Triggers

Passos para criar um Radio Button pelo Layout editor

1. Acesse o Layout Editor.

2. Clique no ícone Radio Button na tool bar do Layout Editor.3. Clique no canvas na posição que você deseja que o Radio Button seja mostrado.4. Se o seu form já possuir um Radio Group definido no bloco corrente, o diálogo

Radio Group irá aparecer para você decidir se o novo radio button deve fazer parte do existente ou se deve ser criado um novo Radio Group.

5. Dê duplo clique no Radio Button que você criou para acessar o Property Pallete.6. Entre com o label e o valor para o Radio Button.7. Especifique as demais propriedades do Radio Button. 8. Crie outros Radio Buttons repetindo os passos 2,3,4,5,6 e 7

DBC Database Company 19

Page 146: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo Radio Group

Miscellaneous Properties

Descrição

Data Type Determina o tipo de dado do item.

Access Key Determina que combinação de teclas pode ser usada para navegar e manipular este item.

Mapping of Other Values

Determina como outros valores são processados. Escolha entre:Deixar o valor em branco - ignora outros valores além dos definidos na lista. No processamento de consultas, os registros com valores diferentes dos associados aos Radio Buttons são ignorados.Associar o valor com o nome de um Radio Button ou definir um valor - no processamento de consultas, os registros com valores diferentes dos da lista são associados ao Radio Button especificado. Se forem salvos serão convertidos para o valor associado ao elemento da lista.

Mouse Navigate Determina se o Oracle Forms navega para o item quando o usuário clica no item com o mouse. O default é “TRUE”.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 20

Page 147: Oracle Forms Builder 6

Produzindo Triggers

Tratando valores nulos em um Radio Group

Se a coluna em que o item está baseado permite valore nulos você pode tratá-los:

Criando explicitamente um elemento da lista associado ao valor nulo (null); Deixando a propriedade Ignore Mapping of Other Values não preenchida; Associando Mapping of Other values com um dos Radio Buttons pelo seu nome ou pelo valor especificado.

DBC Database Company 21

Page 148: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo CLIENTES. Converta o Item CATEGORIA_DE_CREDITO para um Item do tipo List com estilo Pop List. Adicione os elementos “Ruim”, “Bom” e “Excelente” para representar os valores do Banco de dados ( “RUIM”, “BOM”, e “EXCELENTE” ). Mostre quaisquer outros valores como “Ruim”. Garanta que os novos registros mostrem “BOM” como valor default. Troque o List Item para o estilo Combo Box para ver a diferença. Acerte o tamanho no Layout Editor.

2. Execute e teste o form.

3. Abra o módulo PEDIDOS. Converta o Item PEDIDO_PREENCHIDO para um Item do tipo Check Box. Defina o estado “Checked” para representar o valor “S” e “Unchecked” para representar o valor “N”. Garanta que os regisitros novos tenham “N” como valor default. Permita que somente registros com valores “S” ou “N” sejam mostrados no Layout Editor. Acerte o tamanho do item de modo que o label “Pedido Preenchido” apareça à direita do item.

4. Converta o Item TIPO_DE_PAGAMENTO para um Radio Group. Adicione Radio Buttons para “Avista” e “A prazo” representando os valores “AVISTA” e “PRAZO”.

Defina teclas de acesso como:

“V” para “Avista”; “P” para “A prazo”.

5. Garanta que os novos registros mostrem “A vista” como valor default.

6. Execute e teste o form. Encerre a sessão Oracle Forms Builder.

DBC Database Company 22

Page 149: Oracle Forms Builder 6

Oracle Forms Builder 6

10.10. Itens tipo Não InputItens tipo Não Input

DBC Database Company

Page 150: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Criar itens tipo Display. Criar itens tipo Image. Criar itens tipo Sound. Criar itens tipo Button (Botões).

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 151: Oracle Forms Builder 6

Produzindo Triggers

Conceito de itens Não Input

Itens visuais ou não input são itens que o usuário não entra diretamente com valores.

Itens Não Input que mostram dados

Itens tipo Display. Itens tipo Image. Itens tipo Sound.

Itens Não Input que não mostram dados

Itens tipo Button.

DBC Database Company 3

Page 152: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Itens tipo Display

Display é um tipo de item similar ao item tipo Text com exceção de que não pode ser editado ou navegado em momento de execução. Um item Display é utilizado somente para leitura (consulta). Seu valor deve ser atribuído por programação.

Usos de itens tipo Display

Mostrar informações adicionais baseadas em dados não existentes na tabela base do bloco. Mostrar valores derivados. Conservar valores em memória.

DBC Database Company 4

Page 153: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo Display

Um item Display pode ser criado:

Convertendo um item já existente; Utilizando o Layout Editor; Usando o Object Navigator;

Passos para converter um item para Display

1. Acesse o Property Pallete para o item que você deseja converter.2. Altere o tipo de item para Display.3. Defina as propriedades conforme sua necessidade.4. Clique em OK.

Passos para criar um item tipo Display no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone Display Item na Tool Bar do Layout Editor.3. Clique no canvas na posição que você deseja que o item Display seja mostrado.4. Dê um duplo clique no item tipo Display que você criou para acessar o Property

Pallete.5. Defina a propriedades conforme sua necessidade.6. Clique em OK.

DBC Database Company 5

Page 154: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo Display

O conjunto de propriedades de um Display item é o mesmo subconjunto das propriedades de um Text item.

DBC Database Company 6

Page 155: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Itens tipo Image

Image é um tipo de item que permite mostrar e armazenar imagens.

Um item tipo Image pode ser baseado em uma coluna da tabela base ou não.

Utilizando itens tipo Image

Você pode preencher um item tipo Image de duas formas: Através de colunas LONG RAW ou LOB da tabela base do bloco; Programando através de Triggers e built-ins.

DBC Database Company 7

Page 156: Oracle Forms Builder 6

Produzindo Triggers

Armazenando imagens

Você pode armazenar e utilizar uma imagem de duas formas:

Local Descrição

Database A imagem é armazenada em uma coluna LONG RAW ou LOBs podendo ter até 2 ou 4 GigaBytes. A imagem é lida pelo processo de FETCH default do bloco.

File A Imagem é armazenada em um arquivo qualquer, dentro dos formatos de imagem suportados. A imagem é lida através de programacão utilizando Triggers e Built-ins.

Formatos de imagens suportados:

Formato Descrição Boilerplate Image item

BMP Windows e OS/2 Bit Map Picture Y Read / WriteCALS CALS type Raster Y Read / WriteGIF Compuserve Y Read / WriteJFIF JPEG File Interchange Format Y Read / WriteTIFF Tag Image File Format Y Read / WritePCX IBM PC Paintbrush Y ReadPICT Macintosh Quickdraw Picture Y Read / WriteRAS Sun Raster Y Read / WritePCD Kodak Photo CD Y Read

DBC Database Company 8

Page 157: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo Image

Um item Image pode ser criado da seguinte maneira:

Convertendo um item já existente; Utilizando o Layout Editor; Usando o Object Navigator.

Passos para converter um item para Image

Acesse o Property Pallete para o item que você deseja converter. Altere o tipo de item para Image Defina as propriedades do item.

Passos para criar um item tipo Image no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone Image Item na Tool Bar do Layout Editor.3. Clique no canvas na posição que você deseja que a imagem seja mostrada.4. Dê um duplo clique no item tipo Image que você criou para acessar o Property Pallete.5. Defina as propriedades do item.

DBC Database Company 9

Page 158: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo Image

Propriedade Descrição

Image Format Especifica o formato da imagem.

Image Depth Especifica a formação de cores da imagem.

Compression Quality Especifica se a imagem deve ser armazenada no formato comprimido, se for armazenado no Banco.

Display Quality Determina a resolução utilizada para mostrar a imagem. Permite o controle entre qualidade e performance. Escolha entre: High, Medium e Low.

Show Palette Determina se deve aperecer ou não, em momento de execução, a paleta de manipulação de imagem.

Sizing Style Determina como a imagem deve ser mostrada quando o tamanho da imagem é diferente do tamanho do item. Escolha entre:Crop - corta a imagem de modo a aparecer no retângulo.Adjust - realiza escala da imagem para preencher o retângulo.

Show Horizontal Scroll Bar

Habilita um Scroll Bar horizontal na imagem.

Show Vertical Scroll Bar

Habilita um Scroll Bar vertical na imagem.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 10

Page 159: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 11

Page 160: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Itens tipo Sound

Sound é um tipo de item que permite rodar e armazenar sons.

Um item tipo Sound pode ser baseado em uma coluna da tabela base ou não.

Utilizando itens tipo Sound

Você pode usar um item tipo Sound de duas formas:

• através de uma coluna LONG RAW da tabela base do bloco;• programando através de Triggers e built-ins.

DBC Database Company 12

Page 161: Oracle Forms Builder 6

Produzindo Triggers

Armazenando sons

Você pode armazenar e utilizar um som de duas formas:

Local Descrição

Database O som é armazenado em uma coluna LONG RAW podendo ter até 2 GigaBytes. O som é lido pelo processo de FETCH default do bloco.

File O som é armazenado em um arquivo qualquer, dentro dos formatos de sons suportados. O som é lido através de programacão utilizando Triggers e Built-ins.

Formatos de sons suportados:

AU; AIFF; AIFF-C; WAV.

DBC Database Company 13

Page 162: Oracle Forms Builder 6

Produzindo Triggers

Criando um item tipo Sound

Um item Sound pode ser criado:

Convertendo um item já existente; Utilizando o Layout Editor; Usando o Object Navigator.

Passos para converter um item para Sound

1. Acesse o Property Pallete para o item que você deseja converter;2. Altere o tipo de item para Sound;3. Defina as propriedades do item.

Passos para criar um item tipo Sound no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone Sound Item na Tool Bar do Layout Editor.3. Clique no canvas na posição que você deseja que o som seja mostrado.4. Dê um duplo clique no item tipo Sound que você criou para acessar o Property Pallete.5. Defina as propriedades do item.

DBC Database Company 14

Page 163: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um item tipo Image

Propriedade Descrição

Sound Format Especifica o formato do som.

Audio Channels Especifica o número de canais do som.Automatic / Mono / Stereo.

Compress Especifica se o som deve ser armazenada no formato comprimido, se for armazenado no banco.

Sound Quality Determina a qualidade utilizada para rodar o som. Permite o controle entre qualidade e performance. Escolha entre: Automatic, Highest, High, Medium, Low e Lowest.

Show :Play button;Record button;Rewind button;Fast Forward button;Volume Control;Time Indicator;Slider Button

Determina se as opções de manipulação de sons, devem aperecer ou não, em momento de execução.

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

DBC Database Company 15

Page 164: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 16

Page 165: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Itens tipo Button

Button é um objeto de interface que você pressiona para iniciar uma ação.

Um botão é geralmente apresentado como um retângulo com um label ou um ícone.

Ações típicas com botões

Navegar. Mostrar uma lista de valores. Chamar um Editor. Abrir outra janela. Salvar dados (Commit). Executar uma consulta. Iniciar cálculos. Encerrar a sessão.

DBC Database Company 17

Page 166: Oracle Forms Builder 6

Produzindo Triggers

Criando um Button

Um botão pode ser criado da seguinte maneira:

Utilizando o Layout Editor. Utilizando o Object Navigator.

Passos para criar um Button no Layout Editor

1. Acesse o Layout Editor.

2. Clique no ícone Button na Tool Bar do Layout Editor.3. Clique no canvas na posição que você deseja que o Button seja mostrado.4. Dê um duplo clique no Button que você criou para acessar o Property Pallete.5. Defina as propriedades do botão.

DBC Database Company 18

Page 167: Oracle Forms Builder 6

Produzindo Triggers

Propriedades específicas de um Button

Propriedade Descrição

Label Especifica o texto que deve aparecer no label do botão.

Mouse Navigate Determina se o Oracle Forms navega para o item quando o usuário clica no item com o mouse. O default é Yes.

Default Button Determina se este é o botão default para o bloco. Isto significa que pressionando a tecla especificada para botão default, o botão é acionado sem a necessidade de navegar com o uso do mouse.

Iconic Determina se o botão será mostrado como um ícone ou um label.

Icon Filename Para botões icônicos, especifica o nome do arquivo que contém o ícone. (Não entre com a extensão do arquivo aqui).

Popup Menu Associa um Menu do tipo Popup, criado na entrada Popup Menus, ao item. No momento de execução do forms, este deve ser chamado com um clique no botão da direita do mouse, em cima do item.

Prompt Descrição do label do item.

DBC Database Company 19

Page 168: Oracle Forms Builder 6

Produzindo Triggers

Incluindo mensagens de ajuda

Miscellaneous Properties

Descrição

Hint Especifica a mensagem que deve aparecer na linha de mensagem como ajuda sobre o item corrente.

Display Hint Automatically

Determina o critério para hint.Yes: Mostra a mensagem de hint automaticamente ao tornar o item corrente.

Tooltip Especifica a mensagem de help, do estilo Windows, quando o cursor do mouse estiver em cima do item.

Tooltip Visual Attribute Group

Determina o atributo visual para o Tooltip.

DBC Database Company 20

Page 169: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Crie um item tipo Display Item chamado “DESCRICAO”, coloque-o a direita do item CODIGO_DO_PRODUTO no bloco ITENS. Este item deverá mostrar a descrição do produto quando adicionarmos triggers nos próximos capítulos. Garanta que a propriedade Database Item seja setada para “No”.

2. Salve e execute o form e teste.

3. No módulo PEDIDOS, crie um item tipo IMAGEM chamado IMAGEM_DO_PRODUTO no bloco ITENS. Garanta que as seguintes propriedades sejam setadas:

Database Item: No; Number of Items Displayed: 1; Bevel : Lowered; Keyboard Navigable : No; Sysing Style : “Adjust”.

4. Coloque-o na posição sugerida no exemplo a seguir. Este deverá mostrar a imagem do produto corrente quando adicionarmos triggers nos próximos capítulos.

5. Salve, execute o form e teste as alterações.

DBC Database Company 21

Page 170: Oracle Forms Builder 6

Produzindo Triggers

6. No módulo PEDIDOS. Crie um bloco de controle (não Base Table), chamado CONTROL. Crie um botão chamado BOTAO_LOV_DE_PRODUTOS no bloco CONTROL, coloque-o, na tela, a esquerda do item CODIGO_DO_PRODUTO, utilize a ícone “Listval” para o botão. Defina as seguintes propriedades:

Keyboard Navigable: No; Mouse Navigate: No.

7. Este botão deverá ser utilizado para chamar a lista de valores para o código do produto quando adicionarmos triggers nos próximos capítulos.

8. Abra o módulo CLIENTES. Crie um botão chamado BOTAO_LOV_DE_VENDEDORES no bloco CONTROL, coloque-o, na tela, ao lado do item CODIGO_DO_VENDEDOR, utilize a icone “Listval” para o botão. Defina as seguintes propriedades:

Keyboard Navigable: No; Mouse Navigate: No.

9. Este botão deverá ser utilizado para chamar a lista de valores para o código de vendedor quando adicionarmos triggers nos próximos capítulos.Coloque-o na posição sugerida no exemplo a seguir.

10. Salve, execute o forms e teste-o. Encerre a sessão Oracle Forms Builder.

DBC Database Company 22

Page 171: Oracle Forms Builder 6

Oracle Forms Builder 6

11.11. Windows e CanvasWindows e Canvas

DBC Database Company

Page 172: Oracle Forms Builder 6

Produzindo Triggers

Objetivo

Entender o conceito de windows e content canvas. Entender o relacionamento entre a window e o canvas. Identificar as propriedades de windows e canvas. Mostrar um módulo forms em múltiplas janelas (window). Mostrar um módulo forms em múltiplos layouts. Construir uma Toolbar.

DBC Database Company 2

Page 173: Oracle Forms Builder 6

Produzindo Triggers

Conceito de window, canvas e viewport

Window

É similar a uma moldura de um quadro. O gerenciador de janelas do sistema operacional provê os controles para janelas possibilitando funcionalidades como scroll, movimentação e redimensionamento.

Quando você cria um novo módulo, o Oracle Forms cria automaticamente uma nova janela (window) chamada “WINDOW1”. Você pode criar outras janelas na sua aplicação, pois um módulo forms pode conter mais de uma window.

Canvas

Similar a uma tela em branco sobre a qual um desenho será pintado. É a área sobre a qual são colocados itens, frames, boilerplates textos e boilerplates images.

Viewport

É a área do canvas que é visível em momento de execução. O método utilizado para determinar o tamanho da view depende do tipo de canvas. Um canvas sempre é mostrado na janela a qual ele está associado.

DBC Database Company 3

Page 174: Oracle Forms Builder 6

Produzindo Triggers

Usos e benefícios de uma nova Janela (window) Mostrar dois ou mais content canvas ao mesmo tempo. Mudar de tela sem sair da tela inicial Gerenciar janelas (windows), como por exemplo minimizar uma tela, a qual estará em uma

window

Tipos de window

Você pode criar dois tipos de window:

Tipo Descrição

Modal Window É uma janela restrita que o operador deve responder antes de mover o foco para outra janela.Deve ser encerrada explicitamente antes de passar o controle para outra janela.Torna-se ativa assim que mostrada.Requer um meio de saída explícito.Não podem ser apresentadas mais de uma janela tipo modal ao mesmo tempo.

Modeless Window É uma janela irrestrita que o operador pode mover o foco para outra janela, deixando-a inativa e depois retornar quando achar conveniente.Não necessariamente deve estar ativa quando mostrada.Podem ser apresentadas mais de uma janela tipo modeless ao mesmo tempo.É o tipo de janela default.

DBC Database Company 4

Page 175: Oracle Forms Builder 6

Produzindo Triggers

Exemplo de window

O forms a seguir possui duas windows:

“Pedidos e Itens”; “Estoque”.

DBC Database Company 5

Page 176: Oracle Forms Builder 6

Produzindo Triggers

Criando uma window

Para criar uma nova window é simples, basta:

Selecionar a entrada Windows no Object Navigator

E clicar no ícone Create , na toolbar.

DBC Database Company 6

Page 177: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de uma window

Physical Property

Propriedade Descrição

X Position Determina a coordenada do eixo x para a janela.

Y Position Determina a coordenada do eixo y para a janela.

Width Determina a largura da janela.

Heigth Determina a altura da janela.

Bevel Determina o tipo de borda da janela.

Show Horizontal Scroll Bar

Determina se a janela deve possuir um Scroll Bar horizontal.

Show Vertical Scroll Bar

Determina se a janela deve possuir um Scroll Bar vertical.

GUI Hint Property

Propriedade Descrição

Close Allowed Habilita o botão close da janela, mas, para executá-lo é necessário programar-se através de trigger.

Move Allowed Determina se o usuário pode mover a janela em momento de execução.Resize Allowed Possibilita o usuário redimensionar a janela em momento de execução.Minimize Allowed Determina se o usuário pode minimizar a janela.

Minimize Title Especifica o título da janela quando minimizada.

Inherit Menu Determina se a janela deve mostrar o menu corrente do form.

DBC Database Company 7

Page 178: Oracle Forms Builder 6

Produzindo Triggers

Functional Property

Propriedade Descrição

Title Especifica o título da janela que deve aparecer na barra da janela.

Primary Canvas Especifica o nome do canvas a ser mostrado na janela quando esta é chamada por programa.

Vertical Toolbar Canvas

Determina se uma toolbar vertical deve ser mostrada nesta janela.

Horizontal Toolbar Canvas

Determina se uma toolbar horizontal deve ser mostrada nesta janela.

Window Style Determina o estilo da janela. Escolha entreDocument - a janela deve estar sempre dentro da MDI parent Window.Dialog - a janela pode ser movimentada ou ser redimensionada para fora da MDI parent Window. (Document é o default).

Modal Determina se a janela é do tipo Modal, caso contrário esta será do tipo Modeless.

Hide on Exit Determina que ao navegar para uma outra window, se esta for do tipo Modeless, o forms deve esconde-la.

Icon Filename Especifica o nome do ícone utilizado para a janela minimizada.

DBC Database Company 8

Page 179: Oracle Forms Builder 6

Produzindo Triggers

Tipos de canvas

Existem 5 (cinco) tipos de canvas, são eles:

Content Stacked Vertical Tollbar Horizontal Tollbar Tab

DBC Database Company 9

Page 180: Oracle Forms Builder 6

Produzindo Triggers

Conceito de content canvas

Um Content Canvas é um canvas que é base para uma janela, ocupando todo o seu conteúdo. Geralmente é criado pelo menos um Content Canvas para cada janela em sua aplicação.

Somente um Content Canvas pode ser mostrado em uma janela por vez, em momento de execução.

DBC Database Company 10

Page 181: Oracle Forms Builder 6

Produzindo Triggers

Exemplo de content canvas

DBC Database Company 11

Page 182: Oracle Forms Builder 6

Produzindo Triggers

Criando um Content Canvas

Implicitamente

Existem 2 formas de criar um Content Canvas implicitamente

Layout wizard: Quando você usa o Layout wizard para arranjar os itens no canvas, o wizard abilita você para selecionar um novo canvas na página de canvas. Neste caso, o wizard cria um novo canvas com um nome defaul de CANVASn

Layout editor: Quando você está num canvas em um módulo forms e você invocar o Layout editor, o Forms Builder criará um canvas defaul o qual você poderá por itens.

Explicitamente

É muito simples criar um canvas tipo content explicitamente, basta:

Selecionar a entrada Canvases no Object Navigator.

E clicar no ícone Create , na toolbar.

Alterando o tamanho de um content canvas

Você pode alterar o tamanho de um Content Canvas modificando o tamanho da janela que ele aparece. Quando o operador redimensiona a janela, o tamanho da view do canvas é alterada dinamicamente.

A Viewport pode ser menor que o canvas sem eliminar os itens fora da view. O Oracle Forms permite rolar ( Scroll ) o canvas de forma que o item se torne visível.

DBC Database Company 12

Page 183: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um content canvas

General Property

Propriedade Descrição

Canvas Type Especifica o tipo do canvas ( para um content canvas, esta propriedade deve ser setada para Content.

Physical Property

Propriedade Descrição

Window Determina em qual janela o canvas será mostrado.

Viewport X Position on Canvas

Especifica a coordenada do eixo X do topo esquerdo da view no canvas.

Viewport Y Position on Canvas

Especifica a coordenada do eixo Y do topo esquerdo da view no canvas.

Width Determina a largura do canvas.

Heigth Determina a altura do canvas.

Bevel Determina o tipo de borda do canvas.

DBC Database Company 13

Page 184: Oracle Forms Builder 6

Produzindo Triggers

Functional Property

Propriedade Descrição

Raise on Entry Determina se o canvas é colocado à frente ao se navegar para um item dele quando outro canvas é mostrado na mesma janela.

DBC Database Company 14

Page 185: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Stacked canvas

Um Stacked Canvas é um canvas que não é base para uma janela, compartilhando a janela com um content canvas e qualquer número de outros stacked canvas. Geralmente o stacked canvas é menor que a janela em que ele aparece.

Vários Stacked Canvas podem ser mostrados em uma janela ao mesmo tempo em momento de execução.

Usos e benefícios de um Stacked Canvas

Criar um efeito de sobreposição dentro de uma mesma janela. Criar um efeito de cascata dentro de uma mesma janela. Mostrar informações adicionais. Mostrar um Help sensível ao contexto. Esconder informações.

DBC Database Company 15

Page 186: Oracle Forms Builder 6

Produzindo Triggers

Criando um Stacked Canvas

Você pode criar um Stacked Canvas pelo Object Navigator ou pelo Layout Editor.

Criando um Stacked Canvas pelo Object Navigator

Repita os passos para criação de um Content Canvas. Altere a propriedade Canvas Type para Stacked.

Criando um Stacked canvas pelo Layout Editor

Abra a tela de um Content Canvas, pelo Layout Editor.

Clique no ícone Stacked Canvas , na toolbar, posicione e dimencione-o dentro do canvas Content.

DBC Database Company 16

Page 187: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um Stacked canvas

Propriedade Descrição

Width Determina a largura do Stacked Canvas.

Heigth Determina a altura do Stacked Canvas.

Viewport X Position Especifica a coordenada do eixo X do Stacked Canvas.Viewport Y Position Especifica a coordenada do eixo Y do Stacked Canvas. Viewport Width Determina a largura da View do Stacked Canvas.

Viewport Heigth Determina a altura da View do Stacked Canvas.

Viewport X Position on Canvas

Especifica a coordenada do eixo X da View em relação ao Canvas.

Viewport Y Position on Canvas

Especifica a coordenada do X da View em relação ao Canvas.

Show Vertical Scroll Bar

Determina se o Stacked Canvas mostra um Scroll Bar vertical.

Show Horizontal Scroll Bar

Determina se o Stacked Canvas mostra um Scroll Bar horizontal.

DBC Database Company 17

Page 188: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Canvas Toolbar

Um Toolbar é um tipo especial de Canvas que é utilizado para criar e possuir botões e outros objetos GUI utilizados freqüentemente como uma barra de ferramentas.

Tipos de Toolbar

Tipo Descrição

Vertical Toolbar O Toolbar é criado e posicionado verticalmente do lado esquerdo ou direito da janela (window).

HorizontalToolbar O Toolbar é criado e posicionado horizontalmente no topo ou na parte inferior da janela (window).

MDI Toolbar Utilizado quando se deseja evitar a criação de mais de um Toolbar para uma aplicação Oracle Forms que utiliza várias janelas.

DBC Database Company 18

Page 189: Oracle Forms Builder 6

Produzindo Triggers

Usos e benefícios de um Toolbar

Prover uma barra de ferramentas padrão para vários canvas mostrados na mesma janela (window).

Diminuir o tempo de manutenção. Incrementar a facilidade de uso da aplicação. Criar aplicações similares no mesmo ambiente. Prover uma alternativa ao menu ou `as teclas de funções para comandar a aplicação.

DBC Database Company 19

Page 190: Oracle Forms Builder 6

Produzindo Triggers

Criando um canvas Toolbar

Para criar um canvas tipo Tollbar, basta:

1. Repita os passos para criação de um Canvas Content2. Altere a propriedade Canvas Type para Horizontal ou Vertical Toolbar.

3. Adicione os botões, e objetos desejados ao toolbar (pelo layout editor).

DBC Database Company 20

Page 191: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um canvas Tollbar

Propriedade Function

Canvas Type Especifica o tipo do canvas ( para um canvas Horizontal Tollbar, esta propriedade deve ser setada para Horizontal Tollbar.

Window Determina em qual janela o canvas será mostrado.

Width Determina a largura do canvas.

Heigth Determina a altura do canvas.

Associando o Canvas Toolbar a uma determinada Window

Na propriedade da window que você deseja mostrar o toolbar, defina:

Se for Horizontal : a propriedade Horizontal Toolbar; Se for Vertical : a propriedade Vertical Toolbar.

Associando o Canvas Toolbar a todas as Windows do módulo

Na propriedade do módulo que você deseja mostrar o toolbar,defina:

Se for Horizontal : a propriedade Form Horizontal Toolbar; Se for Vertical : a propriedade Form Vertical Toolbar.

DBC Database Company 21

Page 192: Oracle Forms Builder 6

Produzindo Triggers

Conceito de Canvas Tab

Um Tab canvas é também um tipo especial de canvas que é utilizado para melhor organizar e mostrar informações separadas por páginas. Como os Stacked canvas o canvas tipo Tab é mostrado em cima de um canvas do tipo content.

Usos e benefícios de um Canvas Tab

Criar paginas de tela dentro de uma única tela. Mostrar um grande número de informações na mesma tela. Esconder informações. Facilitar o acesso a requisição de informações com um simples clique em uma Tab Page

(página).

DBC Database Company 22

Page 193: Oracle Forms Builder 6

Produzindo Triggers

Criando um Canvas Tab

Você pode criar um Canvas Tab pelo Object Navigator ou pelo Layout Editor.

Criando um Canvas Tab pelo Object Navigator

Repita os passos de criação de um Canvas Content. Altere a propriedade Canvas Type para Tab.

Criando um Canvas Tab pelo Layout Editor

Abra a tela de um Content Canvas, pelo Layout Editor.

Clique no ícone Tab Canvas , na toolbar, posicione e dimencione-o dentro do canvas Content.

DBC Database Company 23

Page 194: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de um Canvas Tab

Tab Canvas Property

Propriedade Descrição

ViewportX / Y

Position

Coordenadas dos eixos X e Y do canvas em relação ao content canvas.

Viewport Width Largura da view (área de visão) do canvas.

Viewport Height Altura da view (área de visão) do canvas.

Tab Style Especifica o estilo da borda das tabs pages.

Tab Attachment Edge Especifica a disposição das tab pages: topo, rodapé, lateral, etc...

Tab page Property

Propriedade Descrição

Label Especifica o texto do label da Tab page

Item Property

Propriedade Descrição

Canvas Especifica o canvas a qual o item será mostrado.

Tab Page Especifica a Tab Page (página) do canvas Tab que o item será mostrado.

DBC Database Company 24

Page 195: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Renomeie o canvas existente para CANVAS_PEDIDOS_E_ITENS. Crie um novo canvas, do tipo Content, chamado CANVAS_ESTOQUES.

2. Reposicione os dados do bloco ESTOQUE para o canvas CANVAS_ESTOQUES. Pelo Object Navigator, arraste o frame para o novo canvas e redimencione-o.

3. Salve e execute o módulo. Navegue para o bloco ESTOQUE. Note que os canvas aparecem na mesma window.

4. Renomeie a window existente para WINDOW_PEDIDOS_E_ITENS, e modifique o seu tamanho, para melhor visualizar o conteúdo do canvas. Defina, que seu canto superior esquerdo fique ligeiramente abaixo e a direita na tela. Posição sugerida: X=10; Y=10 (points).

5. Crie uma nova window, chamada WINDOW_ESTOQUES. Associe o canvas CANVAS_ESTOQUES para ela. e modifique o seu tamanho, para melhor visualizar o conteúdo do canvas. Defina, que seu canto superior esquerdo fique ligeiramente abaixo e a direita na tela. Posição sugerida: X=20; Y=20 (points).

6. Salve, execute e teste o módulo.

7. Ainda no módulo PEDIDOS. Crie um canvas do tipo Toolbar Horizontal chamado TOOLBAR, e associe-o a window WINDOW_PEDIDOS_E_ITENS.

8. Crie 5 botões no bloco CONTROL, como especificado abaixo, e coloque-os no canvas TOOLBAR.

BOTAO_SAIR: Icon Filename = “EXIT”; BOTAO_SALVAR: Icon Filename = “SAVE”; BOTAO_CONSULTAR: Icon Filename = “QUERY”; BOTAO_ESTOQUE: Label: “Estoque”; BOTAO_IMAGEM: Label: “ON”. Crie o prompt “Imagem: “, para identificá-lo.

Todos os botões acima possuem as propriedades: Mouse Navigate = No; Keyboard Navigable = No.

9. Ainda no canvas TOOLBAR, crie um item, no bloco CONTROL, tipo Display chamado HELP. Este item deve ser capaz de mostrar um único caracter: “?”

Obs.: Neste momento o item deve ser invisível em execução. Ele funcionará como um chamador do Help quando adicionarmos esta funcionalidade nos próximos capítulos.

Veja na próxima página o Layout sugerido:

DBC Database Company 25

Page 196: Oracle Forms Builder 6

Produzindo Triggers

10. Pelo Layout Editor, usando a ícone Stacked Canvas, crie um canvas chamado CANVAS_HELP, e posicione-o no canvas CANVAS_PEDIDOS_E_ITENS. Este canvas mostrará informações adicionais sobre atela ao usuário. Garanta que ele não será visualizado por enquanto, altere a propriedade Visible do CANVAS_HELP para No.

Este canvas será visualizado quando, em capítulos mais a frente,

11. Salve, execute o módulo e teste-o.

12. No forms CLIENTES, crie um Canvas Tab, o qual dividirá as sessões de dados dos clientes. Renomeie este canvas para TAB_CLIENTES, crie 3 (três) páginas, PG_ENDERECOS com label “Endereço”, PG_FATURAMENTO com label “Faturamento” e PG_OBSERVACOES com label “Observações”.

Altere as posições dos items de acordo com as telas à seguir:

PG_ENDERECO

DBC Database Company 26

Page 197: Oracle Forms Builder 6

Produzindo Triggers

PG_FATURAMENTO

PG_OBSERVACOES

13. Salve, execute o módulo, e teste-o, encerre a sessão Oracle Forms Builder.

DBC Database Company 27

Page 198: Oracle Forms Builder 6

Oracle Forms Builder 6

12.12. Introdução as TriggersIntrodução as Triggers

DBC Database Company

Page 199: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Identificar as diferentes categorias de Triggers. Planejar o tipo e o escopo das Triggers de um Form. Descrever as propriedades que afetam o comportamento de uma Trigger.

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 200: Oracle Forms Builder 6

Produzindo Triggers

Visão geral sobre Triggers

Uma Trigger é uma unidade de programa que é executada (disparada) quando ocorre um evento.

O Oracle Forms permite a construção de poderosas facilidades sem a necessidade de escrever código.

Uma triggers permite adicionar e modificar a funcionalidade de um módulo de uma forma procedural de maneira que processos detalhados de aplicação possam ser definidos.

Toda Trigger está associada a um evento específico. O Oracle Forms possui uma grande variedade de eventos que associam-se a uma trigger.

As Triggers são escritas em PL/SQL como nas demais ferramentas do Developer/2000.

Componentes de uma Trigger

Componentes Descrição

Trigger Type Tipo de Trigger: especifica o evento que fará com que a trigger dispare.

Trigger Code Corpo da Trigger: bloco PL/SQL que define a ação a ser executada pela trigger.

Trigger Scope Escopo da Trigger: determina o escopo sobre o qual os eventos serão detectados pela trigger. Nível em que a trigger está definida.

DBC Database Company 3

Page 201: Oracle Forms Builder 6

Produzindo Triggers

Trigger Type

Caracteriza o evento que faz com que a trigger dispare.

A primeira parte do nome da trigger (prefixo) segue um padrão que permite a identificação do tipo de trigger.

Todas as built-in triggers são associadas a um evento e seus nomes sempre contém um prefixo seguido de hífens ”_”.

Os tipos são:

Prefixo Descrição

PRE-A trigger é disparada quando ocorre um evento antes de uma ação (por exemplo uma consulta é executada PRE_QUERY).

POST-A trigger é disparada quando ocorre um evento depois de uma ação (por exemplo uma consulta é executada POST_QUERY).

WHEN-A trigger é dispara em adição ao processamento padrão, permite você aumentar a funcionalidade (por exemplo na validação de um item WHEN-VALIDATE-ITEM).

ON-A trigger é dispara em substituição ao processamento padrão, permite você aumentar a funcionalidade (por exemplo quando ocorrer um erro ON-ERROR).

KEY-A trigger é dispara em substituição ao processamento padrão de uma tecla de função, permite você aumentar a funcionalidade (por exemplo quando precionar o Enter KEY-ENTER.

Obs.:

Além das built-in triggers o Oracle Forms suporta User-named triggers. User-named triggers são triggers que o usuário define um nome. Este tipo de trigger é disparado por outra trigger. Atualmente o mesmo efeito pode ser conseguido utilizando Procedures, Functions e Packages com melhor resultado.

User-named triggers são mantidas para compatibilização com versões anteriores do Oracle Forms.

DBC Database Company 4

Page 202: Oracle Forms Builder 6

Produzindo Triggers

Trigger Code

É a ação que a trigger executa quando disparada. Você escreve um bloco PL/SQL anônimo utilizando o PL/SQL editor.

O Oracle Forms automaticamente envolve o seu código com BEGIN... END sendo portanto desnecessário entrar com essas palavras chaves, a menos que o seu bloco precise de um seção DECLARE, então você deve entrar com toda a estrutura criando um sub-bloco.

Você pode utilizar normalmente os recursos da linguagem PL/SQL.

Comandos de controle da transação (COMMIT, ROLLBACK, SAVEPOINT) não podem ser incluídos diretamente com comandos SQL no bloco PL/SQL. Estas ações são executadas pelo Oracle Forms como resultados de comandos e built-in procedures que você emite.

DBC Database Company 5

Page 203: Oracle Forms Builder 6

Produzindo Triggers

Trigger Scope

O escopo de uma trigger é determinado pela sua posição na hierarquia dos objetos do form, ou seja em baixo de que tipo de objeto você criou a trigger.

Os níveis são:

Nível Descrição

Nível de FormA trigger pertence ao módulo form e é disparada quando o evento a qual ela esta associada ocorrer em qualquer posição no form (qualquer bloco, qualquer item).

Nível de BlocoA trigger pertence ao bloco e somente é disparada quando o evento a qual ela esta associada ocorrer neste bloco (em qualquer item dentro do bloco da trigger).

Nível de ItemA trigger pertence ao item e somente é disparada quando o evento a qual ela esta associada ocorrer neste item (específico).

Obs.:

Algumas triggers não podem ser definidas em certos níveis. Por exemplo: a trigger POST-QUERY não pode ser definida a nível de item, porque uma consulta é sempre efetuada sobre um bloco.

DBC Database Company 6

Page 204: Oracle Forms Builder 6

Produzindo Triggers

Escopo e execução da Trigger

Normalmente somente a trigger mais específica em relação a posição do cursor é executada.

Considere os exemplos:

Quando o cursor está no item DATA_PREVISAO_DA_ENTREGA um mensagem é disparada pela trigger ON-MESSAGE definida para o item.

Quando o cursor está no bloco PEDIDOS uma mensagem é disparada pela trigger ON-MESSAGE definida para o bloco, desde que não exista nenhuma trigger definida para o item corrente.

Quando o cursor está no bloco ITENS um mensagem é disparada pela trigger ON-MESSAGE definida para o form, desde que não exista nenhuma trigger definida para o item corrente ou para o bloco.

Estilo de execução da Trigger

O estilo de execução (Execution Hierarchy) é a propriedade da trigger que controla o que acontece quando há mais de uma trigger do mesmo tipo em diferentes níveis.

As definições para o estilo de execução são:

Nível Descrição

Override Somente a trigger mais específica é disparada (Comportamento default).

After A trigger é disparada depois de disparada a trigger do mesmo tipo em um nível mais alto (se existir).

Before A trigger é disparada antes de disparada a trigger do mesmo tipo em um nível mais alto (se existir).

DBC Database Company 7

Page 205: Oracle Forms Builder 6

Oracle Forms Builder 6

13.13. Produzindo TriggersProduzindo Triggers

DBC Database Company

Page 206: Oracle Forms Builder 6

Produzindo Triggers

Objetivos

Criar e modificar triggers Escrever triggers que derivam valores de itens não base table. Escrever triggers para suplementar a validação do item. Gerenciar falhas na trigger através do controle de exceções.

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 207: Oracle Forms Builder 6

Produzindo Triggers

Criando um Triggers

Você pode criar uma trigger pelo Object Navigator ou pelo PL/SQL editor se ele já estiver aberto.

Criando uma trigger pelo Object Navigator

No Navigator, selecione a entrada Triggers embaixo do Form, do Bloco ou do Item que a trigger deve estar associada. O objeto que você escolher determinará o escopo da trigger e os tipos de triggers disponíveis.

Clique no ícone Create , ou selecione no menu Program -> SmartTriggers, deverá mostrar uma lista das triggers apropriadas para o objeto corrente.

Caso a solicitação da criação da Trigger for pelo botão Create, ou pela opção Other do SmartTriggers, será mostrada uma LOV com todas as Triggers disponíveis. Utilize o recurso de auto redução teclando as letras iniciais dos nome da trigger. Exemplo: “W” reduz a lista para triggers WHEN-..

Entre com o código PL/SQL da trigger no Source Pane do Editor.

DBC Database Company 3

Page 208: Oracle Forms Builder 6

Produzindo Triggers

Criando uma trigger pelo PL/SQL EDITOR

Se o PL/SQL Editor já estiver aberto, clique no botão NEW.

Escolha a Trigger da Lista de Triggers.

Entre com o código PL/SQL da trigger no source pane do PL/SQL Editor.

DBC Database Company 4

Page 209: Oracle Forms Builder 6

Produzindo Triggers

Utilizando o PL/SQL EDITOR

Você pode abrir o PL/SQL Editor da seguinte maneira:

Selecionando no menu Program -> PL/SQL Editor. Pressionando o botão direito do mouse e selecionando PL/SQL Editor. Ou precionando a tecla F11.

Compilando o código alterado

Os códigos novos ou modificados devem ser compilados, para isso você pode compilar o código:

Pressionando o botão Compile ou selecionando no menu Program -> Compile Selection.

Para compilar só os códigos alterados desde a última compilação

Selecione no menu Program -> Compile -> Incremental.

Para compilar todos os códigos Program -> Compile -> All.

Obs.:

Se o código ainda não foi compilado, ele será compilado quando o módulo for gerado.

DBC Database Company 5

Page 210: Oracle Forms Builder 6

Produzindo Triggers

Navegando no PL/SQL Editor

Os pop-list Block e Item não alteram o escopo corrente da trigger. Eles simplesmente permitem a navegação para outras triggers.

Componente Descrição

Type Setado para Trigger.

Object Permite que você troque entre blocos ou forms para acessar outras triggers.

Item Permite que você troque entre itens do bloco atual para acessar outras triggers.

Name Nome da trigger. Permite a você navegar para uma outra trigger já existente.

Source Pane Onde o texto da trigger é digitado.

DBC Database Company 6

Page 211: Oracle Forms Builder 6

Produzindo Triggers

Propriedades de uma Trigger

No Property Palette você pode especificar as seguintes propriedades de uma trigger.

General

Propriedade Descrição

Name Especifica o nome da trigger.

Functional

Propriedade Descrição

Trigger Style PL/SQL: código da trigger definido na linguagem PL/SQL (default).

Fire in Enter Query Mode

Yes: permite a trigger ser disparada mesmo que o evento ocorra no modo Enter Query.No: a trigger só é disparada se o evento ocorrer no modo Normal.

Execution Hierarchy Override, Before ou After.

Help

Propriedade Descrição

Display in ‘Keyboard Help’

Mostra a tecla associada na tela [Show Keys]. Só é válida para Key- triggers.

‘Keyboard Help’ text Descrição para ser mostrada na tela [Show Keys]. Só é válida para Key- triggers.

DBC Database Company 7

Page 212: Oracle Forms Builder 6

Produzindo Triggers

Escrevendo o código da Trigger

Defina sub-blocos adicionais dentro de uma trigger utilizando a estrutura DECLARE... BEGIN... EXCEPTION... END se necessário.

Faça chamadas a procedures, functions do Banco, no form ou em uma library. Faça chamadas a built-in ou packages. O operador de comparação IS NULL testa se o valor é nulo (NULL). Para tratar valores nulos utilize a funçao NVL.

Exemplo 1:

Quando a trigger não necessita das cláusulas BEGIN e END.

When-Validate-Item:

Exemplo 2:

Quando a trigger necessita de declaração das cláusulas BEGIN e END.

When-Button-Pressed:

Exemplo 3:

Para tratar exceptions, utilize a cláusula EXCEPTION na trigger.

Post-Insert:

DBC Database Company 8

IF :itens.preco IS NULLTHEN :itens.preco := :itens.preco_padrao;END IF;Calcula_Total; --Procedure

DECLARE v_desconto NUMBER;BEGIN v_desconto := calcula_desconto( :itens.codigo_do_produto , :itens.quantidade); --Function MESSAGE(‘Desconto: ’||TO_CHAR(v_desconto));END;

Page 213: Oracle Forms Builder 6

Produzindo Triggers

DBC Database Company 9

INSERT INTO tab_log ( val_log , user_log) VALUES ( :departamentos.codigo , USER);EXCEPTION WHEN OTHERS THEN MESSAGE(‘Erro! ’||SQLERRM);

Page 214: Oracle Forms Builder 6

Produzindo Triggers

Utilizando variáveis no Oracle Forms

Em triggers e subprogramas o Oracle Forms geralmente permite o uso de dois tipos de variáveis: Oracle Forms e PL/SQL.

Tipos de Variáveis Descrição

Oracle Forms Tipos de variáveis mantidos pelo Oracle Forms. São vistas pelo PL/SQL como variáveis externas e requerem o prefixo (:) para distingui-las dos objetos PL/SQL. As variáveis Oracle Forms não são declaradas formalmente na seção DECLARE do bloco PL/SQL e podem existir no escopo de todo o bloco PL/SQL.

PL/SQL Variáveis que devem ser declaradas na seção DECLARE do bloco PL/SQL. Não possuem prefixo.

Variáveis Oracle Forms

Variáveis do Forms Descrição

Itens (Text, List, Checkbox, etc)

Escopo: form corrente e menu associado ao form.Uso: apresentação e interação com o operador.

Globais Escopo: todos os módulos da sessão corrente.Uso: varíaveis de comunicação entre os módulos durante uma sessão.

De Sistema Escopo: form corrente e menu associado ao form.Uso: controles e estados do form.

Parâmetros Escopo: módulo corrente.Uso: passagem de valores de entrada e saída de um módulo.

Inicializando variáveis Globais

Muitas vezes é preciso testar uma variável Global podendo ela ou não existir, neste caso utiza-se a built-in DEFAULT_VALUE.

Por exemplo, para inicializar a variável Global: “pais”, como “ Brasil ”, utilize:

Removendo variáveis Globais

Uma variável Global aloca 255 bytes, para removê-la utilize a built-in ERASE.

Exemplo:

DBC Database Company 10

DEFAULT_VALUE(‘Brasil’, ‘GLOBAL.pais’);

ERASE(‘GLOBAL.pais’);

Page 215: Oracle Forms Builder 6

Produzindo Triggers

Referenciando variáveis Oracle Forms

Referênciando uma variável tipo item na trigger PRE-QUERY a nível de bloco para o bloco PEDIDOS do form PEDIDOS.

Referênciando uma variável tipo Global na trigger PRE-FORM no form PEDIDOS. Referênciando uma variável de sistema na trigger WHEN-BUTTON-PRESSED para o item

BOTAO_CONSULTAR no bloco CONTROL no form PEDIDOS.

DBC Database Company 11

:pedidos.codigo_do_cliente := :GLOBAL.codigo_do_cliente;

:DEFAULT_VALUE('#','global.codigo_do_cliente');:GLOBAL.pedido_aberto := 'SIM';

IF :SYSTEM.MODE = 'NORMAL'THEN ENTER_QUERY;ELSE EXECUTE_QUERY;END IF;

Page 216: Oracle Forms Builder 6

Produzindo Triggers

Suplementando validações

WHEN-VALIDATE-ITEM Trigger

Esta trigger é disparada quando o Oracle Forms valida um item que esta marcado como “changed” . Isto acontece se o operador altera o item ou se outra trigger altera o valor deste item.

A trigger é disparada imediatamente após as validações padrão do Oracle Forms para o item alterado. Esta validação geralmente ocorre quando o cursor navega para fora do item.

Usos da Trigger When-Validate-Item:

Incrementar a validação de um item para validações complexas que não podem ser implementadas pelas propriedades de um item.

Popular outros itens como: itens não base table e display itensExemplo:

Trigger WHEN-VALIDATE-ITEM para o item QUANTIDADE no bloco ITENS do form PEDIDOS.

DBC Database Company 12

DECLARE v_quant NUMBER;BEGIN SELECT SUM(quantidade_em_estoque) INTO v_quant FROM estoque WHERE codigo_do_produto = :itens.codigo_do_produto; IF :itens.quantidade > v_quant THEN :itens.quantidade := v_quant; MESSAGE('Produto não possui estoque !'); END IF;END;

Page 217: Oracle Forms Builder 6

Produzindo Triggers

Populando itens com dados derivados

Utilizando o comando SELECT em Triggers

O comando SELECT dentro do bloco PL/SQL deve utilizar a claúsula INTO para retornar os valores das colunas para variáveis.

Somente uma linha deve ser retornada pelo comando SELECT, ou então uma exceção será disparada. Se esta exceção não é tratada ocasionará um término anormal do bloco (portanto, trate as prováveis exceções no seu bloco PL/SQL).

Se ocorrer uma exceção na trigger When-Validate-Item e a mesma não for tratada a trigger falhará e o cursor não sairá do item. A seguinte mensagem será mostrada:

‘FRM-40735” <trigger type> trigger raised unhandled exception <expection>.Exemplo:

Trigger POST-QUERY para o bloco PEDIDOS do forms PEDIDOS.

DBC Database Company 13

SELECT c.name , e.last_nameINTO :pedidos.nome_do_cliente , :pedidos.nome_do_vendedorFROM clientes c , empregados eWHERE c.codigo = :pedidos.codigo_do_clienteAND e.codigo = :pedidos.codigo_do_vendedor;

Page 218: Oracle Forms Builder 6

Produzindo Triggers

Controlando falhas em Triggers

Tratamento de exceções

Para prevenir exceções não tratadas e falhas sem controle de uma trigger você precisa adicionar tratamento de exceções ao seu bloco PL/SQL.

Você pode substituir as mensagens de erro utilizadas pelo Oracle Forms por uma mensagem customizada utilizando a procedure built-in MESSAGE no tratamento das exceções.

Note que embora o operador receba uma mensagem mais apropriada utilizando a built-in MESSAGE a trigger não falha pois a exceção foi tratada, isto significa que o cursor pode sair do item mesmo que ele esteja inválido.

Para forçar a falha da trigger de modo que o cursor não possa sair do item enquanto este não estiver correto dispare a exceção FORM_TRIGGER_FAILURE através do comando RAISE. Isto fará com que a trigger falhe, mas não causará uma exceção não tratada, pois o Oracle Forms tem o seu próprio tratamento para esta exceção.

Você pode tratar outras exceções não explicitamente tratadas com WHEN-OTHERS que deve ser o último.

Exemplos:

Trigger WHEN-VALIDATE-ITEM para o item CODIGO_DO_CLIENTE do bloco PEDIDOS do form PEDIDOS.

Trigger WHEN-VALIDATE-ITEM para o item DATA_DO_PEDIDO do bloco PEDIDOS do form PEDIDOS.

DBC Database Company 14

BEGIN SELECT nome , codigo_do_vendedor INTO :pedidos.nome_do_cliente , :pedidos.codigo_do_vendedor FROM clientes WHERE codigo = :pedidos.codigo_do_cliente;EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE(‘Cliente não existe !!!’); RAISE Form_Trigger_Failure; WHEN OTHERS THEN MESSAGE(‘Muitos Clientes com este código !!!’); RAISE Form_Trigger_Failure;END;

IF :pedidos.data_do_pedido > SYSDATETHEN MESSAGE('Data do pedido posterior a data atual !!!'); RAISE Form_Trigger_Failure;END IF;

Page 219: Oracle Forms Builder 6

Produzindo Triggers

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Crie uma trigger para escrever os valores corretos de NOME_DO_CLIENTE, NOME_DO_VENDEDOR e CODIGO_DO_VENDEDOR sempre que ocorrer uma validação para o item CODIGO_DO_CLIENTE. Utilize a trigger WHEN_VALIDATE_ITEM, mostre uma mensagem e cause a falha da trigger se o CODIGO_DO_CLIENTE não existir.

2. Crie uma trigger para escrever os valores corretos de NOME_DO_PRODUTO e PRECO do produto, sempre que ocorrer uma validação para o item CODIGO_DO_PRODUTO. Utilize a trigger WHEN_VALIDATE_ITEM, mostre uma mensagem e cause a falha da trigger se o CODIGO_DO_PRODUTO não existir.

3. Salve, execute o módulo e teste-o.

DBC Database Company 15

Page 220: Oracle Forms Builder 6

Oracle Developer/2000: Forms Builder 5.1 Vol I

14.14. Monitorando e DepurandoMonitorando e Depurando TriggersTriggers

On Targget Treinamento e Consultoria

Page 221: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Objetivos

Conhecer os componentes do Debug. Rodar um módulo forms no modo Debug. Tratar a auditoração de um código usando programação (Debug PL/SQL code)

On Targget Treinamento e Consultoria 2

Page 222: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Debugando Triggers no Forms Builder

Para debugar um código no forms builder existem 3 formas:

Compilando: os erros de sintaxe e de referencia a objetos (inclusive objetos do Banco de dados) são apontados na compilação permitindo a correção do bloco PL/SQL no Editor antes de executar. Mostrando mensagens de Debug: no modo debug você pode requisitar mensagens que serão mostradas para indicar o disparo da trigger. Isto ajuda a verificar se certas triggers estão sendo disparadas ou não. Invocando o Debugger: o Debugger permite que você monitore a execução do código dentro da trigger (inclusive em program units). Você pode executar linha a linha e monitorar os subprogramas chamados, conteúdo das variáveis, etc.

On Targget Treinamento e Consultoria 3

Page 223: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Executando um Form no modo Debug

Passo 1

Rode o forms no modo debuger, clique no ícone , ou selecione a opção no menu Program - > Run Fomr -> Debug SHIFT+CTRL+R.

Passo 2

Na tela do Debug, selecione a trigger que você deseja depurar e entre com as ações de Debug, definindo os pontos de parada (duplo clique na linha desejada). Saia do Debugger clicando no

botão Close e continue a execução do form.

Passo 3

A cada break point atingido o debugger é invocado de modo que você possa monitorar e interagir com o form, executando linha a linha a trigger depurada.

On Targget Treinamento e Consultoria 4

Page 224: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Mostrando mensagens quando a Trigger é disparada

Você pode mostrar mensagens que serão emitidas antes da execução de cada trigger disparada. Estas mensagens são exibidas na linha de mensagem e incluem o tipo de trigger e o escopo.

Para isto especifique na linha de comando:

On Targget Treinamento e Consultoria 5

IFRUN60 MODULE=<nome do módulo>USERID=user/password@Host StringDEBUG_MESSAGES=Yes

Page 225: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Utilizando o PL/SQL Debugger

O PL/SQL Debugger/Interpreter permite você;

Executar passo a passo uma unidade de programa e suas chamadas a subprogramas. Examinar e modificar o conteúdo das variáveis durante a execução. Definir pontos de parada (breakpoints) de modo a suspender a execução do form, permitindo a análise da situação da aplicação em um ponto específico. Definir ações de debug que serão executadas em certos eventos (debug triggers).

On Targget Treinamento e Consultoria 6

Page 226: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Componentes do Debug

Componentes Descrição

Source Pane Cópia somente para leitura da unidade de programa corrente. Você pode selecionar linhas de código e setar breakpoints neste painel.

Navigator Pane Lista hierárquica dos objetos. Funciona como o Object Navigator.

Interpreter Pane Linha de comando onde você entra com PL/SQL e comandos do debugger.

Step Into (Button) Executa o comando STEP INTO. O comando STEP INTO avança a execução para o próximo subprograma chamado por esta linha ou executa a linha corrente e avança para a próxima.

Step Over (Button) Executa o comando STEP OVER. O comando STEP OVER salta a chamada de um subprograma, avançando para a próxima linha.

Step Out (Button) Executa o comando STEP OUT. O comando STEP OUT salta para o término do subprograma corrente.

Go (Button) Executa o comando GO.O comando GO segue a execução indefinidamente.

Reset (Button) Executa o comando RESET. O comando RESET termina o subprograma corrente imediatamente.

Close (Button) Fecha o Interpreter/Debugger.

Navigator Controls Create, Delete, Expand, Collapse, Expand All, Collapse All, Find.Controla o Painel Navigator como o Object Navigator.

On Targget Treinamento e Consultoria 7

Page 227: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Comandos úteis no Debug

Os seguintes comandos podem ser informados na linha de comando do Debugger (no Intepreter Pane). Os comandos marcados com (*) são equivalentes aos botões do Tool Bar do Debugger.

Comando Descrição

STEP INTO (*) Avança a execução para o próximo subprograma chamado por esta linha ou executa a linha corrente e avança para a próxima.

STEP OVER (*) Salta a chamada de um subprograma, avançando para a próxima linha.

STEP OUT (*) Salta para o término do subprograma corrente.

GO (*) Segue a execução indefinidamente.

RESET (*) Termina o subprograma corrente imediatamente.

SHOW LOCALS Mostra todas as variáveis locais (variáveis PL/SQL declaradas localmente) e parâmetros.

Package DEBUG

Os seguintes comandos da Package DEBUG podem ser informados na linha de comando do Debugger (no Intepreter Pane) ou incluídos em Debug ou Brekpoint triggers. Eles permitem que você mostre e atualize valores para variáveis e parâmetros na trigger ou no subprograma corrente.

Comando Descrição

DEBUG.INTERPRET(‘string’)

Procedure que permite que você emita um comando do Interpreter como parâmetro (string) e então execute a partir das Debug Triggers.

DEBUG.GETx(nome_vari)

Função que retorna o valor da variável com o nome fornecido. x : representa o datatype CHAR da variável, assim como n para

variáveis numéricas. nome_var : nome da variável

DEBUG.SETx(nome_var, valor)

Procedure que seta o valor da variável com o nome fornecido. x : representa o datatype CHAR da variável, assim como n para

variáveis numéricas. nome_var : nome da variável valor : valor a ser setado para a variável

On Targget Treinamento e Consultoria 8

ULBRA, 01/03/-1,
Page 228: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Invocando o Debugger

Você pode invocar o Debugger a qualquer momento durante a execução do form, selecionando Help -> Debug.

Setando Breakpoints em uma Trigger

Existem dois métodos para setar um breakpoint em uma Trigger

Método 11. Ative o Debugger e execute o form em Debug Mode ou se o form já está em

execução selecione Help -> Debug.

2. No Navigator Pane do Debugger selecione a trigger desejada. O bloco PL/SQL da trigger deverá ser mostrado no Source Pane.

3. De um duplo clique na linha do bloco PL/SQL no Source Pane em que você deseja setar um breakpoint.

4. Para sair do Debugger, clique em Close.

5. Continue normalmente a execução do form, quando a linha para qual foi setado o breakpoint for executada o Debugger será ativado e mostrado automaticamente antes da execução da linha, permitindo que você monitore a execução a partir daquele ponto.

On Targget Treinamento e Consultoria 9

Page 229: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Método 21. Ative o Debugger e execute o form em Debug Mode ou se o form já está em

execução selecione Help -> Debug.

2. No Navigator Pane do Debugger selecione a trigger desejada. O bloco PL/SQL da trigger deverá ser mostrado no Source Pane.

3. Posicione o cursor na linha do bloco PL/SQL no Source Pane em que você deseja setar um breakpoint.

4. Selecione Debug -> Break a partir do Menu. O diálogo PL/SQL Breakpoint deve aparecer.

5. Na Trigger Área do diálogo Breakpoint entre com o comando:

RAISE DEBUG.BREAK.

6. Para sair do Debugger, clique em Close.

7. Continue normalmente a execução do form, quando a linha para qual foi setado o breakpoint for executada o Debugger será ativado e mostrado automaticamente antes da execução da linha, permitindo que você monitore a execução a partir daquele ponto.

On Targget Treinamento e Consultoria 10

Page 230: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Definindo Debug Triggers

1. Ative o Debugger e execute o form em Debug Mode ou se o form já está em execução selecione Help -> Debug.

2. No Navigator Pane do Debugger selecione a trigger desejada. O bloco PL/SQL da trigger deverá ser mostrado no Source Pane.

3. Posicione o cursor na linha do bloco PL/SQL no Source Pane em que você deseja setar um breakpoint.

4. Selecione Debug -> Trigger a partir do Menu. O diálogo PL/SQL Breakpoint deve aparecer.

5. No Trigger Body Area entre com o código PL/SQL que a Debug Trigger deve executar. Clique em OK.

6. A Debug Trigger definida será executada toda vez que a linha para qual ela foi definida for executada.

7. Para sair do Debugger, clique em Close.

8. Continue normalmente a execução do form, quando a linha para qual foi setada a Debug Trigger for executada o Debugger será ativado e a Debug Trigger será executada neste ponto.

On Targget Treinamento e Consultoria 11

Page 231: Oracle Forms Builder 6

Monitorando e Depurando Triggers

Desabilitando ações do Debug

Para desabilitar uma ação do Debug, durante a execução, desmarque o breakpoint setado ou desmarque o Check-box Enabled nos diálogos Debug PL/SQL Trigger ou Debug PL/SQL Breakpoint.

On Targget Treinamento e Consultoria 12

Page 232: Oracle Forms Builder 6

Oracle Forms Builder 6

15.15. Adicionando FuncionalidadesAdicionando Funcionalidades à Itensà Itens

DBC Database Company

Page 233: Oracle Forms Builder 6

Código Flexível

Objetivos

Complementar a funcionalidade de itens do tipo input usando triggers e built-ins. Complementar a funcionalidade de itens do tipo não input usando triggers e built-ins.

DBC Database Company 2

Page 234: Oracle Forms Builder 6

Código Flexível

Respondendo a interações com itens

Existem alguns tipos de GUI Itens que o operador pode interagir clicando com o mouse ou pressionando uma tecla de função. A maioria destes itens possui uma funcionalidade default.. Por exemplo, clicando em um Radio Button o operador pode alterar o valor para um item tipo Radio Group.

Você pode customizar funcionalidades, por exemplo:

Executar testes e ações apropriadas tão logo o operador clique em um Radio Button, uma Lista ou um Check Box.

Mostrar a foto de um produto quando o operador clica no quadro (item do tipo Image). Definir a funcionalidade de um botão.

Triggers de interação com itens

Trigger Evento que dispara a trigger

WHEN-BUTTON-PRESSED Seleção de um botão, através de um simples clique com o mouse ou por uma tecla de função.

WHEN-CHECKBOX-CHANGED Troca do estado de um item tipo checkbox com o mouse ou com uma tecla de função.

WHEN-RADIO-CHANGED Seleção de um botão diferente ou do corrente em um Radio Group.

WHEN-IMAGE-PRESSED Um clique simples ou duplo clique em um item tipo Image.

WHEN-IMAGE-ACTIVATED Execução de um duplo clique em um item tipo Image.

WHEN-LIST-CHANGED Troca o valor de um item tipo List.

WHEN-LIST-ACTIVATED Execução de um duplo clique em um elemento de uma T-List.

WHEN-MOUSE-ENTER Dispara quando o ponteiro do mouse passa sobre o objeto.

WHEN-MOUSE-LEAVE Dispara quando o ponteiro do mouse sai de cima do objeto.

DBC Database Company 3

Page 235: Oracle Forms Builder 6

Código Flexível

Exemplo:

Trigger WHEN_RADIO_CHANGED no Item PEDIDOS.TIPO_DE_PAGAMENTO.

Você pode utilizar RAISE FORM_TRIGGER_FAILURE para terminar esta trigger, no entanto a falha desta trigger não terá efeito de validação ou de navegação no form. As triggers de interação não são disparadas pelos eventos de navegação ou validação.

Utilize as triggers WHEN-VALIDATE- para tratar falhas de validação e navegação.

DBC Database Company

DECLARE v_cred clientes.categoria_de_credito%TYPE;BEGIN IF :pedidos.tipo_de_pagamento = 'PRAZO' THEN SELECT categoria_de_credito INTO v_cred FROM clientes WHERE codigo = :pedidos.codigo_do_cliente; IF v_cred NOT IN('BOM','EXCELENTE') THEN :pedidos.tipo_de_pagamento := 'AVISTA'; MESSAGE(‘Este cliente só pode comprar à vista !!!’); END IF; END IF;END;

4

Page 236: Oracle Forms Builder 6

Código Flexível

Definindo funcionalidades à Itens Input

Check Boxes

Quando você altera o valor de um item do tipo CheckBox, dispara a trigger When-CheckBox-Changed, você pode complementar a trigger usando a built-in CHECKBOX_CHECKED, que retorna se a instância do item especificado está como CHECKED ou não.

Exemplo:

List Item

Quando você altera o valor de um item do tipo List, dispara a trigger When-List-Changed,

Se for dado um duplo clique em um item do tipo List e estilo T-List, é disparada a trigger Wuen-List-Actived juntamente com a trigger When-List_Changed.

Você pode, via programa popular um item do tipo List, usando as seguintes Built-ins:

ADD_LIST_ELEMENT: para adicionar um elemento a lista. DELETE_LIST_ELEMENT: para deletar um elemento da lista.

Sintaxe:

Descrição dos parâmetros:Parâmetro Descrição

Indice Número que identifica a posição do elemento na lista, no primeiro = 1.

Label Descrição do elemento na lista.

Valor Valor do elemento na lista.

DBC Database Company

IF CHECKBOX_CHECKED(‘pedidos.pedido_preenchido’)THEN SET_ITEM_PROPERTY( ‘pedidos.data_previsao_da_entrega’ , UPDATE_ALLOWED , PROPERTY_FALSE);ELSE SET_ITEM_PROPERTY( ‘pedidos.data_previsao_da_entrega’ , UPDATE_ALLOWED , PROPERTY_TRUE);END IF;

ADD_LIST_ELEMENT( ‘item_do_tipo_list’ , indice , ’label’ , ’valor’);DELETE_LIST_ELEMENT( ‘item_do_tipo_list’ , indice);

5

Page 237: Oracle Forms Builder 6

Código Flexível

Definindo Funcionalidades à itens Não Input

Mostrando LOVs através de botões

Se em um item haver uma LOV atachada a ele, para invocá-la basta pelo menu chamar a opção Edit -> Display List.

Para chamar uma LOV via programa, você pode utilizar as seguintes Built-ins:

LIST_VALUES (procedure): é restrita, só executará a LOV se o item corrente possuír uma asosciada a ele. SHOW_LOV (function): não é restrita, pode ser chamada de qualquer lugar, se for escolhido um valor na LOV, retornará TRUE, bastando especificar o nome da LOV, e opcionalmente as coordenadas X e Y do canto esquerdo superior da janela da LOV.

DBC Database Company

LIST_VALUES;<variável> := SHOW_LOV(‘nome_da_lov’,x,y);<variável> := SHOW_LOV(‘nome_da_lov’);

6

Page 238: Oracle Forms Builder 6

Código Flexível

Interagindo com Itens do tipo Image

Itens Base Table : São automaticamente populados por uma consulta sobre o seu bloco (a partir de uma coluna da tabela base com o tipo de dado LONG RAW).

Itens Não Base Table : Podem ser populados por imagens que se encontram em arquivos através da built-in READ_IMAGE_FILE. Esta é a forma mais utilizada.

Para buscar a imagem a partir de um arquivo no disco:

Parâmetros da Buit-in READ_IMAGE_FILE:

Parâmetro Descrição

nome_do_arquivo Nome do arquivo do sistema operacional que contém a imagem. Sem especificar o caminho.O caminho default é assumido (variável FORMS60_PATH).

tipo_da_imagem Tipo da imagem, por exemplo: TIFF,JFIF,PCX,PICT,GIF,CALS,RAS, etc.

nome_do_item_image Item tipo Image do form que vai apresentar a imagem.

Exemplo:

Usando triggers em itens do tipo Imagem

Você pode popular item tipo Imagem a partir de uma trigger.

Trigger Descrição

WHEN-BUTTON_PRESSEDPode ser utilizada para popular um item tipo Image a partir do clique em um botão.

WHEN-IMAGE-PRESSEDPode ser utilizada para popular um item tipo Image a partir de um clique ou de um duplo clique em um item tipo Image.

WHEN-IMAGE-ACTIVATEDPode ser utilizada para popular um item tipo Image a partir de um duplo clique em um item tipo Image.

DBC Database Company

READ_IMAGE_FILE( ‘nome_do_arquivo’ , ’tipo_da_imagem’ , ’nome_do_item_image’);

READ_IMAGE_FILE( ‘bola.jpg’ , ‘JPEG’ , ’produtos.foto’);

7

Page 239: Oracle Forms Builder 6

Código Flexível

Interagindo com itens do tipo Sound

Itens Base Table : São automaticamente populados por uma consulta sobre o seu bloco (a partir de uma coluna da tabela base com o tipo de dado LONG RAW).

Itens Não Base Table : Podem ser populados por imagens que se encontram em arquivos através da built-in READ_SOUND_FILE. Esta é a forma mais utilizada.

Para buscar a imagem a partir de um arquivo no disco:

Parâmetros da Buit-in READ_SOUND_FILE:

Parâmetro Descrição

nome_do_arquivo Nome do arquivo do sistema operacional que contém a imagem. Sem especificar o caminho.O caminho default é assumido (variável FORMS60_PATH).

tipo_do_som Tipo da som, por exemplo: AU, WAVE, etc.

Nome_do_item_sound Item tipo Sound do form que vai rodar o som.

Exemplo:

Você pode interagir em um item do tipo Sound, com as Built-ins GET_ITEM_PROPERTY e SET_ITEM_PROPERTY, usando os seguintes argumentos específicos para um item do tipo Sound:

SHOW_FAST_FORWARD_BUTTON

SHOW_PLAY_BUTTON

SHOW_RECORD_BUTTON

SHOW_REWING_BUTTON

SHOW_SLIDER

SHOW_TIME_INDICATOR

SHOW_VOLUME_CONTROL

DBC Database Company

READ_SOUND_FILE( ‘nome_do_arquivo’ , ’tipo_do_som’ , ’nome_do_item_sound’);

READ_SOUND_FILE( ‘erro.wav’ , ‘WAVE’ , ’gerenciador’);

8

Page 240: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. No forms PEDIDOS, faça com que ao trocar o TIPO_DE_PAGAMENTO do pedido, verifique se o cliente possui uma categoria de crédito igual a “Bom” ou “Excelente” quando o tipo de pagamento for “A Prazo”, caso contrário, envie uma mensagem ao usuário e altere automáticamente o tipo de pagamento para “Àvista”.

2. Importe o arquivo CAP15_3.TXT, de dentro da trigger selecione a opção no menu File -> Import Text CTRL+M, para trigger When-Button-Pressed no BOTAO_IMAGEM, que fará mostrar e esconder a imagem dos items, e alterar o label do BOTAO_IMAGEM, quando a imagem estiver aparecendo o label do botão refere-se a esconde-la, e vice-versa.

3. Compile, salve e execute o módulo

DBC Database Company 9

Page 241: Oracle Forms Builder 6

Oracle Forms Builder 6

16.16. Mensagens e AlertasMensagens e Alertas

DBC Database Company

Page 242: Oracle Forms Builder 6

Código Flexível

Objetivos

Identificar os tipos de mensagens e interceptá-las. Substituir as mensagens do Oracle Forms por mensagens customizadas. Definir alertas e utilizá-los para a comunicação com o operador. Tratando erros usando Built-ins

DBC Database Company 2

Page 243: Oracle Forms Builder 6

Código Flexível

Tipos de Mensagens

O Oracle Forms emite mensagens em momento de execução para informar ao operador os eventos que ocorrem na sessão., elas estão divididas em 4 (quatro) categorias:

Tipo Descrição

Informativa

Mostrada por default na linha de mensagens. Informa ao operador o estado corrente no processamento. É possível suprimir ou alterar este tipo de mensagem através da trigger ON-MESSAGE.Exemplo: mensagem informando o número de linhas atualizadas.

ErroMostrada por default na linha de mensagens. Informa ao operador um erro ocorrido no processamento corrente. É possível suprimir ou alterar este tipo de mensagem através da trigger ON-ERROR.

Trabalho

Mostrada por default na linha de mensagens. Informa ao operador se o Oracle Forms está processando (por exemplo: Working...). É possível suprimir este tipo de mensagem setando a variável de sistema SUPRESS_WORKING para TRUE.

System AlertJanela do tipo Modal. Um Alert mostra uma informação para o operador e precisa de uma resposta para continuar o processamento.

Tipos de Mensagens da Aplicação

Tipo Descrição

MensagemMostrada na linha de mensagens. São construídas pelo desenvolvedor para a aplicação, usando a built-in MESSAGE.

AlertMostrada em uma janela modal. São alerts definidos pelo desenvolvedor, apresentando uma mensagem e exigindo uma resposta do operador. A apresentação de um Alert é feita pela built-in SHOW-ALERT.

DBC Database Company 3

Page 244: Oracle Forms Builder 6

Código Flexível

Detectando o sucesso ou a falha de Built-ins

O Oracle Forms possui algumas funções para indicar se a última ação no form teve sucesso .

Built-in Descrição

FORM_SUCCESSTRUE: ação com sucesso.FALSE: ocorreu um erro ou um erro fatal .

FORM_FAILURETRUE: um erro não fatal ocorreu.FALSE: não ocorreu erro (erro fatal ou outros).

FORM_FATALTRUE: um erro fatal ocorreuFALSE: não ocorreu erro fatal (não ocorreu erro algum ou ocorreu outro tipo de erro).

Exemplo:

Detectar tipos de Erros

O Oracle Forms possui algumas funções para indicar o tipo de erro de modo que se possa tomar uma ação específica.

Built-in Descrição

ERROR_CODE Retorna o número do erro (tipo de dado NUMBER).

ERROR_TEXT Retorna a descrição do erro (tipo de dado CHAR).

ERROR_TYPE Retorna o tipo de erro (FRM=Oracle Forms, ORA=ORACLE, tipo de dado CHAR).

DBC Database Company

GO_BLOCK(‘estoque’);IF FORM_SUCCESSTHEN EXECUTE_QUERY;ELSE MESSAGE('Erro na navegação para o bloco Estoque !!!’); RAISE Form_Trigger_Failure;END IF;

4

Page 245: Oracle Forms Builder 6

Código Flexível

Controlando Mensagens de Sistema

Você pode suprimir mensagens de sistema baseado no seu nível de severidade. Existem 6 níveis que você pode utilizar (mais do que isso se torna crítico).

Níveis de Severidade das Mensagens

Nível Descrição

0 Todas as mensagens.

5 Reafirma uma condição óbvia.

10 O operador cometeu um erro de operação.

15 O operador tentou executar uma ação para a qual ele não tem privilégios.

20 A ação não pode ser continuada devido a um problema na trigger ou outros tipos de problemas.

25 Uma condição que pode resultar no processamento incorreto do form.

>25 Mensagens que o desenvolvedor não pode suprimir.

Em uma trigger pode-se especificar que somente as mensagens acima de um nível específico de severidade sejam emitidas pelo form.

A variável de sistema SYSTEM.MESSAGE_LEVEL controla o nível de severidade corrente, o valor default de SYSTEM.MESSAGE_LEVEL é 0, ou seja, todas são emitidas.

É possível alterar o nível de severidade atribuindo um dos valores acima para SYSTEM.MESSAGE_LEVEL. Lembre-se que todas as variáveis de sistema são do tipo de dado CHAR com escopo form, ou seja,válidas para o form corrente.

Exemplo:

A trigger WHEN-BUTTON-PRESSED abaixo está associada a um botão UP_BUTTON e executa a movimentação para o registro anterior de um bloco, utilizando a built-in UP. No comportamento default, quando o cursor já está no primeiro registro, a built-in UP falha, retornando uma mensagem:

FRM-40100: AT first record

A trigger abaixo suprime esta mensagem (mensagem de nível 5) e mostra uma mensagem customizada da aplicação.

DBC Database Company 5

Page 246: Oracle Forms Builder 6

Código Flexível

DBC Database Company

:SYSTEM.MESSAGE_LEVEL := 5;UP;IF NOT FORM_SUCCESSTHEN MESSAGE(‘Este já é o primeiro pedido !!!’);END IF;:SYSTEM.MESSAGE_LEVEL := 0;

6

Page 247: Oracle Forms Builder 6

Código Flexível

Suprimindo Mensagens de Trabalho

Você pode suprimir mensagens de trabalho atribuindo ‘TRUE’ para a variável de sistema SYSTEM.SUPRESS_WORKING.

Exemplo:

Você pode setar as variáveis de sistema tão logo um forms entre, utilizando a trigger WHEN-NEW-FORM-INSTANCE.

Interceptando Mensagens de Sistema

Você pode interceptar mensagens de sistema antes de serem mostradas na tela através das triggers ON-ERROR e ON-MESSAGE. Estas triggers permitem que você altere, customize ou suprima mensagens, conforme necessidades da sua aplicação.

Trigger Descrição

ON-ERROR Dispara quando enviada uma mensagem de erro de sistema.

ON-MESSAGE Dispara quando enviada uma mensagem informativa de sistema.

Obs.:

Estas triggers substituem a mensagens, logo nenhuma mensagem será emitida a menos que o operador defina no código da trigger.

Você pode utilizar as Built-ins ERROR_CODE, ERROR_TEXT e ERROR_TYPE para identificar detalhes do erro.

Você pode utilizar as built-ins MESSAGE_CODE, MESSAGE_TEXT e MESSAGE_TYPE para identificar detalhes da mensagem informativa.

Exemplo 1:

Interceptando uma mensagem de erro em uma trigger ON-ERROR.

DBC Database Company

:SYSTEM.SUPRESS_WORKING := ‘TRUE’;

IF ERROR_CODE = 40202THEN MESSAGE(‘Você deve preencher este item para um pedido !!!’);ELSE MESSAGE(ERROR_TYPE||‘-’||TO_CHAR(ERROR_CODE)||ERROR_TEXT);END IF;RAISE Form_Trigger_Failure;

7

Page 248: Oracle Forms Builder 6

Código Flexível

Exemplo 2:

Interceptando uma mensagem informativa em uma trigger ON-MESSAGE, em uma consulta que retorna nenhum registro.

DBC Database Company

IF MESSAGE_CODE = 40350THEN MESSAGE(‘Nenhum pedido encontrado !!!’);ELSE MESSAGE(MESSAGE_TYPE||‘-’||TO_CHAR(MESSAGE_CODE)||MESSAGE_TEXT);END IF;

8

Page 249: Oracle Forms Builder 6

Código Flexível

Criando e controlando Alerts

Exemplo de um Alert

DBC Database Company 9

Page 250: Oracle Forms Builder 6

Código Flexível

Utilização

Utilize Alerts quando você precisar:

Mostrar uma mensagem que o operador não pode ignorar Ter resposta à uma questão (normalmente: Sim. Não ou Cancel).

Passos para a criação de um Alert

1. Selecione a entrada Alerts no Object Navigator.

2. Clique no ícone Create .3. Defina as propriedades do Alert criado no Property Palette.

DBC Database Company 10

Page 251: Oracle Forms Builder 6

Código Flexível

Propriedades de um Alert

Propriedade Descrição

Name Nome do objeto tipo Alert.

Title Título do Alert.. Default ‘Forms’.

Alert Style Define o símbolo que acompanha a mensagem do Alert Stop, Caution(!) ou Note (I).

Button1, Button2, Button3

Labels para cada um dos 3 botões possíveis. Null indica que o botão não é necessário.

Default Alert Button Define qual é o botão default. Button1, Button2 ou Button 3.

Message Mensagem que aparece no Alert. Tamanho máximo de 200 caracteres.

DBC Database Company 11

Page 252: Oracle Forms Builder 6

Código Flexível

Built-ins úteis à manipulação com Alerts

Função SHOW_ALERT

Função utilizada para mostrar um Alert em momento de execução e receber a resposta do operador.

A função SHOW-ALERT retorna um valor (NUMBER) que indica qual dos três botões possíveis o operador usou para responder.

Retorno Descrição

ALERT_BUTTON1 O operador selecionou o botão 1.

ALERT_BUTTON2 O operador selecionou o botão 2.

ALERT_BUTTON3 O operador selecionou o botão 3.

Exemplo:

Uma trigger dispara da quando o operador tenta deletar um registro (KEY-DELREC) poderia invocar um alert para obter confirmação.

Procedure SET_ALERT_PROPERTY

Você pode utilizar esta built-in para trocar a mensagem corrente de um alert programaticamente.

Parâmetros da Built-in:

Parâmetro Descrição

nome_do_alert Nome do alert para o qual se deseja alterar uma propriedade.

propriedade Propriedade que está sendo alterada.Utilize ALERT_MESSAGE_TEXT para definir uma nova mensagem, e TITLE para o título da janela.

mensagem Mensagem a ser definida. Se tamanho maior que 80 caracteres a mensagem será truncada.

DBC Database Company

<variável> := SHOW_ALERT(‘nome_do_alert’);

IF SHOW_ALERT(‘ALERT_CHECK_DELECAO’) = ALERT_BUTTON1THEN DELETE_RECORD;END IF;

SET_ALERT_PROPERTY(‘nome_do_alert’,propriedade,’mensagem’)

12

Page 253: Oracle Forms Builder 6

Código Flexível

DBC Database Company 13

Page 254: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS, crie um Alert chamado ALERT_TIPO_DE_PAGAMENTO, com a seguinte mensagem: “Este cliente não pode comprar à prazo”, defina um único botão : “Ok” para o Alert, com o estilo : Caution.

2. Altere a trigger WHEN-RADIO-CHANGED para o item TIPO_DE_PAGAMENTO para mostrar um Alert ao invés da mensagem, quando um cliente deve pagar àvista.

3. Ainda no módulo PEDIDOS crie um Alert chamado ALERT_SAIR com dois botões: Sim e Não. Deixe a mensagem em branco para este alert; estilo: Stop.

4. Crie uma trigger WHEN-BUTTON-PRESSED para o BOTAO_SAIR que utilizará o alert ALERT_SAIR para pedir a confirmação ao operador da saída do form. Utilize a Built-in SET_ALERT_PROPERTY para definir a seguinte mensagem: “Você realmente deseja sair do form?”. Teste os valores retornados pela Built-in SHOW_ALERT e chame a Built-in EXIT_FORM se o operador respondeu pelo botão Sim.

5. Salve, execute o módulo e teste-o. Encerre a sessão Oracle Forms Builder.

DBC Database Company 14

Page 255: Oracle Forms Builder 6

Oracle Forms Builder 6

17.17. Triggers de ConsultaTriggers de Consulta

DBC Database Company

Page 256: Oracle Forms Builder 6

Código Flexível

Objetivos

Entender os conceitos envolvidos em uma consulta ao bloco e onde as triggers podem ser codificadas e controladas.

Escrever triggers que suplementam resultados de consultas. Controlar a ação de triggers baseada no status do form.

DBC Database Company 2

Page 257: Oracle Forms Builder 6

Código Flexível

Associação entre triggers e consulta

Uma consulta pode disparar dois tipos de triggers: PRE-QUERY e POST-QUERY.

Um evento pode disparar uma trigger quando o form está em modo Normal e se a trigger associada ao evento possuir a propriedade Fire in Enter-Query Mode = Yes no modo Enter Query.

Triggers associadas a consulta

As triggers PRE-QUERY e POST-QUERY são disparadas pelo processo de consulta (Query) e geralmente definidas para o bloco onde a consulta se realiza.

Estas triggers permitem que você adicione funcionalidades ao processamento normal de consulta do Oracle, ou abandone a consulta antes da sua execução se as condições necessárias não foram fornecidas.

DBC Database Company 3

Page 258: Oracle Forms Builder 6

Código Flexível

Processamento de consultas no Oracle Forms

Quando uma consulta é iniciada em um bloco Base Table pelo operador ou por um sub-programa os seguintes eventos acontecem:

Fluxo das triggers no modo Enter-Query

1. No modo Enter Query, a trigger PRE-QUERY, se definida, é disparada2. Se a PRE-QUERY termina com sucesso, é construído o comando SELECT baseado no critério

existente nas propriedades do bloco (WHERE), nos argumentos entrados pelo operador e nos outros argumentos que possam ter sido adicionados pela trigger PRE-QUERY.

3. A consulta é executada.4. Os valores para cada coluna de uma linha são retornados para os itens base table.5. O registro é marcado como válido.6. A trigger POST-QUERY é disparada, se definida, (note que esta trigger é disparada uma vez

para cada registro do bloco). Se a trigger falhar o registro é retirado do bloco.7. Executa a validação dos itens e do registro, no caso de ter sido modificado pela trigger.8. Retorna ao passo 4 para os registros remanescentes desta consulta.

DBC Database Company 4

Page 259: Oracle Forms Builder 6

Código Flexível

Trigger PRE-QUERY

Deve ser definida a nível de bloco ou superior. É disparada para consultas irrestritas ou restritas.

Em uma trigger PRE-QUERY você pode:

Testar condições para a consulta e falhar o processo caso as condições não sejam satisfatórias; Adicionar um critério para a consulta, atribuindo um valor para itens base table.

Exemplo:

A trigger PRE-QUERY abaixo, no bloco de PEDIDOS, possui uma restrição de modo que a consulta só pode ser realizada se os itens CODIGO, DATA_DO_PEDIDO ou DATA_PREVISAO_DE_ENTREGA forem fornecidos. Isto evita consultas muito grandes.

DBC Database Company

IF :pedidos.codigo IS NULLAND :pedidos.data_do_pedido IS NULLTHEN MESSAGE(‘O número ou a data devem ser preenchidos !!!’); RAISE Form_Trigger_Failure;END IF;

5

Page 260: Oracle Forms Builder 6

Código Flexível

Trigger POST-QUERY

Deve ser definida a nível de bloco ou superior. É disparada para cada registro retornado para o bloco como resultado da consulta.

Utilize a trigger POST-QUERY para:

Popular itens não base table a partir dos registros retornados por uma consulta; Calcular estatísticas.

Exemplo:

A trigger POST-QUERY abaixo para o bloco PEDIDOS, mostra, a cada registro consultado, o nome do cliente do pedido.

DBC Database Company

SELECT nomeINTO :pedidos.nome_do_clienteFROM clientesWHERE codigo = :pedidos.codigo_do_cliente;

6

Page 261: Oracle Forms Builder 6

Código Flexível

POST-QUERY e WHEN-VALIDATE-ITEM

Quando a trigger POST-QUERY popula um item, a validação do item é efetuada, causando, caso tenha sido definida, o disparo da trigger WHEN-VALIDATE-ITEM.

Exemplos:

A seguinte procedure deriva o nome do produto a partir do código do produto ITENS.CODIGO_DO_PRODUTO. O nome é colocado no item ITENS.DESCRICAO.

A procedure Busca_Descricao_Produto é chamada pela trigger WHEN-VALIDATE-ITEM para o item ITENS.CODIGO_DO_PRODUTO que falha a validação se o produto não for encontrado.

A procedure Busca_Descricao_Produto é também chamada pela trigger POST-QUERY para o bloco ITENS. Se o produto não for encontrado a trigger não gerará falha pois a exceção está sendo tratada na trigger e não está sendo forçada a exceção FORM_TRIGGER_FAILURE, portanto como a POST-QUERY não gerará falha o registro será mostrado (porem sem o valor para a descrição do produto ITENS.DESCRICAO).

DBC Database Company

PROCEDURE Busca_Descricao_ProdutoISBEGIN SELECT nome INTO :itens.descricao FROM produtos WHERE codigo = :itens.codigo_do_produtoEND;

Busca_Descricao_Produto;EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE(‘Código do produto inválido !!!’); RAISE Form_Trigger_Failure;

Busca_Descricao_Produto;EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE(‘Este produto foi excluído !!’);

7

Page 262: Oracle Forms Builder 6

Código Flexível

Disparando Triggers no Modo Enter Query

A propriedade Fire in Enter Query Mode de uma trigger determina se ela pode ser disparada quando o evento para qual ela estiver associada ocorrer no modo Enter-Query. Por default, esta propriedade é setada para Yes.

Exemplo:

É definido um botão para o operador invocar uma LOV como ajuda para entrada de dados Seria interessante que este botão também pudesse ser utilizado no modo Enter-Query para fornecer argumentos de pesquisa para a consulta. Neste caso, a trigger WHEN-BUTTON-PRESSED abaixo para o item tipo button BOTAO_LOV_DE_CLIENTES deve possuir a propriedade Fire in Enter Query Mode igual a Yes.

DBC Database Company

IF SHOW_LOV(‘lov_clientes’)THEN MESSAGE(‘Seleção OK !!!’);END IF;

8

Page 263: Oracle Forms Builder 6

Código Flexível

Obtendo informações de consultas através de variáveis de sistema

Usando a variável de sistema SYSTEM.MODE

Se uma trigger pode ser disparada no modo Normal e no modo Enter Query, é possível definir funcionalidades específicas para a trigger em cada modo, através da variável de sistema SYSTEM.MODE.

SYSTEM.MODE é uma variável de sistema somente para consulta mantida exclusivamente pelo Oracle Forms.

Relação de valores da variável SYSTEM.MODE:

Valor Significado

NORMAL O form está em modo Normal.

ENTER-QUERY O form está em modo Enter-Query.

QUERY Uma consulta está em andamento (executando Fetch dos registros).

Exemplo:

É definido um botão para o operador invocar uma Consulta. Seria interessante que este botão, se pressionado no modo Normal, colocasse o form no modo Enter Query, caso contrário se o form já estivesse no modo Enter-Query , o botão executasse a consulta. Neste caso a Trigger WHEN-BUTTON-PRESSED abaixo para o item tipo button BOTAO_CONSULTAR deve possuir a propriedade Fire in Enter Query Mode igual a Yes.

Usando a variável de sistema SYSTEM.LAST_QUERY

Retorna o SELECT montado pelo forms para executar a consulta mais recente.

DBC Database Company

IF :SYSTEM.MODE = ‘NORMAL’THEN ENTER_QUERY;ELSE EXECUTE_QUERY;END IF;

9

Page 264: Oracle Forms Builder 6

Código Flexível

Usando as Built-ins GET_BLOCK_PROPERTY e SET_BLOCK_PROPERTY

Você pode consultar e setar algumas propriedades que afetam o comportamento da consulta de um bloco usando as Built-ins GET_BLOCK_PROPERTY e SET_BLOCK_PROPERTY, juntamente com alguns argumentos:

DEFAULT_WHERE(*): Restrição default dos dados do bloco. ORDER_BY(*): Argumento de ordenação do bloco. QUERY_ALLOWED(*): Se o bloco permite consulta. QUERY_HITS(*): Número de registros consultados até o momento. QUERY_OPTIONS: Como a consulta vai executar. RECORDS_TO_FETCH: Total de registros trazidos em cada fetch.

DBC Database Company 10

Page 265: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Escreva uma trigger para popular o item NOME_DO_CLIENTE e o item NOME_DO_VENDEDOR para cada linha retornada pela consulta no bloco PEDIDOS.

2. Salve, execute o módulo e teste-o.

3. Garanta que o botão BOTAO_SAIR não execute a saída do módulo no modo ENTER-QUERY.

4. Salve, execute o módulo e teste-o. Encerre a sessão Oracle Forms Builder.

DBC Database Company 11

Page 266: Oracle Forms Builder 6

Oracle Forms Builder 6

18.18. ValidaçõesValidações

DBC Database Company

Page 267: Oracle Forms Builder 6

Código Flexível

Objetivos

Entender os efeitos da unidade de validação sobre um módulo form. Conhecer outras formas de validação. Adicionar triggers que são disparadas quando a validação de um registro acontece.

DBC Database Company 2

Susana Schommer, 03/01/-1,
Page 268: Oracle Forms Builder 6

Código Flexível

Processo de Validação

Oracle Forms executa o processo de validação em vários níveis para garantir que registros e valores individuais sigam determinadas regras.

Nível em que ocorrem as validações:

Nível de Validação Descrição

Item O Oracle Forms registra o status de cada item de modo a determinar se está válido. Se um Item é alterado e ainda não está marcado como válido então o Oracle Forms primeiro executa o check de validação padrão conforme as propriedades do item. Estes checks são executados antes de disparar a trigger WHEN-VALIDATE-ITEM.Validações padrões incluem:. Máscara de formatação. Obrigatoriedade. Tipo de dado Oracle (Data type). Range (low-High). LOV for Validation (Veja depois neste capítulo).

Record Depois de deixar o registro, o Oracle Forms verifica se o registro é válido e a trigger WHEN-VALIDATE-RECORD é disparada, se presente. Quando o registro passa estes checks ele é setado para válido.

Block e Form Todos os registros abaixo deste nível são validados. Por exemplo, no COMMIT do módulo, então todos os seus registros são validados, a menos que esta ação seja suprimida.

DBC Database Company 3

Page 269: Oracle Forms Builder 6

Código Flexível

Unidade de Validação

Quando ocorre a validação

Oracle Forms executa a validação para a unidade de validação quando:

a tecla [Enter] é pressionada ou a procedure built-in ENTER é invocada, com o propósito de forçar a validação imediatamente; o operador ou uma trigger navega para fora da unidade de validação, incluindo quando as mudanças são salvas (commited). A unidade de validação default é item, mas pode também ser setada para record, block ou form pelo Designer.

A unidade de validação define a quantidade máxima de dados que um operador pode entrar em um form antes do Oracle Forms iniciar a validação.

Validation Unit é uma propriedade do módulo Form e pode ser setada pelo Property Palette para:

. Item (Default) . Record . Block . Form

A opção Validação Default é equivalente a validação a nível de item. Na prática a validação a nível de item significa que o Oracle Forms valida as mudanças quando o operador navega para fora de um item alterado. Desta forma as validações padrões são realizadas, sendo disparada a trigger WHEN-VALIDATE-ITEM imediatamente, e o operador recebe uma falha de validação de um item tão logo sair dele.

Em uma unidade de validação maior (record, block ou form) os checks vistos acima são postecipados até que uma tentativa de navegação para fora da unidade de validação aconteça. Todas as validações de itens e registros adiadas são realizadas juntas, incluindo o disparo das triggers WHEN-VALIDATE-ITEM e WHEN-VALIDATE-RECORD.

Você pode setar uma unidade de validação acima de item quando a validação referencia um Banco não Oracle e você deseja adiar a transmissão até que o operador complete o registro (Record).

DBC Database Company 4

Page 270: Oracle Forms Builder 6

Código Flexível

Utilizando LOVs para validações

Quando você associa uma LOV a um item através da propriedade LOV, você pode opcionalmente utilizar o conteúdo da LOV para validar os dados entrados para o item.

Faça isto setando a propriedade LOV for Validation para YES. No momento de validação o Oracle Forms automaticamente utiliza o valor do item como um string de pesquisa não sensitivo ao case para o conteúdo da LOV.

Tenha certeza que na LOV que você criou tenha a coluna de validação como a primeira mostrada e com Display Width maior que 0. Por motivos de performance não utilize LOV for validation em LOVs muito grandes.

Validação contra uma LOV:

Se o item é unico e igual a um valor da primeira coluna da LOV, a fase de validação é concluída sem mostrar a LOV. Se o valor do item encontra somente um registro na LOV, mas é igual somente a parte do valor da LOV então a coluna completa da LOV é retornada para o item (se o item está definido como return item da LOV). Se mais do que um registro é encontrado para o valor do item, então estes registros são mostrados na LOV e o operador deve escolher. Se nenhum valor compatível é encontrado na LOV, então todo o conteúdo da LOV é mostrado para o operador.

DBC Database Company 5

Page 271: Oracle Forms Builder 6

Código Flexível

Utilizando Triggers para Validações

Existem triggers que são disparadas para validação permitindo ações customizadas.

WHEN-VALIDATE-ITEM

Esta trigger é disparada quando o Oracle Forms valida um item que esta marcado como “changed” . Isto acontece se o operador altera o item ou se outra trigger altera o valor deste item.

A trigger é disparada imediatamente após as validações padrão do Oracle Forms para o item alterado. Esta validação geralmente ocorre quando o cursor navega para fora do item.

Uso:

Incrementar a validação de um item para validações complexas que não podem ser implementadas pelas propriedades de um item.

Popular outros itens como: itens não base table e itens displays.

Exemplo:

Trigger WHEN-VALIDATE-ITEM para o item QUANTIDADE no bloco ITENS do form PEDIDOS.

Trigger WHEN-VALIDATE-Item a nível de item para o item DATA_DO_PEDIDO.

DBC Database Company

DECLARE v_quant NUMBER;BEGIN SELECT SUM(quantidade_em_estoque) INTO v_quant FROM estoque WHERE codigo_do_produto = :itens.codigo_do_produto; IF :itens.quantidade > v_quant THEN :itens.quantidade := v_quant; MESSAGE('Não possui estoque !!!'); END IF;END;

IF :pedidos.data_do_pedido > SYSDATETHEN MESSAGE(‘Data do pedido é posterior a data atual !!!’); RAISE Form_Triggert_Failure;END IF;

6

Page 272: Oracle Forms Builder 6

Código Flexível

WHEN-VALIDATE-RECORD

Esta trigger é disparada após a validação padrão do registro quando o operador navega para outro registro. Assim que o Oracle Forms checa se todos os itens obrigatórios do registro estão com status válido a trigger é disparada permitindo checks adicionais envolvendo mais do que um dos itens do registro.

Exemplo:

Trigger WHEN-VALIDATE-RECORD a nível de bloco para o bloco PEDIDOS.

DBC Database Company

IF :pedidos.data_previsao_da_entrega < :pedidos.data_do_pedidoTHEN MESSAGE('Data da expedição é anterior à do pedido !!!'); RAISE Form_Trigger_Failure;END IF;

7

Page 273: Oracle Forms Builder 6

Código Flexível

Status de validação

De Item

Status Descrição

NEW

Quando o registro é novo, foi criado, o Forms marca o status do Item como NEW.

Quando o item é populado pela propriedade Copy Value from Item.

CHANGED Quando o item é alterado pelo usuário ou trigger. Quando um Item de um novo registro é alterado, todos os

items no registro serão marcados como CHANGED.

VALID

Quando a validação teve êxito. Quando o item do registro for consultado, e não alterado. Depois da fase de POST e COMMIT. Quando o item do registro foi duplicado, e não alterado.

De Registro

Status Descrição

NEW

Quando o registro é novo, foi criado, o Forms marca o status do registro como NEW.

Quando um item é populado pela propriedade Copy Value from Item.

CHANGED Quando um item do registro é alterado, o registro recebe o status de CHANGED.

VALID

Quando todos os itens do registro forem validados com êxito. Quando o registro for consultado, e não alterado. Depois da fase de POST e COMMIT. Quando o registro foi duplicado, e não alterado.

DBC Database Company 8

Page 274: Oracle Forms Builder 6

Código Flexível

Relação de algumas Built-ins

Abaixo algumas built-ins que podem ser utilizadas em triggers para afetar a validação.

CLEAR_BLOCK, CLEAR_FORM e EXIT_FORM

O primeiro parâmetro destas built-ins, Commit_mode, controla o que deve ser feito com alterações efetuadas e não salvas (commited) quando um bloco é limpo (CLEAR_BLOCK), um form é limpo (CLEAR_FORM) ou a saída do form é solicitada (EXIT_FORM). Quando setado I, as mudanças não são validadas nem salvas (Commited). Por default, o operador recebe um alert box solicitando salvar (Commit) ou desconsiderar (Rollback).

ENTER

A built-in ENTER executa a mesma ação que a tecla [Enter], que é forçar a validação dos dados na unidade corrente de validação.

SET_FORM_PROPERTY

Esta built-in pode ser utilizada para desabilitar a validação Oracle Forms.

Quando se está em fase de desenvolvimento e testes as vezes é interessante desprezar as validações normais.

Exemplo:

Você pode utilizar esta built-in para alterar a unidade de validação por programação.

Exemplo:

Opções de escopo:

DEFAULT_SCOPE. BLOCK_SCOPE. RECORD_SCOPE. ITEM_SCOPE.

ITEM_IS_VALID

Usado com a built-in GET_ITEM_PROPERTY, retorna se o item foi validado ou não. Usado com a built-in SET_ITEM_PROPERTY, força com que o item não seja validado, ou

seja, não dispare, se possuir, a trigger WHEN_VALIDADE_ITEM.

DBC Database Company

SET_FORM_PROPERTY(‘nome_do_forms’, VALIDATION, PROPERTY_FALSE);

SET_FORM_PROPERTY(‘nome_do_forms’, VALIDATION_UNIT, escopo);

9

Page 275: Oracle Forms Builder 6

Oracle Forms Builder 6

19.19. NavegaçãoNavegação

DBC Database Company

Page 276: Oracle Forms Builder 6

Código Flexível

Objetivos

Entender as diferenças entre navegação interna e externa. Utilizar triggers de navegação. Utilizar navegação em triggers.

DBC Database Company 2

Page 277: Oracle Forms Builder 6

Código Flexível

Controlando a Navegação

Como já foi visto, você pode controlar a ordem em que o usuário navega pelos objetos da sua aplicação, através da seqüência em que os blocos e itens foram definidos no Object Navigator, juntamente com as propriedades dos blocos e de seus respectivos itens.

Propriedades que Influenciam na navegação

Propriedade Descrição

Mouse Navigation Limit Determina o quanto o usuário pode navegar fora do item com o mouse.

First Navigation BlockEspecifica o nome do bloco para qual o Oracle Forms deve navegar quando é iniciado.

Outras propriedades já vistas

Objeto Descrição

Block Navigation Style Next Navigation Block Previous Navigation Block

Item

Enabled Keyboard Navigable Mouse Navigate Previous Navigation Item Next Navigation Item

DBC Database Company 3

Page 278: Oracle Forms Builder 6

Código Flexível

Propriedade Mouse Navigate

A propriedade Mouse Navigate se aplica a objetos de tela manipulados pelo mouse. Esta propriedade é válida para os seguintes tipos de Itens: Button, Check Box, List Item, Radio group, etc.

Valor Descrição

YesO Oracle Forms navega para o item, causando o disparo das

triggers de navegação e de validação, se houverem

No

O Oracle Forms não navega para o item, não causando o disparo das triggers de navegação e de validação, se houverem.

O foco permanece no item atual, e o item clicado executará sua funcionalidade normal, inclusive disparando triggers associadas à ele, se houverem.

DBC Database Company 4

Page 279: Oracle Forms Builder 6

Código Flexível

Navegação interna

Normalmente uma navegação ocorre quando o usuário move o foco de um objeto para outro objeto, envolvendo uma mudança de foco visível na tela.

As navegações internas são as que não são visíveis (navegações lógicas). Quando você entra em um módulo form, o foco está no primeiro item do primeiro bloco de

navegação do bloco; você não vê os eventos de navegação interna que ocorreram para que o foco se movesse para o primeiro item.

Estes eventos internos são:1. Entrada no form.2. Entrada no bloco.3. Entrada no registro.4. Entrada no item.

Quando você salva suas inserções, atualizações e deleções no Banco de dados, você não vê os eventos de navegação interna que ocorreram antes do processamento do Commit.

Estes eventos internos são:1. Saída do item corrente2. Saída do registro corrente.3. Saída do bloco corrente.

DBC Database Company 5

Page 280: Oracle Forms Builder 6

Código Flexível

Triggers de Navegação

As triggers de navegação podem ser divididas em dois grupos:

Triggers de Navegação PRE- e POST- Triggers WHEN-NEW-objeto-INSTANCE

Triggers PRE-

As triggers PRE- são disparadas durante a navegação antes da entrada no objeto especificado como parte do nome da trigger.

Triggers POST-

As triggers POST- são disparadas durante a navegação após a entrada no objeto especificado como parte do nome da trigger.

Quando as triggers PRE- e POST- não disparam

As triggers não são disparadas quando pertencem a uma unidade inferior que a unidade de validação corrente do módulo. Por exemplo: Se a unidade de validação é Record, as triggers PRE- e POST-TEXT-ITEM não são disparadas.

Quando as Triggers PRE- e POST- falham

Se as triggers PRE- e POST- falham o foco retorna ao ponto de origem (onde estava quando a trigger foi disparada). Para o usuário a sensação é de que o foco não se moveu.

Tipos de Triggers PRE- e POST

PRE-FORM POST-FORM PRE-BLOCK POST-BLOCK PRE_RECORD POST-RECORD PRE-TEXT-ITEM POST-TEXT-ITEM

DBC Database Company 6

Page 281: Oracle Forms Builder 6

Código Flexível

Armadilha de Navegação

Atenção, quando uma trigger PRE- ou POST falha o Oracle Forms tenta retornar o cursor lógico para o item original.

Exemplo:

Navegando do item A para o item B. Se a trigger PRE-TEXT-ITEM para o item B falha, o Oracle Forms tenta retornar o cursor lógico para o item A. A trigger PRE-TEXT-ITEM para o item A é disparada; se ocorrer uma falha também nesta trigger o cursor não tem para onde ir e um erro fatal ocorre.

DBC Database Company 7

Page 282: Oracle Forms Builder 6

Código Flexível

Triggers WHEN-NEW-“objeto”-INSTANCE

Trigger Quando dispara

WHEN-NEW-ITEM-INSTANCEDepois da navegação com sucesso para uma nova instância de item (outro item).

WHEN-NEW-RECORD_INSTANCEDepois da navegação com sucesso para uma nova instância de registro (outro registro).

WHEN-NEW-BLOCK-INSTANCEDepois da navegação com sucesso para uma nova instância de bloco (outro bloco).

WHEN-NEW-FORM-INSTANCEDepois da navegação com sucesso para uma nova instancia de form (outro form).

Inicializando Objetos

Utilize as triggers WHEN-NEW-“objeto”-INSTANCE em conjunto com as built-ins SET-“objeto”-PROPERTY para inicializar objetos do módulo, especialmente se as inicializações forem condicionais.

Exemplos:

A trigger WHEN-NEW-BLOCK-INSTANCE define condicionalmente a propriedade Delete Allowed do bloco ITENS para No.

A trigger WHEN-NEW-FORM-INSTANCE executa uma consulta toda vez que o usuário

entra no módulo.

DBC Database Company

IF GET_APPLICATION_PROPERTY(USERNAME) = ‘MARCELO’THEN SET_BLOCK_PROPERTY(‘itens’, DELETE_ALLOWED, PROPERTY_TRUE);ELSE SET_BLOCK_PROPERTY(‘itens’, DELETE_ALLOWED, PROPERTY_FALSE);END IF;

EXECUTE_QUERY;

8

Page 283: Oracle Forms Builder 6

Código Flexível

Built-ins usadas para Navegação em Triggers

Você pode iniciar uma navegação programaticamente utilizando Built-ins.

Built-in Descrição

GO_FORM Navega para um form já aberto (em uma aplicação com mais de um form).

GO_BLOCK Navega para o bloco indicado.

GO_ITEM Navega para o item indicado.

GO_RECORD Navega para o registro indicado.

NEXT_BLOCK Navega para próximo bloco.

NEXT_ITEM Navega para próximo Item.

NEXT_KEY Navega para o item primary key, que permite digitação, do próximo bloco.

NEXT_RECORD Navega para o primeiro item que permite digitação do próximo registro.

DOWN Navega para a instância do item corrente no próximo registro.

UP Navega para a instância do item corrente no registro anterior.

SCROLL_UP Executa o scroll do bloco de modo que os registros acima do primeiro registro visível sejam mostrados.

SCROLL_DOWN Executa o scroll do bloco de modo que os registros abaixo do último registro visível sejam mostrados.

PREVIOUS_BLOCK Navega para o bloco anterior.

PREVIOUS_ITEM Navega para o Item anterior.

PREVIOUS_RECORD Navega para o primeiro item que permite digitação (enterable) do registro anterior.

DBC Database Company 9

Page 284: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Escreva uma trigger WHEN-NEW-FORM-INSTANCE para executar uma consulta assim que o form iniciar. Utilize a built-in EXECUTE-QUERY.

2. Na mesma trigger atribua o string ‘?’, ao item HELP.

3. Faça com que o CANVAS_HELP, seja exibido quando o usuário passar sobre o item HELP, no canvas TOOLBAR. Utilize a built-in SHOW_VIEW(‘nome do canvas’), para mostrar o canvas e HIDE_VIEW(‘nome do canvas’), para esconde-lo quando o mouse sair de cima do item HELP.

4. Salve, execute o módulo e teste-o.

5. Escreva uma trigger que será disparada cada vez que o cursor se posicionar em um registro no bloco ITENS, esta trigger deve popular o item IMAGEM_DO_PRODUTO com a imagem do produto para o CODIGO_DO_PRODUTO do item corrente. Utilize a built-in READ_IMAGE_FILE e a trigger WHEN-NEW-RECORD-INSTANCE para o bloco ITENS.

6. Salve, execute o módulo e teste-o.

7. Existe mais alguma trigger onde seria interessante colocar este mesmo código? Implemente o mesmo código para a trigger WHEN-VALIDATE-ITEM para o item CODIGO_DO_PRODUTO.

8. Salve, execute o form e teste. Encerre a sessão Oracle Forms Builder.

DBC Database Company 10

Page 285: Oracle Forms Builder 6

Oracle Forms Builder 6

20.20. Processamento deProcessamento de TransaçãoTransação

DBC Database Company

Page 286: Oracle Forms Builder 6

Código Flexível

Objetivos

Entender o processo utilizado pelo Oracle Forms para aplicar as mudanças do usuário ao Banco de dados.

Escrever triggers transacionais em pontos relevantes para incluir funcionalidades adicionais. Atribuir um número seqüencial a um item de um registro que será aplicado a tabela base.

DBC Database Company 2

Page 287: Oracle Forms Builder 6

Código Flexível

Processamento de Transação

Quando o Oracle Forms recebe a solicitação de salvar (Commit) as mudanças efetuadas no form, se inicia um processo que envolve eventos na transação corrente no Banco de dados.

Este processo inclui:

Processo default de transação Oracle Form. Se aplica as mudanças efetuadas pelo operador às tabelas do Banco de dados. Disparo de triggers transacionais. Executam ações adicionais ou modificam a ação default no processo de salvamento que foi definido pelo desenvolvedor. Quando estas ações são completadas com sucesso o Oracle Forms efetua o Commit da transação, efetivando as alterações.

Quando ocorre o processamento da transação

O operador pressiona a tecla [Save] ou seleciona Action -> Save a partir do menu. A built-in COMMIT_FORM é chamada a partir de uma trigger.

O que acontece no Processamento da Transação

Posting Esta fase escreve as mudanças efetuadas pelo operador nas tabelas utilizando comandos

INSERT, UPDATE e DELETE implícitos gerados pelo Oracle Forms. As mudanças são aplicadas na ordem de seqüência dos blocos, assim como eles aparecem

no Object Navigator. Para cada bloco as deleções são executadas primeiro, seguidas das inserções e atualizações.

A built-in POST pode chamar este processo sozinho.Commit

Esta fase executa o Commit do Banco de dados, tornando as alterações aplicadas permanentes e liberando os Locks.

Outras triggers transacionais são disparadas nesta fase se definidas

DBC Database Company 3

Page 288: Oracle Forms Builder 6

Código Flexível

Tarefas executada em um processamento de transação

ROLLBACKS

O Oracle Forms executará o Rollback das alterações efetuadas se um erro ocorrer no processamento default da transação ou se uma trigger transacional falhar.

Por default , o Oracle Forms emite uma mensagem informando ao operador o erro, que deve efetuar a correção e tentar novamente.

SAVEPOINTS

O Oracle Forms insere Savepoints em uma transação automaticamente, e executa o Rollback para o último Savepoint se certos eventos ocorrem. Geralmente este Savepoints são para uso interno do Oracle Forms, mas certas buit-ins podem solicitar um Rollback para o último Savepoint através da opção TO_SAVEPOINT. Isto incluido na built-in EXIT_FORM.

LOCKS

Quando você atualiza ou deleta um registro Base Table em uma aplicação forms, automaticamente é aplicado um lock no registro. Locks também aplicam-se durante a fase de posting de uma transação, e para declarações de DML usadas em seu código PL/SQL.

O.b.s.:

Os comandos SQL: COMMIT, ROLLBACK e SAVEPOINT não podem ser chamados diretamente em uma trigger. Se estes forem encontrados em uma program-unit, a nível de form, o Oracle Forms trata o comando COMMIT como uma chamada a built-in COMMIT_FORM e o comando ROLLBACK como uma chamada a built-in CLEAR_FORM.

DBC Database Company 4

Page 289: Oracle Forms Builder 6

Código Flexível

Incrementando o processamento de uma Transação

Exemplo de alguns incrementos que você pode implementar em uma transação:

Escrever mudanças a tabelas não base table. Registrar informações de auditoria de uma transação. Obter um número seqüencial para uma Unique Key de um registro. Executar validações antes de uma linha ser deletada.

Triggers transacionais

Estas triggers são disparadas devido ao processo de uma transação. Dentro destas triggers você pode incluir:

Comandos SQL, SELECT e comandos DML, incluindo INSERT, UPDATE e DELETE. Construções PL/SQL.

Existem seis tipos de triggers transacionais, a nível de bloco, que são disparadas antes ou depois do comando DML, que o Oracle Forms emite para a fase de Post do processamento da transação.

PRE-DELETE : disparada antes de cada operação de Delete no processamento default da transação. POST-DELETE : disparada após cada operação de Delete no processamento default da transação. PRE-INSERT : disparada antes de cada operação de Insert no processamento default da transação. POST-INSERT : disparada após cada operação de Insert no processamento default da transação. PRE-UPDATE : disparada antes de cada operação de Update no processamento default da transação. POST-UPDATE : disparada após cada operação de Update no processamento default da transação.

Estas triggers são disparadas pelo processamento completo de uma transação ou quando a fase de POST é disparada sozinha (você pode fazer isto pela built-in POST).

Se uma trigger transacional falha é executado o Rollback da transação inteira. As triggers PRE- e POST- são disparadas mesmo que o desenvolvedor tenha escrito uma

trigger que substitua o processamento default de registros (isto pode ser feito pelas triggers ON-INSERT, ON-UPDATE e ON-DELETE).

DBC Database Company 5

Page 290: Oracle Forms Builder 6

Código Flexível

Exemplo do processamento de um Update:

1. O Operador atualiza o Item PRECO do form.2. O operador salva a alteração iniciando o processo de transação.3. A tigger PRE-UPDATE é disparada (se existir). Neste estágio o item e a coluna ainda estão

diferentes porque o Update ainda não foi aplicado a tabela base. A trigger pode comparar os dois valores e por exemplo garantir que o novo preço não é menor que o anterior.

4. O Oracle Forms aplica a alteração do operador à linha da tabela do Banco de dados.5. A trigger POST-UPDATE é disparada (se existir). O item e a coluna são iguais neste momento,

no entanto o valor anterior ainda é mantida na área de Rollback, pois caso uma falha da trigger ocorra o valor original é restaurado.

6. O Oracle Forms emite um Commit, liberando a área de rollback, os Locks e efetivando as alterações no Banco de dados.

7. O operador recebe a mensagem ‘Transaction Completed’

DBC Database Company 6

Page 291: Oracle Forms Builder 6

Código Flexível

Validação de um Delete

Blocos Master-Detail ligados por uma Relation com propriedade Deletion Rule setada para Non Isolated, automaticamente previnem a deleção de um registro mestre se houver algum registro detalhe para ele.

Você pode implementar uma crítica adicional para garantir que nenhuma linha detalhe, dependente do registro mestre, que está sendo deletado, foi inserida por outro usuário.

Exemplo:

A trigger PRE-DELETE para o bloco CLIENTES previne a deleção de do registro mestre, se existirem pedidos para o cliente que está sendo deletado.

DBC Database Company

SELECT 1 INTO v_aux FROM pedidos WHERE codigo_do_cliente = :clientes.codigo; MESSAGE(‘Existem pedidos para este cliente !!!’); RAISE Form_Trigger_Failure;EXCEPTION WHEN NO_DATA_FOUND THEN NULL;

7

Page 292: Oracle Forms Builder 6

Código Flexível

Atribuindo números seqüenciais a registros

A partir de uma SEQUENCE

Utilize a trigger PRE-INSERT para atribuir um número seqüencial a partir de uma SEQUENCE, imediatamente antes da inserção do registro na tabela base.

Este método evita “buracos” na seqüência de números caso o operador desista da inserção do registro.

Exemplo:

A trigger PRE-INSERT para o bloco PEDIDOS atribui o próximo número da seqüência PEDIDOS_CODIGO_SQ para o item PEDIDOS_CODIGO que será escrito na coluna CODIGO da tabela PEDIDOS.

O.b.s.:

As propriedades Insert Allowed e Keyboard Navigable para o item PEDIDOS.CODIGO devem ser setadas para False, de modo que o operador não possa entrar com o CODIGO manualmente.

A partir de uma TABELA

PRE-INSERT : selecione o número disponível da sua tabela de seqüência (efetuando o lock da linha para evitar que outros usuários utilizem o mesmo número) e incremente o número (+1).

POST-INSERT : atualize a sua tabela de seqüência registrando o novo valor da seqüência (número anterior + 1).

DBC Database Company

SELECT pedidos_codigo_sq.NEXTVALINTO :pedidos.codigoFROM sys.dual;

8

Page 293: Oracle Forms Builder 6

Código Flexível

Mantendo uma trilha de auditoria

Utilize as triggers POST para registrar informações de auditoria.

Exemplo:

A trigger POST-UPDATE registra a operação de atualização na tabela UPD_AUDIT.

DBC Database Company

INSERT INTO updt_audit ( codigo , data_hora , usuario)VALUES ( :pedidos.codigo , SYSDATE , USER);

9

Page 294: Oracle Forms Builder 6

Código Flexível

Informações sobre uma variável tipo Cursor no PL/SQL

Atributos de um Cursor PL/SQL implícito:

Atributos Valor

SQL%FOUNDTRUE: indica que uma ou mais linhas foram processadas.FALSE: indica que nenhuma linha foi processada.

SQL%NOTFOUNDTRUE: indica que nenhuma linha foi processada.FALSE: indica que uma ou mais linhas foram processadas.

SQL%ROWCOUNT Informa um número inteiro indicando o número de linhas processadas.

Exemplo de utilização:

DBC Database Company

UPDATE pedidosSET Data_previsao_da_entrega = SYSDATEWHERE codigo = :pedidos.codigo;IF SQL%NOTFOUNDTHEN MESSAGE (‘Registro não encontrado !!!’); RAISE Form_Trigger_Failure;END IF;

10

Page 295: Oracle Forms Builder 6

Código Flexível

Customizando o início e o fim de uma transação

Além das triggers que são disparadas durante o processamento de registros, é possível definir triggers transacionais que são disparadas no início e no final do processo de cada transação.

Estas triggers devem ser definidas a nível de form

Triggers disparadas no início e no fim de uma transação:

Trigger Descrição

PRE-COMMITDisparada no Início da fase de POST, mas somente se houver mudanças no form para o POST.

POST-FORMS-COMMITDisparada após a fase de POST (se o registro foi ou não POSTED), mas antes do Commit do Banco de dados. Isto significa que a transação pode ainda efetuar o Rollback se a trigger falhar.

POST-DATABASE-COMMIT Disparada após a transação ser finalizada. A falha desta trigger não efetua Rollback da transação.

DBC Database Company 11

Page 296: Oracle Forms Builder 6

Código Flexível

Outras triggers transacionais a nível de bloco

Trigger Descrição

ON-INSERT Disparada em substituição a cada operação de inserção.

ON-UPDATE Disparada em substituição a cada operação de atualização.

ON-DELETE Disparada em substituição a cada operação de deleção.

DBC Database Company 12

Page 297: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Escreva uma trigger transacional no bloco PEDIDOS para popular o item CODIGO do bloco PEDIDOS, com o próximo valor da seqüência PEDIDOS_CODIGO_SQ, quando você salvar o registro inserido.

Utilize a trigger PRE-INSERT. Altere as propriedades Requerid, Insert Allowed e Keyboard Navigable do item para No.

2. Reordene a seqüência do bloco PEDIDOS e garanta que o item CODIGO_DO_CLIENTE é o primeiro item no qual é permitida digitação.

3. Salve, execute o módulo e teste-o.

4. Escreva outra trigger transacional no bloco ITENS para popular o Item NUMERO_DO_ITEM do bloco ITENS, quando você salvar o registro inserido, derive este número adicionando 1 ao maior número de itens para o pedido.

Utilize a trigger PRE-INSERT. Altere as propriedades Requerid, Insert Allowed e Keyboard Navigable do item para No.

5. Salve, execute o módulo e teste-o. Encerre a sessão Oracle Forms Builder.

DBC Database Company 13

Page 298: Oracle Forms Builder 6

Oracle Forms Builder 6

21.21. Código FlexívelCódigo Flexível

DBC Database Company

Page 299: Oracle Forms Builder 6

Código Flexível

Objetivos

Utilizar variáveis de sistema para construir um código mais genérico. Utilizar built-ins para construir um código mais flexível. Referenciar objetos pelo ID Interno. Referenciar itens indiretamente.

DBC Database Company 2

Page 300: Oracle Forms Builder 6

Código Flexível

Conceito de código flexível

Código flexível é um código que pode ser utilizado novamente. Geralmente utiliza variáveis de sistema ao invés de nomes de objetos. As vantagens são: facilidade de manutenção e aumento de produtividade.

DBC Database Company 3

Page 301: Oracle Forms Builder 6

Código Flexível

Utilizando variáveis de sistema

Algumas variáveis de sistema já foram vistas e utilizadas em capítulos anteriores, tais como modo de operação, nível de mensagem, etc. Nesta seção serão vistas variáveis de sistema que provêm o estado corrente do registro, do bloco e do form.

Variáveis de sistema para localizar o foco corrente (Input)

Variável Descrição

CURSOR_ITEM Determina em qual item está o foco corrente.

CURSOR_BLOCK Determina em qual bloco está o foco corrente.

CURSOR_RECORD Determina em qual registro está o foco corrente.

CURSOR_VALUE Determina em que valor do item está o foco corrente.

Variáveis de sistema para localizar o foco de uma trigger

Variável Descrição

TRIGGER_ITEM Determina o bloco e o item que tinha o foco corrente (input) no momento em que a trigger foi disparada (iniciada).

TRIGGER_RECORD Determina o número do registro que o Oracle Forms está processando.

TRIGGER_BLOCK Determina o bloco que tinha o foco corrente (input) no momento em que a trigger foi disparada (iniciada).

Variável de Sistema para determinar o estado corrente do registro: SYSTEM_RECORD_STATUS

Status Descrição

CHANGED O registro consultado foi retornado (fetched) do Banco de dados e pelo menos um item base table foi alterado.

INSERT O usuário (ou uma trigger) entrou com um valor para um item base table de um registro novo.

NEW O usuário (ou uma trigger) ainda não entrou com um valor em um item base table de um registro novo.

QUERY O registro consultado foi retornado (fetched) do Banco de dados e nenhum item base table foi alterado.

DBC Database Company 4

Page 302: Oracle Forms Builder 6

Código Flexível

Variável de sistema para determinar o estado corrente do bloco: SYSTEM_BLOCK_STATUS

Status Descrição

CHANGED O bloco contém pelo menos um registro com o status de CHANGED e INSERT.

NEW O bloco contém somente registros com status NEW.

QUERY O bloco contém somente registros com status QUERY.

Variável de sistema para determinar o estado corrente do form: SYSTEM_FORM_STATUS

Status Descrição

CHANGED O form contém pelo menos um registro com o status de CHANGED e INSERT.

NEW O form contém somente registros com status NEW.

QUERY O form contém somente registros com status QUERY.

DBC Database Company 5

Page 303: Oracle Forms Builder 6

Código Flexível

Utilizando Built-ins para obter informações sobre objetos

Built-in Descrição

GET_APPLICATION_PROPERTY Retorna informação sobre uma propriedade específica da aplicação Oracle Forms corrente.

GET_BLOCK_PROPERTY Retorna informação sobre uma propriedade específica do bloco especificado.

GET_ITEM_PROPERTY Retorna informação sobre uma propriedade específica do item especificado.

SET_ITEM_INSTANCE_PROPERTY Modifica propriedades relativas a instância de um item.

SET_MENU_ITEM_PROPERTY Modifica propriedades relativas a itens do tipo menu.

SET_TAB_PAGE_PROPERTY Modifica uma página específica de um canvas do tipo TAB.

Exemplos:

Capturando o nome e a password do usuário corrente.

Determinando o primeiro registro que é visível no bloco ITENS no momento.

Determinando o canvas em que o foco (input) se encontra.

Modificar o atributo visual do registro do item corrente.

SET_ITEM_INSTANCE_PROPERTY( :SYSTEM.CURSOR_ITEM, VISUAL_ATTRIBUTE , CURRENT_RECORD, A_CORRENTE);

Habilitar o item save do menu.

Habilitar a página enderecos do canvas clientes.

DBC Database Company

:GLOBAL.username := GET_APPLICATION_PROPERTY(USERNAME);:GLOBAL.password := GET_APPLICATION_PROPERTY(PASSWORD);

... GET_BLOCK_PROPERTY(‘itens, TOP_RECORD)

DECLARE nome_canvas VARCHAR2(30);BEGIN nome_canvas := GET_ITEM_PROPERTY( :SYSTEM.CURSOR_ITEM , item_canvas); ...END;

SET_MENU_ITEM_PROPERTY(‘arquivo.salvar’, ENABLED, PROPERTY_TRUE);

6

Page 304: Oracle Forms Builder 6

Código Flexível

DBC Database Company

SET_TAB_PAGE_PROPERTY(‘clientes.enderecos’, ENABLED , PROPERTY_TRUE);

7

Page 305: Oracle Forms Builder 6

Código Flexível

Referenciando objetos pelo ID interno

O Oracle Forms atribui um ID interno para os objetos que você cria. O ID é um valor interno que nunca é mostrado.

Você pode obter o ID de um objeto chamando a built-in FIND_ precedida pelo nome de subprograma apropriado para o tipo de objeto. A built-in FIND_ necessita do nome completo do objeto como parâmetro.

Os valores retornados pela built-in FIND_ são de um tipo específico. Os tipos para IDs de objetos são predefinidos pelo Oracle Forms. Existe um tipo diferente para cada tipo de objeto.

Vantagens do uso de ID de objetos

Melhor Performance. O Oracle Forms procura pelo ID do objeto uma única vez quando da chamada da buit-in

FIND_. Quando você se referencia a um objeto pelo seu nome o Oracle precisa procurar pelo seu ID toda vez que você faz uma referência.

Permite um código mais genérico.

DBC Database Company 8

Page 306: Oracle Forms Builder 6

Código Flexível

Built-ins FIND_ e tipos de dados retornados

Tipo de Objeto Built-in FIND_ Tipo de dado retornado

ALERT FIND_ALERT ALERT

BLOCK FIND_BLOCK BLOCK

CANVAS FIND_CANVAS CANVAS

EDITOR FIND_EDITOR EDITOR

FORM FIND_FORM FORM

ITEM FIND_ITEM ITEM

LOV FIND_LOV LOV

RELATION FIND_RELATION RELATION

VIEWPORT FIND_VIEW VIEWPORT

WINDOW FIND_WINDOW WINDOW

Para fazer uso de um ID de objeto você precisa primeiro atribuí-lo a uma variável. Você deve declarar a variável do mesmo tipo do ID do objeto.

Exemplo:

Atribuindo o ID do item que possui o foco (input) corrente para uma variável. Referenciando o item ITENS.PRECO na built-in SET_ITEM_PROPERTY:

Compare com a referencia ao Objeto pelo nome

Referenciando o item ITENS.PRECO na built-in SET_ITEM_PROPERTY:

DBC Database Company

DECLARE v_id ITEM;BEGIN v_id := FIND_ITEM(‘itens.preco’);END;

SET_ITEM_PROPERTY(v_id, POSITION, 50, 35);

SET_ITEM_PROPERTY(‘itens.preco’, POSITION, 50, 35);

9

Page 307: Oracle Forms Builder 6

Código Flexível

O.b.s.:

Você pode misturar referências a ID de objetos e a nome de objetos na mesma lista de argumentos de uma built-in, desde que, cada argumento se refira a um objeto distinto.

Entretanto, você não pode utilizar um ID para compor o nome do objeto quando o argumento exige um nome totalmente qualificado (ex.: nome_bloco.nome_item).

Exemplo:

A seguinte chamada é ilegal, supondo que v_bloco_id fosse uma variável tipo BLOCK utilizada para compor o nome do item ITENS.PRECO.

DBC Database Company

GO_ITEM (v_bloco_id.‘preco’);

10

Page 308: Oracle Forms Builder 6

Código Flexível

Utilizando variáveis globais

Variáveis globais são aquelas que ficam ativas durante toda a sessão, ou seja, podem ser referenciadas por outros blocos além daquele onde a variável foi criada.

Variáveis globais são utilizadas para passar valores de um bloco para outro, ou mesmo de um form para outro, desde que na mesma sessão de execução.

Variáveis globais não precisam ser declaradas explicitamente, para se criar uma variável global basta atribuir um valor a uma variável com o prefixo :GLOBAL.

As variáveis globais são do tipo de dado CHAR.

Built-in DEFAULT_VALUE

Se por alguma razão uma variável global for referenciada e não tiver sido inicializada antes, um erro é gerado:

Você pode evitar este tipo de erro garantindo que a variável global exista através da built-in DEFAULT_VALUE; esta built-in cria e inicializa a variável global especificada caso ela ainda não exista.

Exemplos:

A seguinte trigger WHEN-BUTTON-PRESSED para o item BOTAO_PEDIDOS atribui o valor do item CLIENTES.CODIGO para a variável global GLOBAL.CODIGO_DO_CLIENTE antes de chamar o form PEDIDOS.

A seguinte trigger PRE-QUERY para o bloco PEDIDOS atribui o valor da variável global GLOBAL.CODIGO_DO_CLIENTE para o item PEDIDOS.CODIGO_DO_CLIENTE antes da execução da consulta de modo que a consulta só traga pedidos para o cliente passado pelo form CLIENTES.

DBC Database Company

FRM-40815:variable GLOBAL.nome_variavel does not exist.

DEFAULT_VALUE('NAO','GLOBAL.pedidos_abertos');:GLOBAL.codigo_do_cliente := :clientes.codigo;IF :GLOBAL.pedidos_aberto= ‘SIM'THEN GO_FORM('pedidos');ELSE OPEN_FORM('C:\Target\pedidos');END IF;

:pedidos.codigo_do_cliente := :GLOBAL.codigo_do_cliente;

11

Page 309: Oracle Forms Builder 6

Código Flexível

Utilizando a Built-in NAME_IN

A built-in NAME_IN retorna o conteúdo da variável indicada através de uma referência indireta a variável.

Exemplo:

As seguintes referências a CLIENTES.NOME são equivalentes.

Usando uma referência direta:

Usando uma referência indireta:

Exemplo :

O valor de retorno de NAME_IN é sempre um string de caracteres. Para utilizar NAME_IN para um item tipo DATE ou NUMBER utilize a função de conversão apropriada.

DBC Database Company

IF :clientes.nome = ‘Womansport’THEN ...

IF NAME_IN(‘clientes.nome’) = ‘Womansport’THEN ...

v_data := TO_DATE(NAME_IN(‘pedidos.data_do_pedido’));

12

Page 310: Oracle Forms Builder 6

Código Flexível

Utilizando a Built-in COPY

A built-in COPY atribui o valor indicado a variável ou ao item indicado. Utilizando a built-in COPY você pode referenciar indiretamente o item para o qual você está atribuindo um valor.

Exemplo:

Usando uma referência direta:

Usando uma referência indireta:

DBC Database Company

COPY(‘Womansport’, ‘clientes.nome’);

COPY(‘Womansport’, :GLOBAL.nome);COPY(‘Womansport’, NAME_IN(‘clientes.nome’));COPY(‘Womansport’, NAME_IN(‘global.nome’));

13

Page 311: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Altere a trigger que popula o item IMAGEM_DO_PRODUTO de modo que ela só o faça se a propriedade Visible do item estiver setada para Yes. Utilize a built-in GET_ITEM_PROPERTY.

2. Salve, execute o módulo e teste-o.

3. Altere a trigger WHEN-BUTTON-PRESSED para o item BOTAO_IMAGEM de modo a referenciar os objetos pelos seus IDs. Declare as variáveis para cada ID e utilize a built-in FIND_ para obter o ID de cada objeto referenciado pela trigger.

4. Salve, execute o módulo e teste-o.

5. Altere a trigger WHEN-BUTTON-PRESSED para o BOTAO_SALVAR no bloco CONTROL de modo que ela execute um teste na variável de sistema SYSTEM.FORM_STATUS para verificar se houve alguma alteração no form. Somente execute a built-in COMMIT_FORM se houverem mudanças (SYSTEM.FORM_STATUS = ‘CHANGED’).

6. Salve, execute o módulo e teste-o. Encerre a sessão Oracle Forms Builder.

DBC Database Company 14

Page 312: Oracle Forms Builder 6

Oracle Forms Builder 6

22.22. Compartilhando Objetos eCompartilhando Objetos e CódigosCódigos

DBC Database Company

Page 313: Oracle Forms Builder 6

Código Flexível

Objetivos

Utilizar a variedade de métodos para reutilização de objetos e códigos. Utilizar classes de propriedades. Utilizar grupos de objetos para reutilização. Conhecer os símbolos de herança do Property Pallete. Reutilização de objetos de uma biblioteca de objetos (Objetct Library). Utilizar as facilidades de cópia e referência. Compartilhar códigos PL/SQL.

DBC Database Company 2

Page 314: Oracle Forms Builder 6

Código Flexível

Compartilhando e reutilizando Código

Você deve compartilhar e reutilizar objetos e códigos sempre que possível.

Vantagens da reutilização

Produtividade Diminuição da manutenção Modularidade Padronização

DBC Database Company 3

Page 315: Oracle Forms Builder 6

Código Flexível

Classes de Propriedades

Uma classe de propriedades é um objeto que contém uma lista de propriedades e seus valores setados.

Classes de propriedades são utilizadas para aumentar a produtividade, setando padrões ou valores freqüentemente utilizados para propriedades comuns, associando-as com alguns objetos do form.

Utilize uma classe de propriedades para definir propriedades padrão não só para um objeto mas para muitos de uma só vez, o resultado é o aumento de produtividade.

Criando uma classe pelo Object Navigator

1. Clique na entrada Property Class.2. Clique no ícone Create. Uma nova entrada de classe de propriedades deve aparecer.3. Adicione as propriedades e seus valores para esta classe utilizando o ícone Add Property

no Property Palette.

Copiando propriedades de um objeto para uma classe

1. No Object Navigator, clique nas propriedades do objeto cujo você deseja copiar para uma classe de propriedades.

2. No Property Palette, clique no ícone Property Class. Um alert será mostrado. 3. Utilize o Object Navigator para localizar a classe criada e troque seu nome.

Adicionando uma propriedade a uma classe

Após criar uma classe adicione uma propriedade clicando no ícone Add Property, escolhendo a propriedade a partir da lista. Defina o valor apropriado para a propriedade pelo Property Palette.

Deletando uma propriedade de uma classe

Após criar uma classe remova uma propriedade clicando no ícone Delete Property.

DBC Database Company 4

Page 316: Oracle Forms Builder 6

Código Flexível

Herdando uma classe de propriedades

1. No Object Navigator, clique na entrada do objeto para o qual você deseja herdar propriedades.

2. Vá para o Property Palette do objeto e clique na propriedade Subclass Information, escolha de onde você deseja herdar as propriedades:

Object : Propriedades herdadas de um item de um bloco em um módulo forms. Property Class : Propriedades herdadas de uma classe de propriedades específica.

3. Os valores das propriedades herdadas da classe de propriedades são mostrados com uma seta.

Convertendo uma propriedade herdada (Inherit) para uma propriedade sobreposta (Variant)

Na propriedade do objeto, sobreponha um novo valor sobre o valor herdado da classe de propriedades.

Convertendo uma propriedade sobreposta (Variant) para uma propriedade herdada (Inherit)

Na propriedade do objeto clique no ícone Inherit.

DBC Database Company 5

Page 317: Oracle Forms Builder 6

Código Flexível

Grupo de Objetos

Um grupo de objetos (Object Group) é um conjunto lógico de objetos do Oracle Forms. Grupos de objetos são utilizados para agrupar objetos que se relacionam para serem

copiados ou referenciados por outros módulos.

Criando um Grupo de Objetos

1. Clique na entrada Object Group do Object Navigator.2. Clique no ícone Create. Uma nova entrada para Object Group deve aparecer.3. Altere o nome do Object Group.4. Clique na entrada Module do Object Navigator e clique no ícone Expand All.5. Clique em todos os objetos de um mesmo tipo que você deseja incluir no Object Group.6. Arraste os objetos selecionados para a nova entrada de Object Group do Object

Navigator. Os objetos serão mostrados como filhos do Object Group.7. Repita os passos 5 a 6 para outros tipos de objetos.

Obs.:

Incluindo um bloco em um grupo de objetos, automaticamente se incluem todos os itens, triggers a nível de itens, triggers a nível de blocos e relações (relations). Você não pode utilizar nenhum destes objetos em um Grupo de Objetos sem o bloco.

Deletando um objeto de um módulo, automaticamente é deletado o objeto do grupo de objetos.

Deletando um grupo de objetos de um módulo não são deletados seus objetos filhos do módulo.

DBC Database Company 6

Page 318: Oracle Forms Builder 6

Código Flexível

Copiando e Referenciando Objetos e Códigos

Você pode copiar ou referenciar objetos entre módulos pelo Object Navigator, da seguinte maneira:

1. Abra o módulo que possui o objeto a ser copiado.2. Abra o módulo para o qual você vai copiar o objeto.3. Selecione a entrada do objeto que você deseja copiar.4. Arraste o objeto selecionado para o tipo de entrada correspondente ao objeto no módulo

destino.5. No diálogo Copy or Subclass clique em Copy para copiar o objeto, e Subclass para

referenciá-lo.

DBC Database Company 7

Page 319: Oracle Forms Builder 6

Código Flexível

Reutilizando PL/SQL

Você pode reutilizar PL/SQL em triggers das seguintes formas:

1. Copiando e colando o código pelo menu selecionando Edit -> Copy ou Edit-> Paste.2. Copiando ou referenciando a trigger a partir de outro módulo form, utilizando Drag and

Drop no Object Navigator.

Unidades de Programa PL/SQL

Você pode criar unidades de programa PL/SQL (Program Units que são Procedures e Functions) através do Oracle Forms.

Uma Program Unit permite a utilização de parâmetros o que diminui a necessidade de cópia de objetos.

Passos para a criação de uma unidade de programa

1. Clique na entrada Program Unit do Object Navigator.2. Clique no ícone Create, o diálogo New Program Unit deve aparecer.3. Entre com o nome da Program Unit e selecione o tipo (Procedure, Function, Package

Specification ou Package Body). Clique em OK.4. No PL/SQL Editor entre com o código PL/SQL.5. Clique em Compile para compilar.6. Clique em Close para salvar e fechar o PL/SQL Editor.

DBC Database Company 8

Page 320: Oracle Forms Builder 6

Código Flexível

Object Library

É uma espécie de repositório de objetos que serão utilizados nos módulos em desenvolvimento, com o objetivo de customizar e também padronizar objetos comuns no módulo.

Recursos de uma Object Library

Podem conter itens individuais, por exemplo botão icônico. Em grupos de objetos o menor nível é o bloco.

Você pode armazenar um código PL/SQL. Se você mudar uma propriedade em um objeto referência em uma biblioteca de objetos,

todos os objetos referenciados serão trocados automaticamente.

Usando Object Libraries

Selecione Tools->Object Library no Object Navigator. Arraste o objeto do Object Navigator para o Object Library. O comentário descritivo vem da propriedade de comentário de objeto, mas pode ser editado

independentemente daquela propriedade’

Benefícios do Object Library

Há várias vantagens usando bibliotecas de objeto para desenvolver aplicativos:

Simplifica no compartilhamento e reutilização de objetos. Provêem o controle e execuções defaults. Elimina a necessidade de manter múltiplos forms referenciados.

DBC Database Company 9

Page 321: Oracle Forms Builder 6

Código Flexível

SmartClasses

Se você freqüentemente usa certos objetos padrões, como botões, itens data, e alertas, você pode marcar-los no Object Library como SmartClasses, e utilizar a opção de SmartClasses na referência de um item:

Selecione o objeto na biblioteca de objeto e acione Object->SmartClass. Você pode criar muitos objetos SmartClasses de um mesmo tipo de objeto, por exemplo, do

tipo item text uma SmartClass para número e outra para caracter.

Usando o SmartClass

Selecione um objeto no Layout editor ou Object Navigator. Clique no botão direito do mouse, e selecione SmartClasses Escolha a classe requerida, e o forms seta todas as propriedades do objeto com esta classe.

DBC Database Company 10

Page 322: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo PEDIDOS. Crie um grupo de objetos (Object Group) chamado OBJETOS_DE_ESTOQUE, consistindo do bloco ESTOQUE, seu canvas e window.

2. Crie um novo módulo e copie o grupo de Objetos (Object Group) OBJETOS_DE_ESTOQUE para ele.

3. No novo módulo crie uma classe de propriedades (Property Class) chamada CLASSE_A. Defina as seguintes propriedades para a classe:

Font Name: Arial Format Mask: 99,999 Font Size: 8 Justification: Right Delete Allowed : No Background Color: Darkred

4. Aplique a CLASSE_A ao canvas e aos seguintes itens:

PEDIDOS:

DATA_DO_PEDIDO.ESTOQUE:

QUANTIDADE_MAXIMA QUANTIDADE_MINIMA

5. Salve, execute o módulo e teste. Observe o erro.

6. Corrija o segundo erro.

7. Salve, execute o form e teste. Encerre a sessão Oracle Forms Builder.

DBC Database Company 11

Page 323: Oracle Forms Builder 6

Oracle Forms Builder 6

23.23. Aplicações Multi-FormAplicações Multi-Form

DBC Database Company

Page 324: Oracle Forms Builder 6

Código Flexível

Objetivos

Entender os vários métodos de invocar um form a partir de outro. Invocar um form dentro da mesma transação e sessão. Passar valores entre módulos form através de variáveis globais.

DBC Database Company 2

Page 325: Oracle Forms Builder 6

Código Flexível

Iniciando outro Módulo Form

Formas de iniciar outro módulo form

Através de uma buit-in a partir de uma trigger no form. Através de um item de Menu em um Menu associado (attached) ao form.

DBC Database Company 3

Page 326: Oracle Forms Builder 6

Código Flexível

Buit-in OPEN_FORM

Esta é uma built-in restrita e não pode ser chamada no modo Enter Query. A Built-in OPEN_FORM permite iniciar outro form em uma janela Modeless, de modo que

o operador possa trabalhar em ambos os forms ao mesmo tempo, alternando as janelas. Esta built-in é normalmente a maneira mais utilizada em aplicações Multi-Form.

Você pode iniciar outro form através de OPEN_FORM sem passar o controle para ele imediatamente. Você também tem a opção de iniciar uma outra sessão para o novo Form.

Sintaxe:

Argumentos:Parâmetro Descrição

Nome_do_formNome do arquivo executável do módulo (sem o sufixo .FMX). O Path default do Oracle Forms é utilizado, a menos que você forneça como parte do string de caracteres.

ACTIVATE_MODEACTIVATE : default, torna o módulo iniciado ativo.NO_ACTIVATE: mantém o módulo chamador ativo, não passa o controle para o outro módulo imediatamente).

SESSION_MODENO SESSION (default): não inicia nova sessão.SESSION : inicia nova sessão

DATA_MODENO_SHARE_LIBRARY_DATA: default,não usa a library do chamador.SHARE_LIBRARY_DATA: permite usar a library do chamador.

Lista_de_parâmetrosNome do parâmetro entre aspas simples ou ID interno de um parâmetro de uma lista de parâmetros.

DBC Database Company

OPEN_FORM ( ‘nome_do_form’ , ACTIVATE_MODE , SESSION_MODE , DATA_MODE , lista_de_parâmetros);

4

Page 327: Oracle Forms Builder 6

Código Flexível

Passando valores para outro Módulo Form

Utilizando variáveis Globais – Revisão

Como vimos anteriormente, as variáveis globais são utilizadas para passar valores de um bloco para outro, ou mesmo de um módulo para outro, desde que na mesma sessão de execução.

Criando variáveis Globais

No exemplo abaixo, será criada a variável Global que armazenará o cliente corrente no módulo forms CLIENTES.

Recebendo valores atravéz de variáveis Globais

Utilize a Built-in DEFAULT_VALUE para previnir a utilização da variável, sem ela existir.

No exemplo abaixo, a trigger PRE-QUERY, utiliza o valor da variável global CODIGO_DO_CLIENTE, para forçar a consulta no bloco PEDIDOS de somente para os pedidos do cliente passado no forms CLIENTES.

DBC Database Company

:GLOBAL.codigo_do_cliente := :clientes.codigo;

DEFAULT_VALUE(‘#’, ‘GLOBAL.codigo_do_cliente’);IF :GLOBAL.codigo_do_cliente <> ‘#’THEN :pedidos.codigo_do_cliente := :GLOBAL.codigo_do_cliente;END IF;

5

Page 328: Oracle Forms Builder 6

Código Flexível

Navegando para um módulo já aberto na sessão

Built-in GO_FORM

A built-in GO_FORM passa o controle para um módulo forms que já está em execução.

Syntaxe

Exemplo

DBC Database Company

OPEN_FORM(‘nome_do_módulo’);GO_FORM(‘pedidos’);

6

Page 329: Oracle Forms Builder 6

Código Flexível

Definindo funcionalidades a uma aplicação Multi-Form

Fechando um form e a sessão Runform

Um form pode ser fechado e passar o controle para o form chamador.

Formas de fechar um form:

O operador seleciona Action -> Exit a partir do Menu. A built-in EXIT_FORM é executada a partir de uma trigger.

Built-in EXIT_FORM

Sintaxe:

Argumentos:COMMIT_MODE Descrição

ASK_COMMIT Deixa a decisão para o operador através de um alert (default).

DO_COMMIT Alterações são colocadas no Banco de dados (Post) e efetivadas (Commit) para todos os forms da transação corrente (Numa chamada OPEN_FORM).

NO_COMMIT Executa validação e efetua o Rollback das alterações não efetivadas (commited) no form corrente.

NO_VALIDATE Não executa validação e efetua o Rollback das alterações não efetivadas (commited) no form corrente.

DBC Database Company

EXIT_FORM (COMMIT_MODE);

7

Page 330: Oracle Forms Builder 6

Código Flexível

EXERCÍCIOS

1. Abra o módulo CLIENTES. Crie um botão no bloco CONTROL chamado BOTAO_PEDIDOS.

2. Defina uma trigger para o botão BOTAO_PEDIDOS que inicialize a variável global GLOBAL.CODIGO_DO_CLIENTE com o valor corrente do item CLIENTES.CODIGO e então inicialize o form PEDIDOS, passando o controle para ele. Utilize a built-in OPEN_FORM.

3. Abra o módulo PEDIDOS. Crie uma trigger PRE-FORM para garantir que uma variável global chamada GLOBAL.CODIGO_DO_CLIENTE exista. Utilize a built-in DEFAULT_VALUE para atribuir o valor ‘#’ se a variável global não existir.

4. Adicione uma trigger para garantir que as consultas no bloco PEDIDOS, possuam como argumento o valor da variável Global CODIGO_DO_CLIENTE. Utilize uma trigger PRE-QUERY no bloco PEDIDOS que atribua o valor da variável global ao item CODIGO_DO_CLIENTE.

5. Gere o executável do módulo PEDIDOS.

Clique em qualquer parte do módulo e utiliza a opção no menuFile -> Administration -> Compile File CTRL+T

6. Salve ambos os módulos. Execute o módulo CLIENTES, consulte um cliente e de dentro do cadastro de clientes, consulte os pedidos dele, clicando no botão pedidos.

Extra

7. No módulo PEDIDOS, crie uma trigger POST-FORM para sinalizar que o módulo PEDIDOS já está em execução. Nela atribua ‘NAO’ a variável Global PEDIDOS_ABERTO.

8. Na trigger PRE-FORM atribua ‘SIM’ a variável Global PEDIDOS_ABERTO.

9. No módulo CLIENTES, altere a trigger WHEN-BUTTON-PRESSED do BOTAO_PEDIDOS, de modo que ela utilize a built-in GO_FORM, navegando para o módulo PEDIDOS, se ele estiver aberto. Teste o valor da variável global PEDIDOS_ABERTO . Lembre-se de inicializar a variável global utilizando a built-in DEFAULT_VALUE para caso ela não existir.

10. Escreva uma trigger WHEN-CREATE-RECORD no bloco PEDIDOS que utiliza o valor da variável global CODIGO_DO_CLIENTE como valor default para o item CODIGO_DO_CLIENTE do bloco PEDIDOS.

11. No módulo CLIENTES, altere as triggers WHEN-VALIDATE-ITEM do item CLIENTES.CODIGO e WHEN-NEW--RECORD-INSTANCE do bloco CLIENTES, para atualizar a variável global CODIGO_DO_CLIENTE com o novo valor do item CODIGO do bloco CLIENTES.

12. Salve, execute, e teste o módulos. Encerre a sessão Oracle Forms Builder.

DBC Database Company 8