Pesquisa avançada não funciona com campos criados.

Srs. bom dia. Possuo campos criados em uma grid e a pesquisa avançada não funciona. Não filtra a consulta pelo que selecionei na pesquisa. Nos campos normais da tabela, constante no SQL, funciona normalmente. Estou esquecendo algum detalhe?!

Como está fazendo? Provavelmente não está passando os valores dos campos selecionados no filtro. Precisa também usar a macro sc_select_where(add) no eventot onScriptInit da consulta.

Fala xará do meu filho! Então a coisa não é tão simples… Não entendi Thyago. O filtro é o da própria aplicação grid. Apenas criei os campos e pensava que já estariam prontos para serem usados no filtro. Explicando melhor é uma aplicação de pacientes médicos com dois campos criados(convênio e valor do convênio) que estão na tabela convênio. O vinculo e entre a tabela paciente e convênio. Na grid, pelo id do paciente pucha os valores nos campos criados.

Certo Joni. Esses campos vc tem que passar os valores pra uma variável global e no evento onScriptInit, usar a macro sc_select_where(add).

Por ex:

if (empty({sc_where_atual}) && !empty([variavel_global])){
     sc_select_where(add) = "where campoX = [variavel_global]";
}
else if (!empty({sc_where_atual}) && !empty([variavel_global])){{
     sc_select_where(add) = "AND campoX > [variavel_global]";
}

Nesse caso, empty({sc_where_atual}) verifica se foi passado alguma informação de campo que já faz parte da aplicação, sem ser esses campos criados.

Espero que esteja simples minha explicação.

Vlw. Vou dar uma verificada e retorno. Obrigado!

Thyago, desculpe não te entender, mas acho que não é isso. Digo em relação aquelas condições de filtro (exatamente igual, inicio igual, diferente, contém, etc). Selecionando, por exemplo, contém o convênio AMIL, não filtra pelo respectivo convênio!

Mostra aí como você está fazendo. Manda print da tela também.

Após selecionar pesquisa avançada…

E escolher contém PROASA…

Deveria filtrar somente os registros com esse convênio, não ?!

Os campos CONVÊNIO E REPASSE são campos criados e se comportam da mesma forma. Não filtram!!

Não, nessa opção ele traz os registros que tenham convenio que contenha a palavra PROASA. De qualquer forma, se o campo é criado na aplicação, vc precisa seguir o exemplo que citei acima.

Obrigado Thyago. Irei pesquisar.

Thyago, como seria “passar os valores dos campos selecionados no filtro para uma variável global”? É no evento onRecord? O webhelp não ajudou muito. Acredito que isso seja coisa simples, mas ainda não “peguei” o “x” da questão!

No filtro, tem o evento onValidate.
Por ex:
[v_convenio] = {convenio};

Pelo que eu entendi você não fez o SELECT no campo que você criou. Não basta criar o campo, é necessário fazer um SELECT para o Banco de Dados.

O SELECT já foi no banco e buscou os dados referentes ao id! Consultas em campos criados do tipo texto auto-complite não funcionam em nenhum filtro (pesquisa avançada, filtro dinâmico, quick search, e filtro refinado). De qualquer modo resolvi mexer no diagrama de classes para contornar o problema. Não consegui do jeito que o Thyago recomendou. Mais à frente testo isso com calma.