CONSULTAR INICIAR COM FILTRO REFINADO INICIAL

Tenho a necessidade de iniciar o Grid com uma faixa de valores do Filtro Refinado já selecionado.

Tenho uma tabela de CASHFLOW com valores referente a cada mês, gostaria de iniciar o Filtro Refinado já setado com o mes atual, caso o operador queira verificar os outros meses ele clica no mes referente a qual valor ele quer consultar

Existe esta possibilidade?

http://www.scriptcase.com.br/aprendizagem/documentacao/pt_br/v9/manual/14-macros/01-visao-geral/#sc_select_where

não consegui entender aroldo a sintaxe para fazer esse procedimento

Você deseja que a consulta se inicie já filtrada, correto?

no evento onscriptinit da consulta adicione um where dinâmico:

if (empty({sc_where_atual})){
sc_select_where(add) = "where data >= ''$data_desejada'";
}

Caro Haroldo Funcionou perfeitamente. Sempre me surpreendo com sua paciência.

Engraçado é que peguei a sua ideia de um outro posto mais antigo. Nem tinha visto esse aqui.
Meu problema era semelhante. A tela inicial deveria vir com valores, considerando um campo da tabela = 0 e depois o usuario filtrava da forma como queria.

Aprendi que: “as macros dos eventos possuem escopo” - quer dizer que nem todas as macros funcionam em todos os eventos.
Assim, a macro sc_select_where(add) não funciona em onapplicationinit mas funciona em onScriptinit.
Ocorre que essa macro - no evento onScriptinit - será chamada toda vez que o programa for executado, atrapalhando o filtro dando erro (insere mais um where na condição).

Então a brilhante e simples solução do haroldo - basta usar a macro {sc_where_atual} ou em inglês {sc_where_current}.
Assim, a macro sc_select_where(add) só será usada uma vez, no inicio do programa (pois a primeira pesquisa será sempre vazia - ou empty)

Talvez por ser tão simples o nosso amigo não conseguiu entender.

if (empty({sc_where_atual})){
sc_select_where(add) = “where data >= ‘’$data_desejada’”;
}

A única coisa que ele precisa alterar o nome do campo data (que é nome do campo na sua tabela) e a variável $data_desejada, que é a data que ele quer usar - por exemplo a data de hoje - $data_desejada= date(“Y-m-d”) .

E deve ser colocada no evento onScriptinit

Espero ter ajudado (ao invés de atrapalhar mais ainda. rsrsr)

$data_desejada= date(“Y-m-d”) ;
if (empty({sc_where_atual})){
sc_select_where(add) = “where data >= ‘’$data_desejada’”;
}

Boa tarde Haroldo, ao colocar este código vai funcionar sim, no entanto, elimina as outras opções de filtro daquele determinado campo.

Exemplo:
Lista de usuários, onde temos a coluna ativo: sim / não.

Se faço um filtro refinado, o sistema me permite após execução da consulta optar por exibir todos, apenas os ativos ou apenas os inativos, e mudar a condição a qualquer momento apenas excluindo o filtro selecionado.

Mas se coloco no evento onScriptInit a condição de me listar os ativos, por exemplo. Não consigo mais optar no filtro refinado pelos inativos, pois a consulta estará apenas com os dados dos usuários ativos.

Teste a macro que identifica se existe condição vinda do filtro.