Bom dia, gostaria de saber como eu faço a situação abaixo:
Em uma tela tenhos vários campos, e ao lado de cada um deles um check box, eu quero q ao marcar alguns desses checks, e clicar em um botão, seja chamada uma outra tela e nesta tem os mesmos campos, porém só quero q seja executada a query dos q eu marquei o check.
Obrigado.
Check box, execute query
- 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
Se o seu bloco possui poucos campos, não tem problema em "varrer" o seu bloco buscando apenas os que você clicou com checkbox.
Daí você pode fazer INSERT desses valores numa tabela temporária (Global Temporary Table, por exemplo), daí basta fazer JOIN entre a GTT e sua tabela. Com isso, vai mostrar apenas os que você CHECKou...
Uma outra forma que eu já utilizei, quando a tabela era IMENSA, e não era possível ficar fazendo LOOP num bloco com milhares de linhas foi o seguinte:
* Criar a GTT acima com os mesmos campos da PK da tabela principal.
* Cada vez que alguém fazia CHECK o programa fazia INSERT na GTT
Dessa forma, ficava fácil o usuário poder filtrar coisas a vontade no bloco e clicar, pois mesmo fazendo execute query no bloco pra filtrar outras coisas, as "seleções" já feitas ficavam na GTT.
Dessa forma ficou bem rápido e flexível para o usuário, evitando longos LOOP em blocos.
Daí você pode fazer INSERT desses valores numa tabela temporária (Global Temporary Table, por exemplo), daí basta fazer JOIN entre a GTT e sua tabela. Com isso, vai mostrar apenas os que você CHECKou...
Uma outra forma que eu já utilizei, quando a tabela era IMENSA, e não era possível ficar fazendo LOOP num bloco com milhares de linhas foi o seguinte:
* Criar a GTT acima com os mesmos campos da PK da tabela principal.
* Cada vez que alguém fazia CHECK o programa fazia INSERT na GTT
Dessa forma, ficava fácil o usuário poder filtrar coisas a vontade no bloco e clicar, pois mesmo fazendo execute query no bloco pra filtrar outras coisas, as "seleções" já feitas ficavam na GTT.
Dessa forma ficou bem rápido e flexível para o usuário, evitando longos LOOP em blocos.
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Dr, sua resposta acabou solucionando um problema meu.. não sei se vai funcionar mas vou testar!
quando crescer quero ser igual a você! kkkkk
Abraço!
quando crescer quero ser igual a você! kkkkk
Abraç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
ahaohao beleza...
Eu ia comentar que também da pra alterar o default_where, mas daí é o mesmo caso citado anteriormente: Isso só vai prestar se forem poucas linhas clicadas.
Essa forma de ir salvando numa tabela o que o usuário checkou, pra mim é a melhor, pois fica bem rapido!
Eu ia comentar que também da pra alterar o default_where, mas daí é o mesmo caso citado anteriormente: Isso só vai prestar se forem poucas linhas clicadas.
Essa forma de ir salvando numa tabela o que o usuário checkou, pra mim é a melhor, pois fica bem rapido!
-
- Rank: Programador Júnior
- Mensagens: 19
- Registrado em: Ter, 07 Jul 2009 10:26 am
- Localização: Rio de Janeiro - RJ
_________________
Rodrigo Póvoa
Analista de Sistemas Júnior
Oracle Developer
Rodrigo Póvoa
Analista de Sistemas Júnior
Oracle Developer
Dr_Gori,
Excelente solução. Parei nesse tópico aqui por curiosidade e achei a sua solução muito interessante.
Excelente solução. Parei nesse tópico aqui por curiosidade e achei a sua solução muito interessante.
-
- Rank: Analista Júnior
- Mensagens: 97
- Registrado em: Qua, 07 Jan 2009 12:39 pm
- Localização: Recife
Agora surgiu um outro problema, quando eu clico no check, ele não salva a marcação, na configuração dele está marcado como insert e update como sim, e o bloco q é só de consulta está como update sim, para q eu consiga marcar o check e insert não. o check está como database não, alguém sabe o pode ser ?
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
PMV, Observe se esse outro topico criado por você tem a solução para este problema.
http://glufke.net/oracle/viewtopic.php?t=4620
Coloquei aí a solução para esse tipo de erro.
Espero que ajude
http://glufke.net/oracle/viewtopic.php?t=4620
Coloquei aí a solução para esse tipo de erro.
Espero que ajude
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Não tem alteração para gravar porque o chk esta como base de dados = Não
a ideia que te dei foi para você, atraves do click no check, fazer outra ação ou coisa do tipo.
Seria interessante você tentar explicar de forma completa e clara o que você quer, dessa forma, a gente pode lhe ajudar de forma rápida, pois, vejo que já não é o primeiro post seu solicitando ajuda, a gente ajudando e você sempre querendo algo mais...
posta aí pra gente qual sua ideia no contexto geral e então a ajuda vem de forma rápida para todos.
Abraços e fico aguardando seu post!
a ideia que te dei foi para você, atraves do click no check, fazer outra ação ou coisa do tipo.
Seria interessante você tentar explicar de forma completa e clara o que você quer, dessa forma, a gente pode lhe ajudar de forma rápida, pois, vejo que já não é o primeiro post seu solicitando ajuda, a gente ajudando e você sempre querendo algo mais...
posta aí pra gente qual sua ideia no contexto geral e então a ajuda vem de forma rápida para todos.
Abraços e fico aguardando seu post!
-
- Rank: Analista Júnior
- Mensagens: 97
- Registrado em: Qua, 07 Jan 2009 12:39 pm
- Localização: Recife
Tenho uma tela de consulta com vários registros e ao lado de cada um deles um check box, quando marcar alguns dos checks e clicar em um botão, será chamada uma outra tela, e nesta só devem aparecer os registros, onde o check foi marcado, deu pra entender ?
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Certo. Entendido... Você então tem duas alternativdas.
- Ao clicar no check, fazer um insert na tabela temporaria anteriormente mostrado por Thomas e no outro bloco que será exibido você mostra o conteúdo delas.
- Ao clicar no botão, varre as informações e insere todas elas na tabela temporaria e no outro bloco que será exibido você mostra o conteúdo delas.
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Sim, pois, o insert está sendo via código e não via forms.
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Caso voCê não queira que essa mensagem apareca, use o recurso do message_level
Ex:
Ex:
:system.message_level := 5;
DO_KEY('COMMIT_FORM');
:system.message_level := 0;
- 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
Eu sempre fiz assim:
Pois dessa forma, ele deixa MESSAGE_LEVEL do jeito que estava.
DECLARE
VLEVEL NUMBER;
BEGIN
VLEVEL:=:SYSTEM.MESSAGE_LEVEL;
:SYSTEM.MESSAGE_LEVEL:=25;
COMMIT;
:SYSTEM.MESSAGE_LEVEL:=VLEVEL;
END;
Pois dessa forma, ele deixa MESSAGE_LEVEL do jeito que estava.
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Você fez o que foi explicado anteriormente? ou seja...
incluir um código semelhante a este na trigger de check-box changed???
Se ainda não estiver conseguindo, Revega tudo que informamos pra você... se não dar erro, se não exibe nada, debuga a rotina que você vai ver o que ocorre e corrigir.
Como conselho, pede um help a alguém ai que trabalha com você nessa mesma ferramenta, pois, as vezes o erro é uma besteira e não estamos vendo.
incluir um código semelhante a este na trigger de check-box changed???
begin
insert into tabela (camp1, campo2, campo3) values (1,2,3);
do_key('commit_form');
end;
Como conselho, pede um help a alguém ai que trabalha com você nessa mesma ferramenta, pois, as vezes o erro é uma besteira e não estamos vendo.
-
- Rank: Analista Júnior
- Mensagens: 97
- Registrado em: Qua, 07 Jan 2009 12:39 pm
- Localização: Recife
Um exemplo, criei essa tabela temporária, e quero inserir apenas os registros com o cheque = 57,
que são apenas duas linhas, porém está inserindo tudo na temporária e não apenas esses dois registros.
que são apenas duas linhas, porém está inserindo tudo na temporária e não apenas esses dois registros.
Create Table temp as Select Conta
From Pagamento
Begin
For record in (Select Conta
From Pagamento
Where cd_cheque = 57) loop
insert into temp
(Conta)
values
(record.Conta);
End Loop;
End;
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Faz separado a criação do bloco PL/SQL.
Sua criação da tabela está errada, pesquisa aqui no forum que tem alguns exemplos.... depois de criar corretamente, você vai conseguir.
Sua criação da tabela está errada, pesquisa aqui no forum que tem alguns exemplos.... depois de criar corretamente, você vai conseguir.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes