Dificuldade com Filtros da Consulta Dinamica, Avança e Quick Search V8

Olá pessoal.

Estou testando a versão 8 do Scriptcase com Postgresql. Tenho uma consulta construida de uma tabela que possui dois campos que são chaves estrangeiras.

Este campos são consequentemente montado como int e somente com o lookup que o valor da descrição aparece na consulta, até ai tudo bem.

Porém após o lookup os filtros da consulta: Dinâmico e Avançado não permitem a busca pela descrição porque o SC o monta como int devido a chave estrangeira e não permite a digitação de caracteres. Na consulta o QuickSearch funciona.

No formulário Grid Editável e View os filtros, neste cenário, nenhum dos filtros funcionam adequadamente.

Alguém está passando por este problema ou poderia me auxiliar?

Sds.

Paolo

Passei pelo mesmo problema. E pensei em trazer os dados nos campos da grid através de um inner join pra ver se resolve, só não tive tempo de testar. Mas realmente os filtros da consulta dinâmica não funciona em campos do tipo select.

Fred, obrigado pela resposta.

Eu fiz este teste também. Com join os filtros passam a funcionar corretamente, porém a ligação com o formulário deixa de funcionar. O ícone de edição (lápis) aparece mas não carrega o registro, o formulário abre em branco. Outro efeito colateral é que o ícone de detalhes (lupa) deixa de aparecer também.

Outro teste que eu fiz foi criar uma nova coluna e colocar com o lookup (select) nela, neste cenário todos os filtros deixam de funcionar.

Confesso que nestes cenário não testei com o formulário tipo GRID e GRID(VIEW).

Fiquei sem opção.

Estimado Paulo, obrigado pelo feedback sobre os testes com join’s. Nesse caso, acho que não temos muito o que fazer, vamos ver se alguém da NM se pronuncia pra dizer algo a respeito. Caso contrário teremos que abir um ticket para o suporte verificar.

Essa semana vou voltar a ver esse assunto em uma aplicação que tenho e se conseguir novidades pode ter certeza que aviso.

Abraço!

Fred, obrigado pela ajuda!

Vou aguardar junto com você. Mandei o questionamento para o suporte gratuito da versão de teste, caso eles respondam também colocarei aqui.

Abs.

Paolo

Vocês estão usando nomes diferentes das tabelas nos join’s ?
Tentem utilizar o mesmo nome da tabela antes dos nomes dos campos.
Ex.:
SELECT
cliente.codigo,
cliente.nome,
municipio.nome
FROM
esquema.cliente INNER JOIN esquema.municipio
ON cliente.codmun = municipio.codmun

Se estiver utilizando “apelido” nas tabelas, e usar estes nos campos do select dá erro mesmo.
Já postei sobre isto no passado, e encontra-se no bug da NM.

Pelo menos por aqui fiz assim e vêm funcionando.

Att,

Jocimar

Oi Jocimar!

E funcionou corretamente a ligação como o formulário? No meu caso o JOIN funcionou mas deu erro com a ligação com a aplicação tipo formulário como descrevi acima.

Confesso que no meu teste usei alias na formação da query.

Foi a forma onde consegui a ligação.
Utilizando o “apelido” também não consegui, mas utilizando o nome da tabela funcionou.
Coloque em DEBUG antes e depois da mudança e veja o SQL montado pelo SC

Att,

Jocimar

Jocimar,

Obrigado pela dica! Vou testar aqui, na minha aplicação e posto aqui.

Abs,

Paolo

Jocimar,

Obrigado pela dica. Realmente funcionou a ligação sem a utilização de alias na query, mas o ícone de detalhe não apareceu.

Testei criando a VIEW no banco e gerando a consulta da VIEW, desta forma funcionou tudo perfeitamente bem.

Obrigado a todos pelas dicas.

Abs.

Paolo

Jocimar obrigado pela contribuição! Ao menos é uma forma paliativa até a NM resolver isso!

Abraço a todos!

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.