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’”;
}