Olá.
O tópico está um pouco antigo, porém me ajudou a buscar soluções para o problema.
Vou compartilhar a forma que resolvi essa questão.
Na grid-consulta fiz o select de uma função postgres ao invés do código select. Dessa maneira posso retornar qualquer campo dentro da função sem depender de recursos de lookup ou construção sql complexa no scriptcase.
A chamada no scriptcase ficou assim:
A ligação na grid eu fiz com uma Ligação de Campo pois estou usando uma APP ABA.
Ficou assim:
No postgres a função ficou assim :
– **********************************************
CREATE OR REPLACE FUNCTION public.f_consulta_app_grid_t_familia_cadastro(
OUT pes_nome character varying,
OUT fam_pk bigint,
OUT fam_resp_familiar_pes_pk bigint,
OUT fam_cadunico_tem_cadastro character varying,
OUT fam_cadunico_codigo_familiar character varying,
OUT fam_cadunico_renda_per_capita numeric,
OUT fam_cadunico_data_cadastramento date,
OUT fam_cadunico_data_ultima_atualizacao date,
OUT fam_fonte_renda_total numeric,
OUT fam_qtde_pessoas integer,
OUT fam_fonte_renda_per_capita numeric,
OUT fam_valor_conta_agua numeric,
OUT fam_consumo_conta_agua integer,
OUT fam_valor_conta_energia numeric,
OUT fam_consumo_conta_energia integer,
OUT fam_valor_conta_gas numeric,
OUT fam_consumo_conta_gas integer,
OUT fam_data_cadastro date,
OUT fam_despesa_total numeric,
OUT fam_renda_liquida numeric,
OUT fam_ativo character varying,
OUT fam_valor_aluguel numeric,
OUT fam_tipo_residencia character varying,
OUT vfam_qtde_criancas_0a12 integer)
RETURNS SETOF record
LANGUAGE ‘plpgsql’
COST 100
VOLATILE
ROWS 1000
AS $BODY$
declare
sTemp character varying;
rloop1 record;
rloop2 record;
result record;
ssql1 character varying;
ssql2 character varying;
BEGIN
for rloop1 in
select * from public.t_pessoa, public.t_familia_cadastro
where t_pessoa.pes_pk = t_familia_cadastro.fam_resp_familiar_pes_pk
order by t_pessoa.pes_nome
loop
pes_nome = rloop1.pes_nome;
fam_pk = rloop1.fam_pk;
fam_resp_familiar_pes_pk = rloop1.fam_resp_familiar_pes_pk;
fam_cadunico_tem_cadastro = rloop1.fam_cadunico_tem_cadastro;
fam_cadunico_codigo_familiar = rloop1.fam_cadunico_codigo_familiar;
fam_cadunico_renda_per_capita = rloop1.fam_cadunico_renda_per_capita;
fam_cadunico_data_cadastramento = rloop1.fam_cadunico_data_cadastramento;
fam_cadunico_data_ultima_atualizacao = rloop1.fam_cadunico_data_ultima_atualizacao;
fam_fonte_renda_total = rloop1.fam_fonte_renda_total;
fam_qtde_pessoas = rloop1.fam_qtde_pessoas;
fam_fonte_renda_per_capita = rloop1.fam_fonte_renda_per_capita;
fam_valor_conta_agua = rloop1.fam_valor_conta_agua;
fam_consumo_conta_agua = rloop1.fam_consumo_conta_agua;
fam_valor_conta_energia = rloop1.fam_valor_conta_energia;
fam_consumo_conta_energia = rloop1.fam_consumo_conta_energia;
fam_valor_conta_gas = rloop1.fam_valor_conta_gas;
fam_consumo_conta_gas = rloop1.fam_consumo_conta_gas;
fam_data_cadastro = rloop1.fam_data_cadastro;
fam_despesa_total = rloop1.fam_despesa_total;
fam_renda_liquida = rloop1.fam_renda_liquida;
fam_ativo = rloop1.fam_ativo;
fam_valor_aluguel = rloop1.fam_valor_aluguel;
fam_tipo_residencia = rloop1.fam_tipo_residencia;
select count(*)
from public.t_pessoa, public.t_familia_componente
where fac_pes_pk = pes_pk
and fac_fam_pk = rloop1.fam_pk
and ( extract(year from age(CURRENT_DATE, rloop1.pes_data_nasc_fundacao )) <= 12 ) into
vfam_qtde_criancas_0a12;
return next;
end loop;
return;
END
$BODY$;
– **********************************************
Dessa maneira consegui resolver todas as situações: pesquisa pelo conteúdo texto na tabela estrangeira, ligação entre grid e form dentro de app aba, etc. Resolvido.