Olá galera, tenho uma duvida com Oracle Forms.
tenho um campo txt e um botão "buscar", também tenho um bloco com alguns registros, aprox 30.
como faço para, assim que eu digitar o texto que quero no campo txt, e apertar o botão "buscar", gostaria que o registro percorresse o bloco e parasse justamento no que foi digitado.
Buscar Registro Digitado
- 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
Tenta algo assim ao clicar no botão.
GO_BLOCK('bloco');
FIRST_RECORD;
BEGIN
LOOP
IF :bloco.campo = :blocoBusca.Sarch OR :system.last_record='TRUE'
THEN exit;
ELSE next_record;
END IF;
END LOOP;
END;
entendi amigo mas se minha condição for ex .
no meu bloco onde sera mostrado os registros, tenho la algumas descrições em tabular ex.
ai no
os registro já listado la no bloco que comece com "TESTE" irá aparecer, ou se eu digitar por completo pra filtrar mais ex.
no meu bloco onde sera mostrado os registros, tenho la algumas descrições em tabular ex.
"TESTE DE QUALIDADE"
" BATATA"
"TESTE DE VELOCIDADE"
" MORANGO"
:bloco.campo
eu digito o seguinte " TESTE" cliclo no botãoos registro já listado la no bloco que comece com "TESTE" irá aparecer, ou se eu digitar por completo pra filtrar mais ex.
"TESTE DE QUALIDADE"
"TESTE DE VELOCIDADE"
- 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 você quer fazer um FILTRO certo ? (Não quer apenas "posicionar" no registro).
pra fazer um filtro, basta utilizar o valor do campo BUSCA na cláusula WHERE do seu bloco. (suponho que ele seja base-table).
Mais ou menos assim:
Propriedade do bloco / WHERE:
Basta você colocar um EXECUTE_QUERY no seu botão de consulta.
Desta forma, caso você preencheu algo no campo BUSCA, ele vai utilizar como filtro LIKE.
era isso ?
pra fazer um filtro, basta utilizar o valor do campo BUSCA na cláusula WHERE do seu bloco. (suponho que ele seja base-table).
Mais ou menos assim:
Propriedade do bloco / WHERE:
( :bloco.busca IS NULL
OR
seucampo like '%'||:bloco.busca||'%' )
Desta forma, caso você preencheu algo no campo BUSCA, ele vai utilizar como filtro LIKE.
era isso ?
Isso, pode ser apenas "posicionar" no registro, o que preciso é que não necessariamente eu digite no ":bloco.busca" a palavra completa para que ele faça a busca nos meus 30 registros abaixo em outro bloco em um campo "disp item" em tabular, e posicione no 1° registro que tiver a descrição que o usuário digitou.
Creio que precise de um like em algum momento para poder o sistema percorre até achar a descrição digitada ou parte do que foi.
GO_BLOCK('BL_UNID');
FIRST_RECORD;
BEGIN
LOOP
IF :BLOCO.BUSCAR = :BLOCO.DISPITEM OR :system.last_record = 'TRUE' THEN
exit ;
ELSE next_record;
END IF;
END LOOP;
END;
da forma acima está correta,consegui fazer só não consigo filtrar caso o usuário digite uma parte do que esta escrito.
E ai galera.. ontem resolvi o problema,,
ta ai a solução
ta ai a solução
DECLARE
V_CONT NUMBER;
BEGIN
IF :PESSOA.BUSCAR_AVALIACAO IS NULL THEN
MSG('Atenção: Avaliação não encontrada.');
GO_ITEM('BL_PRES.BTN_BUSCA');
END IF;
GO_BLOCK('BL_PRES');
IF V_CONT = 0 THEN
FIRST_RECORD;
ELSE
next_record;
END IF;
LOOP
IF (substr(:BL_PRES.API_PRES_DESCR,1,length(:PESSOA.BUSCAR_AVALIACAO)) = substr(:PESSOA.BUSCAR_AVALIACAO,1,length(:BL_PRES.API_PRES_DESCR)))
OR :system.last_record = 'TRUE' THEN
V_CONT := V_CONT + 1;
exit ;
END IF;
next_record;
END LOOP;
IF :system.last_record = 'TRUE' THEN
MSG('Ultimo Registro com a Busca' ||' '||'"'|| :PESSOA.BUSCAR_AVALIACAO||'"' ||' '|| 'Deseja continuar a buscar do primeiro registro ?' );
FIRST_RECORD;
END IF;
END;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes