Boa tarde pessoal, estou retomando minhas atividades em forms e estou com a seguinte dúvida:
Criei uma tela de cadastro de feriados, e nessa tela criei um botão de consulta chamando uma LOV e carregando os campos na tela de cadastro mesmo, mas quando carrego os campos e tento fazer a alteração o form tenta criar outro registro.
Como faço para deixar o form em modo de consulta para quando a lov carregar os campos na tela de cadastro, e com isso eu fazer a alteração do registro.
Muito obrigado.
Form em modo de consulta
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Não entendi muito bem o fluxo.
Parece que o form já está entrando em modo de consulta.
O botão de consulta que você criou tem apenas um SHOW_LOV ?
Coloca mais informações pra gente entender melhor o que está acontecendo.
Parece que o form já está entrando em modo de consulta.
O botão de consulta que você criou tem apenas um SHOW_LOV ?
Coloca mais informações pra gente entender melhor o que está acontecendo.
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
O forms não esta em modo de consulta, preciso fazer isso.
Sim no botão que chama a LOV so tem o SHOW_LOV
Preciso que quando fosse clicado no botão que chama a LOV, o forms carregar as informações para edição.
Sim no botão que chama a LOV so tem o SHOW_LOV
Preciso que quando fosse clicado no botão que chama a LOV, o forms carregar as informações para edição.
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bom, quando o forms está em QUERY_MODE, o usuário deve digitar informações nos campos que serão os filtros pra consulta.
Aí ele clica no EXECUTE_QUERY e pronto.
A partir daí, ele está em modo de edição das linhas retornadas.
Aí ele clica no EXECUTE_QUERY e pronto.
A partir daí, ele está em modo de edição das linhas retornadas.
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
Fiz da forma como disse e deu certo, segue abaixo como ficou o código.
EXECUTE_QUERY;
DECLARE
VA_SHOW_LOV BOOLEAN;
BEGIN
VA_SHOW_LOV := SHOW_LOV('LOV_FERIADO',320,100);
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
Faltou uma parte do código:
EXECUTE_QUERY;
DECLARE
VA_SHOW_LOV BOOLEAN;
BEGIN
VA_SHOW_LOV := SHOW_LOV('LOV_FERIADO',320,100);
END;
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
Bom dia, fiz um documento exemplificando o que eu preciso.
segue em anexo.
segue em anexo.
- Anexos
-
- FORM.pdf
- Exemplo
- (690.04 KiB) Baixado 540 vezes
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
alguém pode me ajudar...
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Então:
Como funciona um bloco:
O bloco possui todas características pra se editar, consultar, incluir linhas em uma tabela. (normalmente, existe uma tecla que faz isso.)
Quando você roda o EXECUTE_QUERY, ele busca linhas da tabela, e traz pro bloco.
Se você alterar essas linhas, e der um COMMIT, ele salva na tabela.
Não importa quantas linhas você alterou. Ele é esperto o suficiente pra alterar todas linhas mexidas.
Se você incluir uma nova linha nesse bloco, ele é esperto o suficiente pra incluir ela. O mesmo se você excluir uma linha. Pode excluir várias e depois salvar.
Então esse tipo de programação com um botão "confirma", "Inclui", "Exclui", etc.
Isso a gente se vê mais em telas WEB HTML, onde cada ação é individual. (e cada ação dispara um programa diferente).
Um bloco é muito melhor que isso.
Você não precisa ter NENHUM código pra ter todas operações Create, Update, Delete.
A única programação aí seria o botão da LOV, com um SHOW_LOV e mais nada.
Se for necessário MESMO ter esse tipo de botão, tudo bem. Mas a única coisa dentro dele vai ser o comando COMMIT, um outro pra apagar a linha, etc.
Tudo esse código que você postou que está no botão CONFIRMAR, o ideal é que ele esteja na PRE_INSERT.
Daí ele vai o DT_CADASTRO := SYSDATE pra cada linha, e não apenas pra essa.
Essa trigger vai ser disparada automaticamente quando você der o COMMIT.
Em resumo, não precisa nada disso.
A validação de IF MARCA IS NULL, pode ficar na trigger WHEN-VALIDATE-RECORD.
Dessa forma, você não vai conseguir sair da linha sem ter validado isso.
O QUE EU FARIA:
Eu tiraria todos esses botões da tela e colocaria um bloco MULTI-RECORD, que é bem mais fácil de entender.
Depois, eu ia criar uma trigger WHEN-Validate-Record com as devidas consistências.
E uma trigger PRE-INSERT com os campos que devem ser populados automaticamente.
Só!
Como funciona um bloco:
O bloco possui todas características pra se editar, consultar, incluir linhas em uma tabela. (normalmente, existe uma tecla que faz isso.)
Quando você roda o EXECUTE_QUERY, ele busca linhas da tabela, e traz pro bloco.
Se você alterar essas linhas, e der um COMMIT, ele salva na tabela.
Não importa quantas linhas você alterou. Ele é esperto o suficiente pra alterar todas linhas mexidas.
Se você incluir uma nova linha nesse bloco, ele é esperto o suficiente pra incluir ela. O mesmo se você excluir uma linha. Pode excluir várias e depois salvar.
Então esse tipo de programação com um botão "confirma", "Inclui", "Exclui", etc.
Isso a gente se vê mais em telas WEB HTML, onde cada ação é individual. (e cada ação dispara um programa diferente).
Um bloco é muito melhor que isso.
Você não precisa ter NENHUM código pra ter todas operações Create, Update, Delete.
A única programação aí seria o botão da LOV, com um SHOW_LOV e mais nada.
Se for necessário MESMO ter esse tipo de botão, tudo bem. Mas a única coisa dentro dele vai ser o comando COMMIT, um outro pra apagar a linha, etc.
Tudo esse código que você postou que está no botão CONFIRMAR, o ideal é que ele esteja na PRE_INSERT.
Daí ele vai o DT_CADASTRO := SYSDATE pra cada linha, e não apenas pra essa.
Essa trigger vai ser disparada automaticamente quando você der o COMMIT.
Em resumo, não precisa nada disso.
A validação de IF MARCA IS NULL, pode ficar na trigger WHEN-VALIDATE-RECORD.
Dessa forma, você não vai conseguir sair da linha sem ter validado isso.
O QUE EU FARIA:
Eu tiraria todos esses botões da tela e colocaria um bloco MULTI-RECORD, que é bem mais fácil de entender.
Depois, eu ia criar uma trigger WHEN-Validate-Record com as devidas consistências.
E uma trigger PRE-INSERT com os campos que devem ser populados automaticamente.
Só!
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Aqui eu fiz um form bem simples, que faz o seguinte:
* Permite consultar, incluir e alterar em um bloco multi-record.
* Busca a descrição do departamento na LOV.
Não foi utilizado ***nenhuma*** programação. A única linha de código é um SHOW_LOV que está na trigger de BUTTON_PRESSED do botão da LOV. (este botão é opcional, visto que é possível chamar a LOV com a tecla F9).
Para criar a tabela emp e dept, utilizei este script:
https://apexplained.wordpress.com/2013/ ... in-oracle/
Algumas considerações:
* A origem do bloco é uma query! Ela busca a descrição do campo DNAME.
* Permite consultar, incluir e alterar em um bloco multi-record.
* Busca a descrição do departamento na LOV.
Não foi utilizado ***nenhuma*** programação. A única linha de código é um SHOW_LOV que está na trigger de BUTTON_PRESSED do botão da LOV. (este botão é opcional, visto que é possível chamar a LOV com a tecla F9).
Para criar a tabela emp e dept, utilizei este script:
https://apexplained.wordpress.com/2013/ ... in-oracle/
Algumas considerações:
* A origem do bloco é uma query! Ela busca a descrição do campo DNAME.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes