Problema com Lista de Valores.

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina

Galera boa tarde é o seguinte criei uma LOV com o seguinte select

Selecionar tudo

SELECT COD_PRODUT_ACABDO, 
            DSC_PRODUT_ACABDO 
FROM PRODUT_ACABDO 
WHERE COD_PRODUT_ACABDO NOT IN (:CTRL.AUX_FILTRO);
Bom ai pra vocês entenderem é o seguinte esta lov esta num bloco multi-record, e este campo :CTRL.AUX_FILTRO recebe os valores que vou colocando concatenados para ficar 6, 9, 11 e assim por diante, porém meu select não filtra como se o NOT IN não funcionasse alguém tem alguma idéia.

Att.:
Alan
Avatar do usuário
dr_gori
Moderador
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

Isso não vai funcionar assim.
Veja só: Variáveis BIND não são variáveis de substituição (tipo, como no PHP ou mesmo no Reports quando se coloca um & na frente da variável). Ou seja, o forms não vai substituir o conteúdo da sua variável no local e DEPOIS rodar sua consulta... Não é assim que as binds funcionam.

Pra você conseguir fazer isso na LOV, terá que fazer algo assim:

Selecionar tudo

SELECT *
FROM SUA_TABELA
WHERER COD_PRODUT_ACABADO NOT IN
  (SELECT COD
   FROM ALGUMA_TABELA
   WHERE ALGUMA_COISA
  )
Se BINDS fossem variáveis de substituição, não haveria motivo de exisitir binds!
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina

está cara eu não entendi se diz que não posso colocar isso numa váriavel no forms e comparar num select, e tpo se eu fizesse

Selecionar tudo

SELECT COD_PRODUT_ACABDO 
FROM PRODUT_ACABDO 
WHERE COD_PRODUT_ACABDO NOT IN (SELECT :CTRL.AUX_FILTRO FROM DUAL)
não funcionária.

Eu lembro que fiz um dia, mas não lembro direito como e também achei que alguém tinha uma solução mais simples.

Att.:
Avatar do usuário
dr_gori
Moderador
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

É que BIND é um valor único! Não pode colocar um monte de vírgulas separando vários valores. Isso só funciona nos exemplos que eu citei acima (PHP, Reports usando &, e em SQL dinâmicos).

Uma forma de fazer isso é você fazer INSERT dos valores que você não quer numa tabela qualquer. (Digamos TEMP)

Daí, no seu select, você faz da forma que eu falei, faz um NOT IN (select * from TEMP).
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina

Ah entendi.. e tem como por exemplo eu criar um Record Group para a LOV usar com uma váriavel &AUX_FILTRO, e depois passar por parâmetro ou criar o Record Group na hora de selecionar algo assim sem fazer sql dinâmico.. porque não quero ficar fazendo insert.

Att.:
Alan.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 27 visitantes