0% acharam este documento útil (0 voto)
5 visualizações49 páginas

Tutorial Oracle Forms: Criando Formulários

O documento fornece instruções para criar um formulário básico no Oracle Forms Builder usando as tabelas de banco de dados de exemplo S_ORD, S_ITEM, S_CUSTOMER, S_EMP e S_PRODUCT. Ele descreve os passos para criar blocos de dados para as tabelas, estabelecer relacionamentos entre as tabelas detalhadas e mestre, gerar layouts para os blocos de dados e adicionar um botão com um gatilho para enviar dados. O formulário permite a entrada de pedidos de clientes vinculando as tabelas de pedidos, itens e clientes para exibir e salvar os dados inseridos.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações49 páginas

Tutorial Oracle Forms: Criando Formulários

O documento fornece instruções para criar um formulário básico no Oracle Forms Builder usando as tabelas de banco de dados de exemplo S_ORD, S_ITEM, S_CUSTOMER, S_EMP e S_PRODUCT. Ele descreve os passos para criar blocos de dados para as tabelas, estabelecer relacionamentos entre as tabelas detalhadas e mestre, gerar layouts para os blocos de dados e adicionar um botão com um gatilho para enviar dados. O formulário permite a entrada de pedidos de clientes vinculando as tabelas de pedidos, itens e clientes para exibir e salvar os dados inseridos.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Tutorial do Oracle Forms Builder

Bem-vindo ao tutorial do Oracle Forms Developer. O objetivo deste tutorial é permitir


você se familiarizar com o processo de desenvolvimento de formulários. Nós estaremos
criando um formulário com a mesma funcionalidade que o formulário de exemplo que você viu em
classe.

NOTA:

Por favor, leia o Capítulo 1 do seu manual de laboratório antes de começar este tutorial. Abra o
SQL janela e faça login na sua conta. Digite o seguinte comando

selecione * de tab;

NOTA:

'tab' é uma tabela que armazena os nomes de todas as tabelas na sua conta.

Todas as tabelas com "S_" fazem parte do esquema do banco de dados. Usaremos apenas uma parte
doesquema de banco de dadospara este tutorial. Esta parte consiste nas seguintes tabelas:

. S_ORD
. S_CLIENTE
. S_ITEM
. S_EMP
. S_PRODUTO

Inicie a instância OC4J antes de prosseguir.

Lembre-se de SALVAR seu trabalho em intervalos regulares.

Inicie o Oracle Forms Builder. Você verá a seguinte tela de boas-vindas:


Para criar um novo formulário clique em 'OK'. Passo 2 O Assistente de Bloco de Dados

2.1

Clique em "Próximo" para sair da Tela de Boas-Vindas.

2.2

Selecione "Tabela ou Visão" e clique em "Próximo"

NOTA:

"Tabela ou Visão" permite que você crie blocos de dados com base em uma tabela ou uma visão criada na
Servidor de Banco de Dados Oracle.

2.3

Você verá agora a seguinte caixa de diálogo. Clique em "Procurar". Um pequeno "Conectar"
uma caixa aparece. Insira suas informações de login e clique em "Conectar".
NOTA:

Esta etapa estabelece uma conexão entre os Formulários cliente que roda no seu
máquina e o Servidor Oracle da Smith School. Se você já estiver conectado ao
banco de dados, em seguida, vá para a Etapa 2.4

2.4

Uma vez conectado ao Servidor de Banco de Dados Oracle, você verá a seguinte tela.
Certifique-se de que as caixas de seleção para "Usuário Atual" e "Tabelas" estejam marcadas. Se você
está criando um bloco de dados com base em uma Visualização, então a caixa de seleção "Visualizações" deve estar

verificado.

Isso mostrará a lista de todas as tabelas na sua conta. Primeiro, criaremos um dado
bloquear com base na Tabela S_ORD. Selecione essa tabela na lista e clique em "OK"

2,5

Você verá agora todas as colunas da tabela S_ORD sob "Colunas Disponíveis". Clique
o sinal ">>" para selecionar todos eles para "Itens do Banco de Dados". Clique em "Próximo" para prosseguir.

2,6
Manteremos o nome da tabela "S_ORD" como o nome do novo bloco de dados. Clique
Próximo

2.7

Nós vamos criar um layout mais tarde. Selecione "Apenas criar um bloco de dados" e clique em Concluir.

2.8

Um novo bloco de dados chamado "S_ORD" foi criado. Vá para o navegador de objetos (F3)
para verificar isso. Antes de prosseguirmos, vamos salvar o arquivo. Clique duas vezes (não um clique duplo!)
em "MÓDULO 1" e altere o nome do formulário para "AMOSTRA". Salve o formulário (CTRL
+S). A figura abaixo mostra como o bloco de dados na janela do Navegador de Objetos.

NOTA:

Os formulários são salvos como arquivos *.fmb nas máquinas locais. Você pode querer salvá-los em
um disquete também.

Quando duas tabelas estão ligadas por uma restrição de chave estrangeira, uma delas é uma
"Mestre" e o outro é a tabela "Detalhe". Para entender este conceito, considere
as duas tabelas com as quais estamos trabalhando atualmente: S_ORD (Tabela de Pedidos) e S_ITEM
(Tabela de Itens). Assim como oDiagrama
ERmostra que há uma relação de Um para Muitos entre
as duas tabelas e o campo ORD_ID em S_ITEM referencia o campo ID em S_ORD.
Assim, S_ORD é a tabela mestre e S_ITEM é a tabela de detalhes. Essas duas tabelas
estão ligados por uma restrição de chave estrangeira chamada "S_ITEM_ORD_ID_FK". Para
veja os detalhes deste tipo de restrição no seguinte comando na janela SQL.
selecionar * do user_constraints onde constraint_name =
'S_ITEM_ORD_ID_FK';

Agora vamos criar um bloco de dados para a tabela 'Detalhe': S_ITEM Passo 3

OD

3.1

Selecione 'Blocos de dados' clicando uma vez nele no navegador de objetos. Em seguida, clique no '+'
Faça login na caixa de ferramentas do Navegador de Objetos à esquerda.

3.2

A caixa de diálogo "Novo Bloco de Dados" aparece. Certifique-se de que "Usar assistente de bloco de dados" está

selecionado" e pressione "OK" Isso iniciará o assistente de bloco de dados novamente.

NOTA:

AS ETAPAS 3.3 a 3.6 são as mesmas que 2.1 a 2.5 3.3 Clique em "Próximo" para sair da Tela de Boas-Vindas

Tela.3.4 Selecione "Tabela ou Visão" e clique em "Próximo"

3.5

Clique em "Navegar". Selecione "S_ITEM".

3.6

Você verá agora todas as colunas da tabela S_ITEM sob 'Colunas Disponíveis'.
Clique no sinal '>>' para selecionar todos eles para 'Itens de Banco de Dados'. Clique em 'Próximo' para

prossiga.

Você agora verá uma caixa de diálogo nova que tem dois botões nela: "Criar
Relacionamento" e "Excluir Relacionamento". Pressione "Criar Relacionamento" e o seguinte
caixa aparece :
O assistente de bloco de dados percebe que o bloco de dados sendo criado é baseado em um detalhe
tabela. Ele obtém esta informação da restrição de chave estrangeira "S_ITEM_ORD_FK" e
pede que você confirme o mesmo. Clique em 'OK'. A caixa de diálogo mostra a chave estrangeira
relação como a condição de junção.
Clique aquipara uma apresentação rápida para entender o papel das chaves estrangeiras em um
banco de dados relacional.

Em alguns casos, um bloco de detalhes pode ter mais de um bloco mestre. Em tal
cenário pressione o botão "Criar Relacionamento" novamente e selecione o outro estrangeiro
restrição de chave. O campo "Blocos de Dados Mestres" na caixa de diálogo acima será então
tenha dois blocos listados. Repita o procedimento de cada bloco mestre. O que
o que acontece se eu criar primeiro o bloco S_ITEM (detalhe) e depois o S_ORD (mestre)
bloquear? Em outras palavras, a sequência em que os blocos de dados são criados é importante?
Clique Aquipara encontrar a resposta. 3.8
Manteremos o nome da tabela "S_ITEM" como o nome para o novo bloco de dados. Clique
Próximo

3.9 Nós criaremos um Layout mais tarde. Selecione "Apenas criar um bloco de dados" e clique em Concluir.
3.10Um novo bloco de dados chamado "S_ITEM" foi criado. Vá para o navegador de objetos
(F3) para verificar isso. O NAVEGADOR DE OBJETOS terá esta aparência

NOTA:

. O S_ORD recebe um item de relação chamado "S_ORD_S_ITEM" que documenta


a relação de chave estrangeira entre os dois blocos. Clique duas vezes no ícone próximo
a relação e abra o Painel de Propriedades para verificar a Condição de Junção.
. "ON-POPULATE-DETAILS" e "ON-CHECK-DELETE-MASTER" são dois gatilhos
que o desenvolvedor de formulários cria automaticamente para facilitar a coordenação entre
bloco de dados relacionados. Para saber mais sobre esses gatilhos, pressione Ajuda (CTRL+H).

EXERCÍCIO
S_CUSTOMER. Por favor, tenha em mente que S_CUSTOMER e S_ORD
ter um Master-D
Você deve agora ter três blocos de dados e dois itens de relação no seu arquivo de formulários.
Por favor, salve o arquivo e prossiga. O Navegador de Objetos parece algo assim em
esta etapa.

Agora começaremos a criar o formulário para aceitar pedidos de clientes. Este formulário, portanto,
deve conter itens de dois blocos de dados, a saber, S_ORD e S_ITEM. Vamos começar
com o bloco S_ORD. Passo 4

O Assistente de Layout: Criando um Layout para o Bloco Mestre.


4.1

Clique com o botão direito no ícone do bloco de dados S_ORD no NAVEGADOR DE OBJETOS. Selecione "Assistente de Layout". Isso
aparecerá a tela de Boas-vindas. Clique em "Próximo"

4.2

Na próxima caixa de diálogo, selecione "(Nova Tela)". O menu suspenso para TIPO mostra várias opções de tela.
estilos de layout. Neste momento, usaremos o mais simples de todos: Conteúdo.

Clique Aquipara a resposta. 4.3


A próxima caixa de diálogo pede que você escolha os itens do bloco que estarão realmente visíveis na
canvas. Selecione todos eles pressionando o botão ">>". Clique em "Próximo" para continuar.4.4Mude os nomes
do rótulo sob "Prompt". O nome padrão dado ao item é sempre o nome da coluna na base
tabela que pode não ser sempre útil para o usuário final. Mantenha a largura e a altura inalteradas. Estes podem ser
mudado simplesmente esticando os itens na tela. Clique em "Próximo"

4.6

DIGITAIS DO PEDIDO
o assistente de layout agora irá criar um layout padrão para você. Também no NAVEGADOR DE OBJETOS sob
CANVASES você encontrará um novo objeto de tela com um nome padrão. Clique duas vezes (não um clique duplo) nele
e renomeie-o para "ORDEM_CANVAS". O layout ficará como mostrado abaixo:

NOTA:Os nomes de objetos não podem conter espaços. ORDER CANVAS não é um nome válido.
Agora temos que adicionar um botão que nos permitirá salvar os dados inseridos no formulário
na tabela respectiva (S_ORD). O formulário resultante terá funcionalidade mínima.
Podemos aprimorar ainda mais o formulário personalizando-o. Passo 5 (a)
Adicionando um botão de salvar

ETAPA 5 (a) Colocando um botão na tela. 5(a).1 Clique no ícone "Botão de Pressionar" em
a barra de ferramentas da tela (mostrada abaixo) e depois clique uma vez na tela.

Um novo botão de pressão com propriedades padrão será criado. O construtor de formulários o dará.
um nome padrão como "PUSH_BUTTON14". Você pode arrastar e colocar o botão em qualquer lugar
onde no quadro.

NOTA:

O Botão de Pressão é automaticamente colocado no mesmo bloco de dados (S_ORD) que os dados
bloco na tela atual.

5(a).2

No painel, clique duas vezes no botão de Push para abrir sua PALETA DE PROPRIEDADES. No
valor para o campo "LABEL" insira "SUBMETER" ou "SALVAR" para indicar a função do
botão.

5(a).3

Tente executar o formulá[Link]


aquipara instruções sobre como executar um formulário. Tente clicar em
o Botão de Pressão - nada acontece. Isso porque ainda não dissemos aos Formulários
construtor o que fazer uma vez que o botão é clicado. Isso é feito inserindo código PL/SQL em um
gatilho. Por favor, consulte o manual do laboratório para mais informações sobre gatilhos. Neste
nesse momento, é suficiente para você saber que os triggers são blocos de código que são
executado quando um evento específico ocorre. Neste caso, precisamos que certo código seja
executado quando o botão "Enviar" é pressionado. Então, usamos o que é chamado de UM QUANDO-
Gatilho BOTÃO-PRESSIONADO! Aqui está como o formulário ficaria:

NOTA:

O fundo verde é a cor padrão para o formulário. Isso pode ser facilmente alterado.
usando a barra de ferramentas do canvas, embora neste momento não nos incomodaremos com
tais detalhes cosméticos. Passo 5(b)

Criando um gatilho QUANDO-BOTÃO-PRESSIONADO

ETAPA 5(b)

Associando algum código PL/SQL ao botão de push

5 (b).1

No ORDER_CANVAS clique com o botão direito no botão 'Enviar'. Selecione 'Editor PL/SQL'
do menu. Isso trará uma lista de gatilhos que podem ser associados ao
pressione o botão. Selecione "Quando-Botão-Pressionado" nesta lista.
5 (b).2

Assim que você selecionar o acionador, o construtor abrirá uma janela do Editor PL/SQL. Isso é
onde você insere o código PL/SQL que deve ser executado quando o botão 'Enviar' é
pressionado. Para salvar informações através de um formulário, usamos a seguinte linha de código:

formulário_de_compromisso

5 (b).3

Compile o código PL/SQL clicando no primeiro botão na barra de ferramentas para o PL/SQL
Editor.
NOTA:

Você deve receber uma mensagem "Não Modificado - Compilado com Sucesso" conforme mostrado na
imagem acima. Quaisquer erros gerados durante o processo de compilação serão mostrados em
a parte inferior da janela do editor.

5 (b).4

Feche a janela do Editor PL/SQL e execute o formulá[Link] aquipara instruções para


executando um formulário.

Os dados que inserimos neste formulário serão salvos na tabela S_ORD. Precisamos considerar
as Restrições de Chave Primária e Chave Estrangeira antes de inserirmos dados. A chave primária
a restrição estipula que cada registro na tabela S_ORD deve ter um único
chave primária (ID). Além disso, as restrições de chave estrangeira conectam a tabela S_ORD a
Tabela S_CUSTOMER e S_EMP.

Em resumo, temos que:

1.) Selecione uma ID (chave primária) que não está na tabela S_ORD.
2.) Selecione "ID do Cliente" e "ID do Representante de Vendas" (chave estrangeira) da S_CUSTOMER e
Tabelas S_EMP.

Siga os passos 5(b).5 e 5(b).6 para fazer isso

5 (b).5

Abra a Janela SQL - Programas >> Oracle Servidor de Aplicação


Desenvolvimento >> SQL Plus.

5 (b).6

Execute os seguintes comandos. selecione id de s_ord;Escolha qualquer número que seja


não na lista de números retornados. Esta será nossa chave primária ÚNICA para um novo
[Link] id de s_customer;Escolha qualquer número da lista de números
retornado. Esse será nosso input no campo "Id do Cliente".selecionar id de s_emp;
Escolha qualquer número da lista de números retornados. Este será nosso input em
Campo de Id do Representante de Vendas

NOTA

Não podemos esperar que os usuários do sistema entendam e façam as coisas que fizemos na
passo anterior. Para evitar isso, precisamos PERSONALIZAR o formulário. Aprenderemos alguns
tipos comuns de personalizações nas partes posteriores do tutorial.

5 (b).7

Insira os dados conforme mostrado na imagem abaixo e clique no botão "Enviar".

NOTA

Você receberá a seguinte mensagem na parte inferior da janela do applet:

O formulário que criamos não é amigável para o usuário. Na verdade, é completamente possível que o usuário esteja totalmente
ignorante sobre conceitos de banco de dados e ficaria mais do que feliz em manter assim
maneira. Não podemos esperar que o usuário conheça os detalhes da chave primária e da chave estrangeira
as restrições discutidas anteriormente. Personalizar o formulário é um processo muito importante
onde o usuário pode usar o sistema sem se preocupar com os detalhes subjacentes
como tipos de dados, tabelas, relacionamentos, restrições etc. COMO UMA REGRA, É MELHOR QUE
FAÇA O USUÁRIO SELECIONAR DADOS DE UMA LISTA EM VEZ DE DIGITAR DADOS. Por exemplo, isso
é melhor deixar o cliente selecionar seu estado de residência a partir de uma lista suspensa em vez de
do que fazê-lo inserir no formulário. Isso também ajudaria a manter a uniformidade ao não
permitindo entradas como 'Maryland', 'MARYLAND', 'Mrylaand' onde um simples 'MD' seria
trabalhado. Claro que alguns dados como nomes, endereços de rua não se prestam
a si mesmos para tal personalização. Etapa 6

Personalização
Aqui está uma lista de coisas que podemos mudar para tornar o formulário mais amigável.
amigável

MUDANÇA NECESSÁRIA

TIPO DE PERSONALIZAÇÃO

Faça a data de hoje aparecer automaticamente no campo DATA DO PEDIDO

Valores Iniciais
Deixe o cliente selecionar um tipo de pagamento: Dinheiro ou Cartão de Crédito, sendo Dinheiro o...
opção padrão.

Botões de Opção Permita que o usuário coloque um ' no PEDIDO PREENCHIDO


campo uma vez que um pedido é concluído

Caixas de Seleção Criando um Bloco de Controle. Significado do Banco de Dados


itens da tabela e itens não da tabela de banco de dados. Blocos de Controle / Tabela Não de Banco de Dados

Deixe o cliente selecionar seu nome a partir de uma lista e não se preocupar
sobre o ID do cliente. Também exiba o nome e o número de telefone do
cliente no formulário.

Listas Dinâmicas (Lista de Valores /LOVS) Gerado automaticamente


Número do pedido e exibi-lo no campo ID do Pedido após o pedido ser enviado

Sequências e Gatilhos Calcular automaticamente o total do pedido após


adicionando uma taxa de envio padrão (10% do total do pedido) e descontos por quantidade

Valores calculados, Laços de Controle, Unidades de Programa. Passo


6(a)

Definir Valores Iniciais


6(a).1

Abra a PALETA DE PROPRIEDADES para o Campo Data do Pedido. Isso pode ser feito por um
clique duas vezes no Item de Texto da Data do Pedido OU clique com o botão direito no Texto da Data do Pedido
Item e selecionando "Paleta de Propriedades" no menu.

6(a).2

A Paleta de Propriedades permite que você mude todos os aspectos de um item específico. Pegue
algum tempo para passar por toda a paleta de propriedades para o Item Data do Pedido antes
você prossegue.

NOTA:

A coluna azul à esquerda do Painel de Propriedades contém os nomes de todos os


campo de propriedade. Os valores para os campos são inseridos à direita.

6(a).3

Encontre o campo de propriedade chamado "VALOR INICIAL" e insira o seguinte: $$data$$

6(a).4

Feche a paleta de propriedades.


Vá até o Navegador de Objetos e expanda o bloco S_ORD para ver os itens contidos.
dentro do bloco. Dê um duplo clique no ícone "TIPO_DE_PAGAMENTO" para abrir sua
PALETE DE PROPRIEDADE.
6(b).2

Clique no menu suspenso do campo TIPO DE ITEM e selecione Grupo de Rádio como o
TIPO DE ITEM.

6(b).3

Digite CAIXA como o valor do campo para VALOR INICIAL e feche a PALETTE DE PROPRIEDADE.

NOTA:

Definir 'CASH' como o valor inicial para o botão de opção torna CASH o padrão
opção.

6(b).4

No Painel de Propriedades, expanda o item "TIPO_DE_PAGAMENTO". Clique no "Botão de Rádio"


Campo "Botão" e pressione o verde "+" na barra de ferramentas do navegador de objetos DUAS VEZES (já que
temos DINHEIRO e CRÉDITO como nossas opções). Você verá dois botões de rádio criados em
o Navegador de Objetos com nomes padrão como "RADIO_BUTTON11" e
"RADIO_BUTTON12". Rename them as "CASH" and "CREDIT".

6(b).5

Abra a PALETA DE PROPRIEDADES para o botão de opção "CASH" com um duplo clique sobre ele
ícone. Altere os valores do "Rótulo" e do "Valor do Botão de Opção" conforme mostrado na imagem
abaixo
NOTA:

O valor do botão de rádio é os dados reais que são salvos no banco de dados.

6(b).6

Repita a Etapa 6(b).5 para o Botão de Rádio de Crédito. Defina o Valor do Botão de Rádio como CRÉDITO.

6(b).7

Abra ORDER_CANVAS e arraste os dois botões de rádio para um lugar visível. Você encontrará
ambos os botões no canto superior esquerdo da tela.

Ao criar as tabelas do banco de dados para este projeto, a seguinte restrição foi adicionada
:

CONSTRAINT s_ord_payment_type_ck CHECK (payment_type in ('DINHEIRO',


CREDIT

(não é uma declaração completa!)

Isso significa que os valores retornados pelos botões de opção podem ser "DINHEIRO" ou
"CREDITO". Este é um constraint codificado. Se em vez de "DINHEIRO" você inserir "Dinheiro" como
o valor do botão de rádio, você receberá o seguinte erro:
Antes de prosseguir, execute o formulário e veja os resultados do seu [Link] aquipara
instruções para executar um formulário.

Criando uma Caixa de Seleção

6(c).1

No NAVEGADOR DE OBJETOS, clique duas vezes no ícone de "PEDIDO_ATENDIDO" para abrir seu
PALETE DE PROPRIEDADE.

6(c).2

Selecione "CAIXA DE MARCAÇÃO" como o valor para "Tipo de Item". Isso altera o PEDIDO_ATENDIDO
campo de um ITEM DE TEXTO para uma CAIXA DE MARCAÇÃO.

6(c).3

Sob as propriedades funcionais do campo ORDER_FILLED, há um campo chamado "Valor"


quando checado

Valor quando marcado

N
Ao criar as tabelas do banco de dados para este projeto, a seguinte restrição foi adicionada
:

CONSTRAINT s_ord_order_filled_ck CHECK (order_filled in ('Y', 'N'))

(não é uma declaração completa!)

Isso significa que os valores retornados pela caixa de seleção podem ser "Y" ou "N". Isso é um
restrição codificada fixamente.

6(c).4

Sob o "Mapeamento de Caixa de Seleção de Outros valores" selecione "NÃO MARCADO" no menu suspenso
lista suspensa

6(c).5

Defina o VALOR INICIAL do botão Pedido Preenchido como "N".

NOTA

A Paleta de Propriedades se parece com isto:

Etapa 6(d)

Criando um Bloco de Controle e um Item de Tabela Não Base


Antes de prosseguirmos

O que é um item de tabela de banco de dados?


bloquear? Antes de começarmos a responder a essas perguntas, lembre-se do procedimento para criar dados
blocos. Selecionamos uma tabela específica no esquema do banco de dados e então selecionamos o
colunas daquela tabela para serem ITENS no bloco de dados. Mais tarde, usando o LAYOUT
MAGO, colocamos estes itens na ORDEM_CANO. Estes itens são chamados
Tabela de Itens do Banco de Dados

Podemos precisar ter outros itens no painel para tornar o formulário mais amigável.
amigável. Um bom exemplo seria os itens de texto que usaremos para exibir o cliente
informações na próxima etapa deste tutorial. Esses itens não se baseiam em nenhum
coluna particular das tabelas do banco de dados, portanto são chamadas de "TABELA NÃO-BD"
Itens." O desenvolvedor de formulários considera todos os novos itens como "Itens de Tabela de Banco de Dados"

(padrão). Isso pode ser alterado abrindo a PALETA DE PROPRIEDADES de um item e


mudando o campo 'Item de Banco de Dados' para 'NÃO'.

Em vez de alterar a propriedade de cada item adicionado ao formulário, você pode simplesmente
create a "dummy data block" or CONTROL BLOCK and add these items like text
caixas, botões etc. para este bloco de dados.

6(d).1

Selecione "Bloco de Dados" no NAVEGADOR DE OBJETOS e pressione o botão "+" para adicionar um

novo bloco de dados.

6(d).3

Selecione "Construir Bloco de Dados Manualmente" na próxima caixa de diálogo e clique em "OK". Você pode
agora veja um novo bloco de dados sem itens. Renomeie o bloco de Dados para "CTRL_S_ORD" -
indicando que é um bloco de controle para o bloco de dados S_ORD.

6(d).4

Para adicionar um novo item ao bloco CTRL_S_ORD, selecione o nó ITENS e pressione o '+'
assine. Isso criará um novo item de texto com um nome padrão. Renomeie o item como
NOME_CLIENTE
Listas : LOVs).

6(d).5

REPITA O PASSO 6(d).4 PARA CRIAR DOIS ITENS DE TEXTO A MAIS: CUST_PHONE E SR_NAME
(Nome do Representante de Vendas).

6(d).6
Repita a Etapa 6(d).4 para criar mais dois itens de texto: SR_BUTTON e CUST_BUTTON.
Abra a PALETTE DE PROPRIEDADE para esses dois itens e altere o valor do "Item
Botão de Pressão
Rep" e "Selecionar Cliente".

O NAVEGADOR DE OBJETOS parece assim.

6(d).7

Para a próxima parte do tutorial, precisamos colocar esses itens na


ORDEM_TELA. Isso pode ser feito simplesmente abrindo a PALETTE DE PROPRIEDADE para
cada um desses itens e definindo o valor do campo "CANVAS" para
PEDIDO_TELA

6(d).8

Reorganize os itens na tela conforme mostrado:

Existem dois tipos de listas que podemos usar: Listas Estáticas e Listas Dinâmicas. Listas Estáticas
são listas de itens que não mudam frequentemente - estes são implementados usando simples
caixas suspensas ( peça ao seu GA para mostrar como criar uma Lista Estática). Normalmente um
uma lista estática seria uma lista de todos os Estados dos EUA, ou uma lista de semestres para o próximo
casal de anos etc.

Listas dinâmicas, por outro lado, são baseadas em dados nas tabelas do banco de dados. Os dados
está mudando com frequência e os dados mais atualizados devem ser apresentados ao usuário
toda vez que ele / ela pede para ver a lista dinâmica. Por exemplo, uma lista de itens em um
armazém que caiu abaixo do seu nível de reabastecimento. Essas listas dinâmicas são baseadas em
Consultas SQL e mostre os resultados da consulta toda vez que o usuário chamar o dinâmico
lista. Começaremos criando uma lista dinâmica (chamada LOV / Lista de Valores) para todos os
clientes no banco de dados - esses dados estão mudando frequentemente à medida que novos clientes são
clientes adicionados e clientes antigos são excluídos.

Primeira Fase

Criando o LOV usando uma instrução SELECT.

6(e).1

Selecione 'LOVs' no NAVEGADOR DE OBJETOS e clique em '+'. Escolha criar um LOV


usando o assistente LOV.

6(e).2

Selecione "Novo Grupo de Registro baseado em uma consulta" e clique em "PRÓXIMO". A próxima tela irá
solicite que você insira a consulta em que este LOV é baseado.

6(e).3

Digite a consulta mostrada na imagem abaixo e pressione "Verificar Sintaxe" para garantir que
a consulta está correta. Clique em "OK" e depois em "Próximo".
Embora todas as instruções SQL terminem com um ponto e vírgula (;), as instruções SQL inseridas em
o assistente LOV não deve ser terminado com um ponto e vírgula (;).

6(e).4

No próximo passo, clique em ">>" para selecionar todos os itens como itens LOV. Clique em "Próximo" e

você verá a seguinte tela.

6(e).5

Clique na coluna 'Valor de Retorno' para o campo ID e pressione 'Procurar retorno


Botão "item" você verá a seguinte caixa de diálogo.
6(e).6

Selecione S_ORD.CUSTOMER_ID como o item de devolução. Repita a etapa 6(e).5 para especificar a devolução.
itens para NOME e TELEFONE como CTRL_S_ORD.CUST_NAME e
CTRL_S_ORD.CUST_PHONE, respectivamente. Clique em "PRÓXIMO" quando terminar.

Especificar os Valores de Retorno para itens LOV é um passo muito importante. Pergunte ao seu GA para
explique o que um valor de retorno faz. Tente o exercício abaixo para descobrir o que são Valores de Retorno
exclua o item de retorno especificado para CTRL_S_ORD.CUST_PHONE. Clique em finalizar e
execute o formulário - observe o que acontece com o campo do telefone do cliente.

6(e).7

Selecionar Nome do Cliente


do LOV. Mantenha outros valores padrão - estes podem ser alterados mais tarde.

6(e).8

Clique em "Próximo" até chegar ao final do assistente. Retenharemos todos os valores padrão.
Clique em "Concluir" na última tela - um novo LOV com um nome padrão será criado em
o NAVEGADOR DE OBJETOS. Renomeie o LOV como "CUST_LIST".

NOTA
Criar um LOV é a primeira etapa para criar listas dinâmicas. Em seguida, precisamos inserir
código para chamar o LOV.

Segunda Etapa

Chamando o LOV. Precisamos abrir a lista de valores quando o usuário pressionar o "Selecionar"
Botão "Cliente" na tela. Lembre-se da nossa discussão anterior sobre QUANDO-BOTÃO-
GATILHO pressionado.

6(e).9

Abra o ORDER_CANVAS e clique com o botão direito no botão "Selecionar Cliente". Escolha
Editor PL/SQL

6(e).10

Escolha o gatilho QUANDO-BOTÃO-PRESO na lista e insira o seguinte código em


o editor PL/SQL:

declarar
booleano
começar
mostrar_lov('lista_de_clientes');
fim;

--NOTA: cust_list é o nome da LOV.

6(e).11

Compile o código e feche a janela do editor PL/SQL. Execute o formulário para ver o LOV
no [Link] aquipara instruções sobre como executar um formulário.

NOTA

Você pode precisar abrir o assistente LOV novamente para modificar os atributos visuais do
AMOR.

EXERCÍCIO
Frequentemente precisamos nos referir a dados em um item de texto específico. A sintaxe para se referir
a um item específico é o seguinte

:block_name.item_name

Assim, o item "TOTAL" sob o bloco S_ORD será referido como

:s_ord.total6(f)
Geração Automática de Chaves Primárias

Primeira Fase

Criando uma sequência

6(f).1

Abra a janela do SQL*Plus e insira as informações de login e conta.

6(f).2

Uma vez que você tenha feito login, digite o seguinte comando:

criar sequência cust_pk começar com 1 incrementar em 1;

Segunda Etapa

Chamando a Sequência

NOTA

Precisamos usar algumas linhas de código para chamar a sequência e dizer a ela para inserir
o novo valor da sequência. Antes de fazermos isso, precisamos decidir quando esse código deve
ser executado? Queremos garantir que uma nova chave primária seja gerada apenas quando
o cliente enviou o pedido final. Isso pode ser feito incorporando
o código no gatilho WHEN-BUTTON-PRESSED do botão "Enviar" ou por
usando um GATILHO DE NÍVEL DE BLOCO chamado gatilho PRÉ-INSERÇÃO. Este gatilho é acionado apenas
antes que o desenvolvedor de formulários salve os dados na tabela. Uma vez que usamos o QUANDO-
O gatilho BUTTON-PRESSED antes do PRE-INSERT vamos experimentar.

6(f).3

No NAVEGADOR DE OBJETOS expanda o bloco de dados S_ORD. Você encontrará os "Gatilhos"


nodo logo abaixo do nome do bloco de dados. Selecione o nodo e clique em " + " para adicionar um

gatilho.

6(f).4

Selecione PRE-INSERT na lista de pop-up e clique em OK. O editor PL/SQL para o


o gatilho será ativado. Use o seguinte código:selecione cust_pk.nextval em
:s_ord.id de dual;O NAVEGADOR DE OBJETOS para o bloco S_ORD parece
algo assim:
NOTA

Dual é uma tabela fictícia usada para completar a parte "From" de uma instrução SQL;

6(f).5

Compile o código e feche a janela do editor. Execute o formulário para ver como o auto-
a chave primária gerada funciona. Etapa 6(g)

Valores Calculados e Laços de Controle


Antes de prosseguirmos, precisamos adicionar três campos de texto no bloco de controle:
ctrl_s_ord

Total de todos os itens em um pedido (Total Inicial)

Custo total de envio @ 10% do Total (Envio)

(3.) Descontos por quantidade conforme as seguintes regras de negócios (Desconto)

. Total Inicial < $500 : Sem Desconto


. $500 <= Total Inicial < $1000 : Desconto = 5%
. $1000 <= Total Inicial < $1500 : Desconto = 7%
. $1500 <= Total Inicial < $2000 : Desconto = 10%
. $2000 <= Total Inicial: Desconto = 10% + Frete Grátis

Crie esses itens como fizemos antes, coloque-os no ORDER_CANVAS e


prossiga para a Etapa 1. O NAVEGADOR DE OBJETOS se parece com isso depois que os itens de texto foram
foi criado:
Primeira Etapa

Criando uma Unidade de Programa

6(g).1

Abra o NAVEGADOR DE OBJETOS e selecione o nó UNIDADE DE PROGRAMA e clique em '+' para


adicione uma unidade de programa. Você verá a seguinte caixa de diálogo. Digite o nome mostrado em
a imagem e clique em OK:

6(g).2
Uma janela PL/SQL será aberta automaticamente com o seguinte código:

PROCEDIMENTO calc_order_details É
INÍCIO

FIM;

6(g).3

Insira o código fornecido abaixo.

PROCEDIMENTO calc_order_details É
número total
número do disco
INICIAR
:ctrl_S_ord.envio := :ctrl_s_ord.total * 0.1;
tot := :ctrl_s_ord.total;

se tot < 500 então


disc := 0;
elsif tot >= 500 e tot < 1000 então
disc := 0.05;
elsif tot >= 1000 e tot < 1500 então
disc := 0.07;
elsif tot >= 1500 e tot < 2000 então
disc := 0.1;
senão se tot >= 2000 então
disc := 0.1;
:ctrl_s_ord.shipping := 0;
senão
null;
fim se;
:ctrl_s_ord.desconto := :ctrl_s_ord.total*disc;
:ctrl_s_ord.total + :ctrl_s_ord.shipping -
ctrl_s_ord.desconto
FIM;

EXPLICAÇÃO DO CÓDIGO :

PROCEDIMENTO calc_order_details É
número total;(declare a variável local tot do tipo numérico)
número do disco(declara variável local disc do tipo de dado número)
INICIA
:ctrl_S_ord.shipping := :ctrl_s_ord.total * 0.1;

Calcule o custo de envio a 10% do total do item. A declaração diz ao Forms Builder para
pegue os dados em :ctrl_s_ord.total e multiplique por 0,1 e coloque o resultado em
:ctrl_s_ord.shipping

tot := :ctrl_s_ord.total;

(Atribua o total do item contido em :ctrl_s_ord.total à variável local tot)

se tot < 500 então


disc := 0;
elsif tot >= 500 e tot < 1000 então
disc := 0.05;
elsif tot >= 1000 e tot < 1500 então
disc := 0.07;
elsif tot >= 1500 e tot < 2000 então
disc := 0.1;
elsif tot >= 2000 então
disc := 0.1;
:ctrl_s_ord.shipping := 0;
senão
null;
fim se;

(LAÇO IF-THEN-ELSEIF-ELSE para implementar regras de negócios. Cada condição é verificada


e a porcentagem apropriada de desconto é atribuída à variável local disc

:ctrl_s_ord.total*disc;

(Calculando o valor real do desconto)

:ctrl_s_ord.total + :ctrl_s_ord.shipping -
ctrl_s_ord.desconto

(Calcular o Total Geral com base no Total dos Itens, Custos de Envio e Desconto)

FIM;

(encerrando o código do Procedimento)

6(g).4

Compile o código e feche a Janela do Editor PL/SQL.

Segunda Etapa
Chamando a Unidade do Programa

6(g).5

Clique com o botão direito do mouse no item de texto TOTAL do bloco ctrl_s_ord (referido como
:ctrl_s_ord.total) e clique no editor PL/SQL para trazer a lista de possíveis
gatilhos.

6(g).6

Selecione um gatilho WHEN-VALIDATE-ITEM e insira o seguinte código:

calc_detalhes_do_pedido

Isso chama a unidade do programa e executa o código PL/SQL nele.

What is validation ? When is the WHEN-VALIDATE-ITEM trigger fired? Clique


Aquipara descobrir.

6(g).7

Você pode querer desativar o Frete, Desconto e Total Geral (:s_ord.total) para
que o usuário não pode modificar os valores nesses campos. Isso pode ser feito abrindo
a PALETE DE PROPRIEDADE dos itens e mudando o valor do campo ATIVADO para
NÃO.

6(g).8

Execute o formulário para ver os [Link] aquipara instruções sobre como executar um formulário.

Os alertas são mecanismos simples para exigir que o usuário confirme a ação solicitada. Alertas
são usados para evitar erros cometidos pelo usuário. Por exemplo, quando você pede um documento
para ser excluído, o sistema operacional Windows pergunta se você tem certeza - este é um alerta que
exige que o usuário confirme sua ação. Veremos como os alertas podem ser incorporados
em formas.

Vamos adicionar um alerta ao formulário que pede ao usuário para confirmar sua solicitação de envio.
pedido.(Um alerta deve aparecer após o usuário pressionar o botão "Enviar").

Etapa 6(h)

Adicionando Alertas

Primeira Etapa
Criando o ALERTA

6(h).1

Selecione "Alertas" no NAVEGADOR DE OBJETOS e clique em "+". Um novo alerta com um


um nome padrão será criado. Mude o nome padrão para 'SAVE_ALERT'.

6(h).2

Clique duas vezes no ícone para abrir a PALETA DE PROPRIEDADES para o alerta. Mude o
valores de campo conforme mostrado na imagem abaixo.

NOTA

Seu alerta agora está pronto para ser usado. A próxima etapa é chamar o alerta usando um PL/SQL
código.

Segunda Etapa

Chamando o Alerta

6(h).3

Como queremos que o alerta seja chamado quando o usuário pressionar o botão "Enviar", nós
é necessário incluir o código para o Alerta no gatilho QUANDO-BOTÃO-APERTADO.

6(h).4

Abra o editor PL/SQL para o trigger WHEN-BUTTON-PRESSED associado com o


Botão de enviar. Isso pode ser feito abrindo o ORDER_CANVAS e clicando com o botão direito em
o botão Enviar. Selecione "Editor PL/SQL" no menu.

6(h).5
Já temos o seguinte código neste disparador:formulário_de_compromissoNós vamos modificar o
código neste gatilho como mostrado abaixo:
declarar
alerta
número da escolha

INICIAR

Encontrar_Alerta ('SALVAR_ALERTA');
Mostrar_Aviso(alert_id);
SE
ALERTA_BOTÃO1
ENTÃO

formulário_de_compromisso

CASO CONTRÁRIO
null;
FIM SE;
FIM;

Por favor, observe o commit_form; o código agora foi colocado DENTRO do If-THEN-
Ciclo ELSE.

6(h).3

Compile o código e feche a janela do editor PL/SQL. Seu Alerta agora está pronto para
pode ser usado. Execute o formulário e veja como o alerta [Link] aquipara instruções para
executando um formulário. Assim é como um alerta aparece depois que o botão Enviar foi pressionado.
Repita o th

Atualmente, temos apenas um Bloco de Dados (S_ORD) na ORDER_CANVAS. O formulário como


um todo ainda não está completo, nós adicionaremos S_ITEM ao mesmo canvas. Passo 7

Múltiplos Blocos de Dados na mesma Tela

Criamos um bloco de dados para S_ITEM nas seções anteriores deste tutorial. Você
pode querer rever essa parte novamente antes de irmos mais longe. Para revisar a
criação do bloco de dados S_ITEMClique Aqui.

7.1
No NAVEGADOR DE OBJETOS clique com o botão direito no bloco de dados S_ITEM e clique em LAYOUT
MAGO. Isso abrirá a Tela de Boas-Vindas. Clique em PRÓXIMO para prosseguir

7.2

Como queremos o bloco de dados na mesma tela (ORDER_CANVAS), selecione isso.


canvas da lista suspensa e clique em AVANÇAR.

7.3

Você verá todos os itens no bloco de dados S_ITEM sob os "Itens Disponíveis"
coluna. Selecione todos os itens EXCETO QUANTITY_SHIPPED para os "Itens Exibidos"
coluna. Clique em AVANÇAR assim que a caixa de diálogo estiver assim:
Não estamos incluindo QUANTITY_SHIPPED, pois atualmente está fora do escopo do
tutorial. Isso envolve trabalhar com a tabela S_INVENTORY que não iremos usar.
para o propósito deste tutorial.

7.4

Altere os nomes do rótulo sob "Prompt". O nome padrão dado ao item


é sempre o nome da coluna na tabela base que pode não ser sempre útil para o
usuário final. Mantenha a largura e a altura inalteradas. Estas podem ser alteradas simplesmente
esticando os itens na tela. Clique em "Próximo"

7,5

Selecione "TABULAR" como o estilo de layout e clique em AVANÇAR

NOTA

Seria interessante notar que o layout tabular permite uma melhor organização de
múltiplos itens. Isto está de acordo com o Diagrama ER onde temos um para muitos
relação entre as tabelas S_ORD e S_ITEM.

7.6

Itens para o pedido no campo TÍTULO DO QUADRO. Também escolha exibir 7 itens
com uma distância de 3 entre cada registro. Clique em AVANÇAR quando a caixa de diálogo parecer
assim :
7.7

Na próxima tela, clique em 'FINALIZAR' para fechar o assistente de layout. ORDER_CANVAS será
aberto com o bloco de dados recém-adicionado S_ITEM nele. Aqui está como ele se parece:
NOTA

Todos os itens na tela acima pertencem ao mesmo pedido. Assim, para satisfazer o estrangeiro
restrições de chave: s_item.ORD_ID tem que ser o mesmo que s_ord.ID. Teremos que adicionar um
linha de código PL/SQL para fazer isso. Precisamos transferir ogerado automaticamente
chave primáriapara S_ORD para :S_ITEM.ORD_ID ANTES do construtor de formulários insere o
registros nas tabelas do banco de dados.

7.8

Expanda o bloco de dados S_ORD no navegador de objetos. Expanda o nó TRIGGERS


sob o bloco de dados S_ORD e clique duas vezes no ícone do Trigger PRE-INSERT.
Isso abre o editor PL/SQL com uma linha de código que inserimos anteriormente.

selecione cust_pk.nextval em :s_ord.id de dual;

7.9

Adicione a seguinte linha APÓS a linha acima:

:s_ord.id;

NOTA

A segunda linha de código (ETAPA 1.9) irá copiar a chave gerada automaticamente em :s_ord.id
para :s_item.[Link].

7.10

No ORDER_CANVAS, clique duas vezes na coluna ORD_ID para abrir a PROPRIEDADE


PALETTE. Altere o valor do campo "Habilitado" para NÃO.

7.11

Execute o formulário para ver os resultados do seu [Link]


aquipara instruções para executar um
formulário. Insira os dados mostrados na imagem abaixo e envie o pedido:
todo o procedimento para criar um LOV para selecionar o Nome do Representante de Vendas
Construtor de Formulários Tópicos Avançados

Mudar de uma tela bloco para outra

Se você quiser mudar de uma tela para outra, pode usar o comando
go_block. Por exemplo, quando você executa [Link], pressionando o botão rotulado
'Manutenção de Clientes' o levará a uma tela diferente para clientes
manutenção.

Examine o [Link] no Navegador de Objetos, e você encontrará um botão chamado


clientes_manutencao no bloco de Controle. Seu gatilho WHEN-BUTTON-PRESSED
tem o seguinte código:

ir_bloco('cust_blk');

O comando go_block('name-of-block') leva você a um bloco, que é 'cust_blk' em


este caso. Observe que o botão está associado à tela ord_can e cust_blk é
associado ao canvas cust_can. Portanto, quando o gatilho é acionado, o
o aplicativo irá mudar de ord_can para cust_can.

No entanto, se você tiver apenas o comando go_block, ele o levará para a nova tela.
e nada mais. No [Link], queremos exibir as informações do cliente em
o canvas do cliente. Portanto, devemos adicionar o seguinte código após o go_block
comando:

executar_consulta;

Além disso, adicione um gatilho de pré-consulta ao cust_blk assim:

:cust_blk.id := :ord_blk.customer_id;

Isto garantirá que o ID do cliente no ord_blk seja transferido para o cust_blk.

Fechar uma janela

Às vezes você precisa fechar uma janela. No exemplo anterior, depois de clicar no
Botão 'Manutenção do Cliente', há duas janelas abertas. Preferimos não ter
mais de uma janela aberta ao mesmo tempo. Porque várias janelas significam
vários blocos de dados, e vários blocos de dados geralmente causam problemas quando você tenta
salve o formulário. (Nós explicaremos mais tarde.) Agora, se você pressionar o botão 'Fechar', você vai
feche a janela do cliente e retorne à tela ord_can. Examine cust_blk em
no Navegador de Objetos, você encontrará o gatilho QUANDO-BOTÃO-PRESSIONADO do 'Fechar'
o botão tem o seguinte código:

Fechar_Ganhar2;
Observe que o Win2 está associado ao cust_can. Este comando fechará o Win2, para que
a tela e os blocos de dados nela também serão fechados. Uma vez que a outra janela é a
apenas a janela aberta neste momento, você será automaticamente levado a ela.

A diferença entre go_block e close_win: Parece que ambos os comandos podem


Levar você a uma janela diferente. No entanto, go_block simplesmente alterna entre
windows. Ele não fecha nada. Em contraste, close_win não pode navegar para um
janela específica. Ele automaticamente o levará para a próxima janela disponível.

Adicionando gráficos a um formulário

Você pode adicionar imagens gráficas ao seu aplicativo. Para fazer isso, selecione uma tela no
Navegador de Objetos, e clique em Editar Importar Imagem. Isso importará para o formulário um
arquivo que contém uma imagem gráfica. Você pode editar seu layout no Editor de Layout.

Limpar os valores de um formulário

Existem dois comandos CLEAR_FORM e CLEAR_BLOCK. Basicamente, CLEAR_FORM


limpará todo o formulário, não importa a qual bloco de dados o botão pertença. Em
Em contraste, CLEAR_BLOCK só limpará o bloco de dados ao qual o botão pertence.
Por favor, baixe [Link] examine os dois botões CLR_FM e
CLR_BLK no bloco S_ITEM.

Salvando informações dentro de um formulário

Quando queremos criar um botão SALVAR para salvar informações, usamos o seguinte
código no gatilho QUANDO-BOTÃO-PRESSIONADO:

FORMULÁRIO_DE_COMPROMISSO

Se o seu formulário for simples e tiver apenas um bloco de dados associado a uma tabela, isso
geralmente funciona corretamente. No entanto, se seu formulário tiver dois ou mais blocos de dados ou se você
tem blocos de dados de múltiplos registros correspondentes a várias linhas de uma tabela, então o
O comando COMMIT_FORM tentará inserir uma ou mais tuplas em várias tabelas
simultaneamente. Dependendo da "lógica" do seu aplicativo, o formulário pode fornecer
erros.

Como depurar

Se você está tendo problemas para inserir registros em uma tabela usando o COMMIT_FORM,

(1) Simplifique sua aplicação reduzindo-a a um único bloco de dados e verifique se está
funciona.
(2) Adicione mais blocos de dados ao formulário.
(3) Comece inserindo novos dados no PRIMEIRO bloco de dados (o que está no topo de
a lista de blocos de dados no Navegador de Objetos
(4) Evite múltiplos botões SALVAR e comandos COMMIT_FORM em um formulário.
(5) [Link] ver como os dois botões de salvar funcionam.

Incapaz de inserir tuplas em uma tabela?


Se alguns atributos em uma tabela tiverem restrições NOT NULL, inserir um registro que tenha
Valores NULL para esses atributos causarão erros. A solução é ou descartar
Restrições NOT NULL na definição da tabela ou certifique-se de fornecer um valor
para esses atributos.

Excluindo um registro dentro de um formulário

Crie um botão rotulado DELETAR e adicione um gatilho QUANDO_BOTÃO_PRESSIONADO com o


código a seguir:

excluir_registro
comprometer;

Isso irá deletar o registro atual. No entanto, se você tiver mais de um bloco de dados em
o formulário, é mais complicado. Basicamente, DELETE_RECORD irá deletar o atual
registre no bloco de dados a que o botão pertence. Se você tiver uma forma tabular, isso
deletará o primeiro registro por padrão. E se você quiser deletar outro registro, você
pode mover o cursor para esse registro e pressionar o botão EXCLUIR. O mais importante,
se você tiver um relacionamento mestre-detalhe em seu formulário, para excluir um pai
registro com registros filhos, você precisa mudar a propriedade do relacionamento. Certo
clique na relação (que deve estar sob o bloco mestre) e selecione a "Propriedade"
Paleta". Altere o "Comportamento de Exclusão de Registro" para "Cascata". Agora você deve estar
capaz de excluir o registro pai mesmo quando há registros filhos.

Como exibir mensagens de erro

Se você receber um erro ao executar um formulário, pode usar o recurso de Ajuda para exibir o
erro ao clicar em Ajuda / Exibir Erro na barra de menu. Isso pode ajudá-lo a depurar
seu formulário especialmente quando há múltiplos blocos de dados no formulário. Por exemplo,
o erro pode realmente ocorrer em outra tabela - não na que você está tentando
inserir registros em!
Exercícios para o Criador de Formulários

Exercício 1

1. Crie um bloco de dados chamado "Funcionário" com base na tabela S_EMP.


2. Crie uma tela chamada "EMP_CANVAS" para exibir o bloco de dados.
3. START_DATE é um campo na tabela S_EMP. Inicialize o valor de START_DATE para
ser o atual data.
4. Faça COMMISSION_PCT um grupo de botões de rádio e adicione cinco botões de rádio: 10, 12,5, 15,
17,5, 20 para o grupo. Assim o usuário pode escolher entre esses valores.

Exercício 2

Você precisa completar o Tutorial do Construtor de Formulários Parte I para finalizar este exercício. Após você
Complete este exercício, você ficará familiarizado com bloco de dados, canvas, bloco de controle,
botão

1. Baixe e execute o [Link], criará várias tabelas. O


a figura abaixo mostra o esquema relacional dessas tabelas. Também você pode examinar o
tabelas no Navegador de Objetos sob os Objetos do Banco de Dados.

PROJETO
criou uma relação mestre-detalhe entre estes dois blocos de dados.
b. Crie uma tela chamada PROJECT_CANVAS para exibir os dois blocos de dados.
c. Crie um bloco de controle. Adicione os seguintes itens ao bloco que não estão no
NOME_DO_DEPARTAMENTO
d. Salve o formulário como [Link], pois você o usará em outros
exercícios.

Exercício 3

Este exercício usa o script [Link] para criar tabelas, se você ainda não tiver executado
este script do exercício 2 baixe-oaquiA figura abaixo mostra o relacional
esquema dessas tabelas.

a. Crie um bloco de dados VISUALIZAÇÃO para exibir as informações de visualização e coloque o


bloco de dados na tela VIEW_CANVAS.
b. Faça o valor inicial de viewDate ser a data atual.
c. Crie um bloco de controle. Adicione os seguintes itens ao bloco que não estão no
base table: a text item CLIENT_NAME and a "Client" button.
d. Crie outra tela chamada CLIENT_CANVAS para gerenciar as informações de
os clientes. Adicione um bloco de dados chamado CLIENTE ao CLIENT_CANVAS.
e. Faça prefType um grupo de botões de opção e adicione dois botões de opção: "Apartament" e "Casa"
ao grupo. Para que o usuário possa escolher entre esses dois tipos de preferência.
f. Salve o formulário como [Link], porque você o usará em outros
exercícios.

Exercício 4

Você precisa completar a Parte II do Tutorial do Criador de Formulários para finalizar este exercício. O
os objetivos deste exercício são: gatilho, LOV, sequência, unidades de programa e calculado
valores, alerta.
1. Os exercícios a seguir usarão [Link] que você criou no Exercício 2.

a. Crie um botão "Salvar" para salvar informações e adicione um QUANDO-BOTÃO-


Gatilho pressionado.
b. Adicione um LOV que esteja conectado ao botão "Departamento". Os valores
os valores retornados pelo LOV devem ser inseridos em DNUM e DEPT_NAME no formulário.
c. Faça PNUMBER um campo gerado pelo sistema após criar uma sequência de banco de dados.
O valor será gerado quando você tentar inserir um novo registro (use um PRE-
trigger de INSERÇÃO). Por favor, note que já existem valores na coluna, e
certifique-se de que sua sequência siga a restrição de chave primária. Como este valor
será gerado automaticamente, não será mais um campo obrigatório. Vá para a Propriedade
Paleta para Pnumber e mude o campo "Obrigatório" para "Não".
d. Adicione um item de texto SALÁRIO ao BLOCO DE CONTROLE. Mova o texto recém-adicionado
item ao redor para que se alinhe com outros itens no bloco de dados WORKS_ON.
e. Adicione uma unidade de programa chamada Get_Wage que calcula o salário com base no
horas que o funcionário trabalhou no projeto (salário=horas*20).
f. Adicione um gatilho POST-QUERY ao bloco de dados WORKS_ON que chama o
Unidade do programa Get_Wage.
g. Crie um alerta. Certifique-se de que o alerta será chamado quando o botão "Salvar"
é pressionado e fornece a opção de enviar ou cancelar.
h. Salve o formulário.

2. Os seguintes exercícios usarão [Link] que você criou no Exercício 3.


a. Crie um botão "Salvar" para salvar informações e adicione um QUANDO-BOTÃO-
PRESSIONADO o gatilho na Tela do Cliente.
b. Adicione um LOV que esteja conectado ao botão "Cliente". O clientNo e o
O sobrenome do cliente retornado pelo LOV deve ser inserido em clientNo e
NOME_DO_CLIENTE no formulário.
c. Crie um alerta. Certifique-se de que o alerta será chamado quando o botão 'Salvar' for pressionado.
é pressionado e fornece a opção de enviar ou cancelar.
d. Salve o formulário.

Exercício 5

Você precisa completar o Tutorial do Criador de Formulários Parte III para finalizar este exercício.
os objetivos deste exercício são: acionar, excluir registros, limpar formulários, fechar janelas
alternar entre telas.

1. Os seguintes exercícios usarão [Link] que você atualizou no Exercício 4.

a. Adicione um botão "Excluir Projeto" para excluir as informações do projeto. Certifique-se de


você exclui todas as informações de works_on relacionadas ao projeto excluído.
b. Adicione um botão 'Excluir Works_On' para excluir as informações de works_on.
c. Adicione um botão "Limpar" para limpar todo o formulário.
d. Crie outra tela chamada EMP_CANVAS para gerenciar as informações do
funcionários. Adicione um bloco de dados chamado EMPLOYEE ao EMP_CANVAS para exibir o
informações do funcionário.
[Link] um botão "Gerenciamento de Funcionários" ao PROJECT_CANVAS, para que quando o
o usuário clicar neste botão, ele/ela será direcionado para o EMP_CANVAS.

2. Os exercícios a seguir utilizarão [Link] que você atualizou no Exercício 4.


a. Adicione um botão 'Excluir Visualização' ao VIEW_CANVAS para excluir a visualização
informação.
b. Adicione um botão "Limpar" ao VIEW_CANVAS para limpar todo o formulário.
c. Adicione um botão "Gestão de Clientes" ao VIEW_CANVAS, para que quando o usuário
clicar neste botão, ele/ela será direcionado(a) para CLIENT_CANVAS.

Você também pode gostar