Montando uma interface de cadastro que permite incluir, excluir ou dar manutenção aos detalhes
Neste guia mostraremos um exemplo de uma interface de cadastro que permite incluir, excluir ou dar manutenção o(s) detalhe(s) da(s) tabela(s) de detalhe. Usaremos duas tabelas criadas no sistema chamadas: Lotes e Casas.
A intenção é ter um cadastro de Lotes e nesse cadastro, adicionar as Casas pertencentes a esse Lote.
Obs.: Para as imagens que não é possível ver e ler claramente basta clicar sob a mesma.
Cadastrando a interface
No cadastro da interface, o filtro de entrada deve ser “personalizado”. Pois com esse tipo de filtro de entrada é possível definir se pode incluir registro e cadastrar detalhes.
Ao cadastrar a interface, adicione a tabela principal e a(s) tabela(s) de detalhe da tabela principal.
Na imagem acima, a cardinalidade 1 representa a tabela principal, já a 1.1 representa uma tabela de detalhe(uma tabela que faz junção com a tabela principal). E a 1.2 representa uma tabela que a tabela principal faz junção portanto, não é uma tabela de detalhe da tabela principal. Nesse caso, poderemos dar manutenção nos detalhes de Casa. Podemos verificar quais são as tabelas de detalhe da tabela principal ao adicionar uma tabela de junção.
Na ultima coluna, os campos que tem um * representa a cardinalidade da junção que aquela tabela faz com a tabela principal( * = Detalhes). Na imagem acima, está destacado que estamos pesquisando tabelas vinculadas a Lotes e que o campo CASA_LOTSID referente a tabela Casa é uma tabela de detalhe.
Como não vamos permitir incluir um novo registro, devamos desmarcar na tabela principal que permitimos inclusão e exclusão na mesma. Então nesse caso, não permitimos incluir novos lotes ou excluir lotes já cadastrados.
Já na tabela de detalhe, temos que marcar que a tabela será utilizada para manutenção de dados.
Feito isso, temos que adicionar os campos que devem receber manutenção referentes a tabela. Nota-se que para os campos da tabela principal, se não podem ser alterados (adicionados na interface apenas para serem carregados em tela) devemos alterar-lhos para “Somente Leitura” pois a tabela principal não permite incluir e excluir registro, mas alterar depende dessa configuração.
Após adicionar os campos, que devem ser apresentados em tela para que busquem um registro que já existe para uma manutenção/consulta.
Montado o layout da tela
Na o layout de tela, os filtros tem área própria chamada “Filtros de entrada” onde por padrão cada um é adicionada em uma linha diferente. Que se desejar, pode alterar como quiser… 2 filtros em linha, 3 filtros. Isso vai depender a forma que você quer montar o layout.
Também na tela, temos os campos adicionados da tabela principal onde cada um tem uma linha também (o mesmo também pode ser alterado). Já os campos de detalhe ficam dentro de uma “grade de detalhe” com o nome da tabela (conforme a imagem), os campos detalhes podem ter a ordem alterada, o tamanho e etc porém sempre vão ficar dentro da grade de detalhe.
Nos campos do detalhe, podemos incluir e excluir detalhes. Porém o sistema dá opção de apenas dar manutenção nos detalhes que já estão cadastrados, sem pode incluir novos e excluir os cadastrados. Para fazer isso devemos esconder os campos de “novo” e de “excluir” da grade de detalhes com Java Script. Para Habilitar a edição de Java Script da tela da interface clique em “formulário”.
Os dois códigos JavaScript usados foram:
Para esconder o botão de incluir novo detalhe:
escondeObjeto('idCasa:incluirDetalhe');
Para esconder o botão de excluir um detalhe:
escondeObjeto('idCasa:0:linkExcluirDetComConfirm_idCasa');
Note-se que nesse código o id passado tem um “0”:
escondeObjeto('idCasa:0:linkExcluirDetComConfirm_idCasa');
O numero 0 representa o primeiro detalhe, então se o registro desta interface ter mais que um detalhe, o segundo detalhe poderá ser excluído. Portanto deve-se inserir esse código para cada linha de detalhe que podemos ter.
Exemplo se tivermos 4 linhas de detalhe:
escondeObjeto('idCasa:0:linkExcluirDetComConfirm_idCasa'); //Referente ao 1º detalhe escondeObjeto('idCasa:1:linkExcluirDetComConfirm_idCasa'); //Referente ao 2º detalhe escondeObjeto('idCasa:2:linkExcluirDetComConfirm_idCasa'); //Referente ao 3º detalhe escondeObjeto('idCasa:3:linkExcluirDetComConfirm_idCasa'); //Referente ao 4º detalhe
Executando a listagem
Sem esconder o incluir/excluir do detalhe:
Escondendo o incluir/excluir do detalhe:
Após montar a tela, ela será apresentada da forma que foi configurado. Podendo dar manutenção nos registro do detalhe e nos campos da tabela principal (se não for marcado somente leitura).