Bom dia a todos,
Primeiramente quero quero agradecer pois estou usando o fórum a 2 anos e essa é minha segunda pergunta aqui no grupo. Tudo o que tenho pensado em desenvolver encontro aqui na maior parte em dicas que me aperfeiçoaram. Muito obrigado, e sinto por ainda não poder ajudar outros, como sou ajudado. Todos vcs estão de parabéns !!!
Bem, eu tenho uma consulta e preciso mudar dinamicamente o filtro dela, pois pra não abrir os 600.000 registros é prioritário iniciar filtrando pelo menos a digitação do mes corrente:
preparei uma global no onApplicationInit:
$mes = date('m')-1;
$ano = date('Y');
$dia = 1;
$data = $ano.'/'.$mes.'/'.$dia;
[glo_dt_culto] = date('Y-m-d',strtotime($data));
depois eu apliquei no SQL:
WHERE
id_tipo_membro_triagem IN (2,7) AND culto_data >= '[glo_dt_culto]'
ORDER BY
mb_nome
Até aqui tudo perfeito e funcionando.
Por uma questão de preferência, eu optei em não iniciar a consulta pelo filtro, pra não deixar de visualizar o botão “FILTRAR” dentro da consulta, pois como conheço o nível do usuário que vai consumir isso, preciso deixar tudo bem visível.
Abrindo então o filtro eu encontro minha tela com essas opções:
os campos selecionados {ft_igreja}=‘COM’ e {ft_rede}=‘SEM’ não são campos da minha tabela, foram criados para eu disparar o filtro.
no método onValidate do filtro coloquei:
$var_filtro_mb_triagem = '';
// Discipulador
if ( !empty({ft_discipulador}) ) {
if ( {ft_discipulador} == 'COM' ){
$var_filtro_mb_triagem .= " AND !empty(id_discipulador)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_discipulador)";
}
}
// Igreja
if ( !empty({ft_igreja}) ) {
if ( {ft_igreja} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_igreja)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_igreja)";
}
}
// rede
if ( !empty({ft_rede}) ) {
if ( {ft_rede} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_rede)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_rede)";
}
}
// distrito
if ( !empty({ft_distrito}) ) {
if ( {ft_distrito} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_distrito)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_distrito)";
}
}
// area
if ( !empty({ft_area}) ) {
if ( {ft_area} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_area)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_area)";
}
}
// setor
if ( !empty({ft_setor}) ) {
if ( {ft_setor} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_setor)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_setor)";
}
}
// celula
if ( !empty({ft_celula}) ) {
if ( {ft_celula} == 'COM' ) {
$var_filtro_mb_triagem .= " AND !empty(id_celula)";
} else {
$var_filtro_mb_triagem .= " AND empty(id_celula)";
}
}
// Carrega o Filtro
if ( !empty($var_filtro_mb_triagem) ) {
sc_select_where(add) = $var_filtro_mb_triagem ;
}
Ja tentei de várias maneiras, colocando variaveis globais mais não consigo fazer isso funcionar.
uma situação que me ocorreu foi checar {sc_where_atual} !!! bem deveria estar carregada pq eu fiz isso no SQL.
Bem esgotaram as idéias… preciso de ajuda!