Tutorial Oracle Forms: Criando Formulários
Tutorial Oracle Forms: Criando Formulários
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
2.1
2.2
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á
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
3.5
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:
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
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.
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
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)
ETAPA 5(b)
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
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.
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.
5 (b).5
5 (b).6
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
NOTA
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
Valores Iniciais
Deixe o cliente selecionar um tipo de pagamento: Dinheiro ou Cartão de Crédito, sendo Dinheiro o...
opção padrão.
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.
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:
6(a).3
6(a).4
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
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
:
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.
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
N
Ao criar as tabelas do banco de dados para este projeto, a seguinte restrição foi adicionada
:
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
NOTA
Etapa 6(d)
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"
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
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".
6(d).7
6(d).8
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
6(e).1
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
6(e).5
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
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
declarar
booleano
começar
mostrar_lov('lista_de_clientes');
fim;
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
:s_ord.total6(f)
Geração Automática de Chaves Primárias
Primeira Fase
6(f).1
6(f).2
Uma vez que você tenha feito login, digite o seguinte comando:
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
gatilho.
6(f).4
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)
6(g).1
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
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;
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;
:ctrl_s_ord.total*disc;
: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;
6(g).4
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
calc_detalhes_do_pedido
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
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
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
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
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
7,5
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
7.9
: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
7.11
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.
ir_bloco('cust_blk');
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;
:cust_blk.id := :ord_blk.customer_id;
À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.
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.
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.
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.
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
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
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.
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.
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.