FM
Filtro com mais de um critério
Fechado
Boa tarde galera. Essa é realmente a comunidade mais eficiente que já vi até hoje. Além de ter respostas rápidas, ainda as pessoas são muito educadas, ou seja, resolvem o problema, e não nos mandam pesquisar, afinal, se estamos perguntando é porque não conseguimos achar ajuda em outros meios. Mas vamos la com a dúvida:
Tenho um datagrid ( o mesmo das últimas duas potagens minhas ).
preciso filtrar as informações nele presentes, mas por três critérios.
Seria assim : preciso ter 1 TDBCombo com as opções de Status e mais dois TDate onde informarei a data inicial e a data final. O filtro deve me retornar todos os registros que satisfaçam essas condições, o status selecionado e que a data inicial esteja BETWEEN a data inicial e data final informados. Um detalhe é que pode ser que o usuário filtre por apenas um dos critérios ou por todos, ou seja, talvez queira ver qualquer um com status concluído sem importar a data, como pode querer em determinado intervalo de datas. E após isso tudo preciso de um botão que volte a exibir todos os registros na datagrid ( limpe o filtro ).... agradeço a ajuda de todos.
Tenho um datagrid ( o mesmo das últimas duas potagens minhas ).
preciso filtrar as informações nele presentes, mas por três critérios.
Seria assim : preciso ter 1 TDBCombo com as opções de Status e mais dois TDate onde informarei a data inicial e a data final. O filtro deve me retornar todos os registros que satisfaçam essas condições, o status selecionado e que a data inicial esteja BETWEEN a data inicial e data final informados. Um detalhe é que pode ser que o usuário filtre por apenas um dos critérios ou por todos, ou seja, talvez queira ver qualquer um com status concluído sem importar a data, como pode querer em determinado intervalo de datas. E após isso tudo preciso de um botão que volte a exibir todos os registros na datagrid ( limpe o filtro ).... agradeço a ajuda de todos.
Oi flavio de uma olhada nesse link.
www.adianti.com.br/framework_files/tutor/index.php?class=CriteriaVie
Olá Felipe, eu entendi como cria os TCriteria. O problema é que na pagina não tem um lugar nem parecido com isso. la ele mistura TFilter com TCriteria e é ai que estou me embananando... veja
function onReload($param = NULL)
{
try
{
// open a transaction with database 'tarefas'
TTransaction::open('tarefas');
// creates a repository for Tasks
$repository = new TRepository('Tasks');
$limit = 10;
// creates a criteria
$criteria = new TCriteria;
// default order
if (empty($param['order']))
{
$param['order'] = 'id';
$param['direction'] = 'asc';
}
$criteria->setProperties($param); // order, offset
$criteria->setProperty('limit', $limit);
if (TSession::getValue('Tasks_filter'))
{
// add the filter stored in the session to the criteria
$criteria->add(TSession::getValue('Tasks_filter'));
}
// load the objects according to criteria
$objects = $repository->load($criteria, FALSE);
$this->datagrid->clear();
if ($objects)
{
// iterate the collection of active records
foreach ($objects as $object)
{
// add the object inside the datagrid
$this->datagrid->addItem($object);
}
}
// reset the criteria for record count
$criteria->resetProperties();
$count= $repository->count($criteria);
$this->pageNavigation->setCount($count); // count of records
$this->pageNavigation->setProperties($param); // order, page
$this->pageNavigation->setLimit($limit); // limit
// close the transaction
TTransaction::close();
$this->loaded = true;
}
catch (Exception $e) // in case of exception
{
// shows the exception error message
new TMessage('error', 'Error ' . $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}
nao tenho nem ideia onde vai o segundo e terceiro critério, não esta muito intuitivo. Alem do que vi que esta funcao recebe informações da funcao onEdit ou estou muito enganado.... de qualquer forma, não estou conseguindo me achar... poderia me dar um exemplo pra me ajudar ? a aplicação tutor ja tentei, ja busquei no livro e tudo mais, com certeza é algo bem simples que não estou vendo... valeu
ops, onde escrevi onEDit é na realidade onSearch..
Consegui arrumar, na verdade era algumas informações que eu estava esquecendo de estar ( na TSession ) obrigado a todos.