SC9.1 campo select com lookup

Amigos, bom dia!

Estou criando um formulário e nele utilizo alguns campos tipo select com lookup de tabelas estrangeiras.
Porem nestas tabelas eu define uma campo, para saber se aquele valor esta ativo ou não, assim quando não estiver ativo o valor não aprece no select em novos registros. Porem eu quero que um registro inativo, apareça em um campo onde este ja havia sido cadastrado antes.

O meu problema é que quando adiciono o sql abaixo, os registro cadastrados funcionam corretamente, porem novos registro o select não exibe nenhuma opção.
A sintase até onde testei esta correta, acredito que o problema seja na variável do scriptcase, também tentei usar uma variavel global [var_unidade], jogando o valor de {id_unidade} no evento onLoadRecord, mas desta forma a variável assumiu apenas um valor para todos os registro.

Alguém sabe alguma forma que posso utilizar para contornar esse problema?
Obrigado!

SELECT
 id_unidade,
 nm_unidade
FROM
 unidade_local 
WHERE
 ativo = '1'
 OR (ativo = '0' AND id_unidade = '{id_unidade}' )
ORDER BY
 id_unidade

Procedeu o Debug para avaliar as query’s executadas?

Haroldo, utilizei sim, pois quando tentei utilizar var global a primeira vez não tava entendendo pq um dos campos estava trazendo a id no lugar do valor e só com o debug entendi o que havia acontecido. pois deixei as ids 2 e 3 desativadas no db para testar.

Com variável local, os registro antigos aparecem ok, mas o novo registro não carrega nenhum valor.

Com variável global, todos os registro ficam com o valor 2, porem o novo aber corretamente.

Consegui resolver meu problema da seguinte maneira:

Para cada select que precisava ser checado se o valor estava ativo ou inativo, criei uma campo auxiliar escondido e no evento OnRecord, atribuí o valor original no campo auxiliar com a seguinte sintaxe ex.: {aux_unidade} = sprintf("’%s’", {id_unidade}); e no sql coloquei a variável auxiliar no lugar da original.

SELECT
 id_unidade,
 nm_unidade
FROM
 unidade_local 
WHERE
 ativo = '1'
 OR (ativo = '0' AND id_unidade = {var_unidade})
ORDER BY
 id_unidade

Caso alguém conheça algum método melhor, favor orientar… =)
E Obrigado pela ajuda!

Olá Wagnerary,

Eu também faço Select com Lookup e coloco a condicional para não selecionarem cadastros inativos durante a inclusão da movimentação (via aplicação de formulário), isso é funciona naturalmente para novos registros (inclusão), entretanto, ao navegar pelos registros já gravados e o cadastro estiver inativo o resultado do select lookup não será apresentado… me parece que é essa a dificuldade que você levantou aqui nesse post… para contornar essa situação… faço mais ou menos o que você mencionou aqui… só que um pouco mais simples, sem criar variável, usar evento e ect, bem parecido com sua solução, mas informando a variável do campo diretamente no select lookup. Porque se for uma nova inclusão essa variável do campo estará vazia e ser for atualização vai retornar o que estiver gravado e aí o select lookup vai retornar também mesmo que estiver inativo … não sei se estou acrescentando alguma coisa, mas veja só:

SELECT
 id_unidade,
 nm_unidade
FROM
 unidade_local 
WHERE
 (unidade_local.ativo = '1')
 OR (unidade_local.id_unidade = {id_unidade})
ORDER BY
 id_unidade