Em ciência da computação, um lookup é uma matriz que substitui um campo identificador de uma tabela pela sua descrição somente em tempo de execução do programa, entretanto para a camada de negocio interna os dados continuam sendo manipulados pelo seu identificador, este é um recurso muito útil para manipular tabelas que possuem uma chave estrangeira tornado possível que esta tabela seja referenciada por sua descrição mas retornando o seu identificador para a tabela que a referenciou.
Está é a parte final do tutorial básico Oracle Application Express utilizando o Oracle Database, caso queira saber mais sobre o Oracle Application Express entre em contato conosco através do menu Contato deste blog.
Alterando um Relatório e um Formulário para Adicionar um Campo Lookup
1 – Vamos adicionar um nova tabela chamada categoria que será referenciada a tabela de funcionário, utilize os scripts abaixo:
2 – No Application Builder edite o seu relatório utilizando o botão direito e escolhendo a opção Edit:
3 – Na opção Source, modifique a instrução SQL adicionando o campo que você deseja inserir:
4 – Ao aplicar as mudanças você será avisado que as modificações não serão aplicadas automaticamente a este relatório, clique em aplicar as mudanças:
5 – Execute o relatório e na opção Actions, escolha Select Columns e adicione a nova coluna ao relatório:
6 – Você pode conferir que a nova coluna já foi inclusa no relatório e possui valores nulos:
7 – Volte a pagina inicial da sua aplicação, escolha o formulário para ser editado e nos itens do formulário com o botão direto do mouse clique em Create Page Item:
8 – Na criação do novo item escolha Select List:
9 – Insira o nome para seu novo campo e clique em próximo:
10 – Adicione o rotulo para seu campo, este rotulo irá aparecer no formulário:
11 – Na configuração do item, deixe os padrões e clique em próximo:
12 – Na lista de valores, role a pagina até o final e clique em e criar um Dynamic LOV, uma assistente para criação do LOV será aberto em uma nova janela, quando você terminar a criação do LOV sua tela será alimentada com um código SQL como da figura abaixo:
13 – No assistente de criação do LOV escolha o esquema para seu workspace:
14 – Escolha a tabela para efetuar o lookup:
15 – Crie o Lookup, escolhendo a descrição que será mostrada e o identificador que será gravado:
16 – O assiste criará o código SQL para seu lookup, clique em Finish e você retornará ao assistente de mudança do formulário e o código SQL será atribuído a sua configuração da lista, clique em próximo para passar para a ultima etapa do assistente:
17 – Está é a ultima etapa e importante configuração para que seu formulário funcione corretamente, em Origem utilize a opção “Sempre, substituindo qualquer valor existente em estado de sessão”, em Tipo de Origem escolha “Coluna do Banco de Dados” e insira o nome da coluna no qual será conectada a tabela do formulário:
18 – Rode sua aplicação, teste seu formulário e seu relatório. O seu formulário agora possui um campo lookup na tabela de funcionários sendo referenciado a tabela de categorias:
11 – Assim que utilizar a descrição do campo de categorias o lookup será executado retornando o campo do identificador para ser gravado em sua tabela, assim como você pode ver no relatório:
Terminamos este tutorial e agora você já sabe como criar uma aplicação básica para web utilizando o Oracle Apex e o banco de dados Oracle, está é uma das melhores ferramentas para escrever aplicações web com banco dados, no qual se obtém velocidade de desenvolvimento, ótimo desempenho, o melhor acesso a dados sem escrever muito código e além de todos os benefícios que esta completa ferramenta proporciona ainda é assinada pela Oracle. Não precisa dizer mais nada, não é?
SQL
-- Altera a tabela de funcionario ALTER TABLE FUNCIONARIOS ADD ID_CATEGORIA NUMBER(5) -- Cria tabela de categoria create table CATEGORIA( ID_CATEGORIA NUMBER(5), DESCRICAO VARCHAR2(30), CONSTRAINT pk_ID_CATEGORIA PRIMARY KEY (ID_CATEGORIA) ); -- Cria sequencia CREATE SEQUENCE ID_CATEGORIA_SEQ START WITH 1; -- Cria Trigger CREATE OR REPLACE trigger BI_CATEGORIA before insert on CATEGORIA for each row begin if :NEW.ID_CATEGORIA is null then select ID_CATEGORIA_SEQ.nextval into :NEW.ID_CATEGORIA from dual; end if; end; -- Insere dados na categoria INSERT INTO CATEGORIA VALUES (NULL, 'HARD ROCK'); INSERT INTO CATEGORIA VALUES (NULL, 'GRUNGE'); INSERT INTO CATEGORIA VALUES (NULL, 'ROCK');