Intervalo de Datas em consulta simples Boa tarde galera! Estou precisando fazer uma consulta simples usando o adiantipro usei o assistente para ciar a consulta, porém preciso trabalhar o filtro com data inicial e final ou seja, onde o select na tabela ficaria ... where data_con >= $data_ini and data_con ...
LB
Intervalo de Datas em consulta simples  
Fechado
Boa tarde galera!

Estou precisando fazer uma consulta simples usando o adiantipro usei o assistente para ciar a consulta, porém preciso trabalhar o filtro com data inicial e final ou seja, onde o select na tabela ficaria ... where data_con >= $data_ini and data_con <= $data fim. Alguém poderia me dar uma dica de como fazer isso na consulta. Anexo a tela da consulta e abaixo o fonte da minha classe de controle da consulta.

Obrigado.

 
  1. <?php e
  2. /**
  3. * AgendaList Listing
  4. * @author Leandro J N Barbosa
  5. */
  6. class AgendaList extends TStandardList
  7. {
  8. protected $form; // registration form
  9. protected $datagrid; // listing
  10. protected $pageNavigation;
  11. /**
  12. * Class constructor
  13. * Creates the page, the form and the listing
  14. */
  15. public function __construct()
  16. {
  17. parent::__construct();
  18. parent::setDatabase('info_clin'); // defines the database
  19. parent::setActiveRecord('Agenda'); // defines the active record
  20. parent::setDefaultOrder('data_con desc, cod_espec , hora', 'asc'); // defines the default order
  21. parent::addFilterField('data_con', '>='); // add a filter field
  22. //parent::addFilterField('data_con', '<='); // add a filter field
  23. parent::addFilterField('hora', '>='); // add a filter field
  24. parent::addFilterField('hora', '<='); // add a filter field
  25. parent::addFilterField('especialidade_descricao', 'like'); // add a filter field
  26. parent::addFilterField('paciente_nome', 'like'); // add a filter field
  27. parent::addFilterField('observacao', 'like'); // add a filter field
  28. // creates the form, with a table inside
  29. $this->form = new TQuickForm('form_search_Agenda');
  30. $this->form->class = 'tform'; // CSS class
  31. $this->form->setFormTitle('Agenda');
  32. // create the form fields
  33. $data_con = new TDate('data_con');
  34. $data_con_fim = new TDate('data_con_fim');
  35. $hora = new TCombo('hora');
  36. $hora_fim = new TCombo('hora_fim');
  37. $especialidade_descricao = new TEntry('especialidade_descricao');
  38. $paciente_nome = new TEntry('paciente_nome');
  39. $observacao = new TEntry('observacao');
  40. // add the fields
  41. $this->form->addQuickField('Data Inicial', $data_con, 100);
  42. $this->form->addQuickField('Data Final', $data_con_fim, 100);
  43. $this->form->addQuickField('Hora Inicial', $hora, 100);
  44. $this->form->addQuickField('Hora Final', $hora_fim, 100);
  45. $this->form->addQuickField('Especialidade', $especialidade_descricao, 250);
  46. $this->form->addQuickField('Paciente', $paciente_nome, 250);
  47. $this->form->addQuickField('Observação', $observacao, 250);
  48. // keep the form filled during navigation with session data
  49. $this->form->setData( TSession::getValue('Agenda_filter_data') );
  50. // add the search form actions
  51. $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'ico_find.png');
  52. //$this->form->addQuickAction(_t('New'), new TAction(array('AgendaForm', 'onEdit')), 'ico_new.png');
  53. // creates a DataGrid
  54. $this->datagrid = new TQuickGrid;
  55. $this->datagrid->setHeight(320);
  56. // creates the datagrid columns
  57. $data_con = $this->datagrid->addQuickColumn('Data', 'data_con', 'left', 100, new TAction(array($this, 'onReload')), array('order', 'data_con'));
  58. $hora = $this->datagrid->addQuickColumn('Hora', 'hora', 'left', 100, new TAction(array($this, 'onReload')), array('order', 'hora'));
  59. $especialidade_descricao = $this->datagrid->addQuickColumn('Especialidade', 'especialidade_descricao', 'left', 250, new TAction(array($this, 'onReload')), array('order', 'especialidade_descricao'));
  60. $paciente_nome = $this->datagrid->addQuickColumn('Paciente', 'paciente_nome', 'left', 250, new TAction(array($this, 'onReload')), array('order', 'paciente_nome'));
  61. $observacao = $this->datagrid->addQuickColumn('Observação', 'observacao', 'left', 250);
  62. // create the datagrid actions
  63. //$edit_action = new TDataGridAction(array('AgendaForm', 'onEdit'));
  64. //$delete_action = new TDataGridAction(array($this, 'onDelete'));
  65. // add the actions to the datagrid
  66. // $this->datagrid->addQuickAction(_t('Edit'), $edit_action, 'id', 'ico_edit.png');
  67. // $this->datagrid->addQuickAction(_t('Delete'), $delete_action, 'id', 'ico_delete.png');
  68. // create the datagrid model
  69. $this->datagrid->createModel();
  70. // create the page navigation
  71. $this->pageNavigation = new TPageNavigation;
  72. $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
  73. $this->pageNavigation->setWidth($this->datagrid->getWidth());
  74. // create the page container
  75. $container = TVBox::pack( $this->form, $this->datagrid, $this->pageNavigation);
  76. parent::add($container);
  77. }
  78. }
  79. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (7)


LA

 
  1. <?php
  2. parent::addFilterField('data_reg', '>=', 'data_ini');
  3. parent::addFilterField('data_reg', '<=', 'data_fim');
  4. $data_ini = new TDate('data_ini');
  5. $data_fim = new TDate('data_fim');
  6. ?>
WS

Esse link aqui me ajudo muito: www.adianti.com.br/doc-framework-Persistence-Collections-Criteria
LB

Show Luis , deu certo obrigado!

LB

Alguém sabe como setar o foco no campo onde eu estou validando caso o mesmo não atenda meus critérios de análise?
Tipo o campo que deu erro quero colocar o foco nele, assim o usuário só sairá dele se preencher de forma correta já criei a função de exit do campo só preciso saber como volto o foco pro foco abaixo código da validação.
 
  1. <?php e
  2. public static function onDataFim($param)
  3. {
  4. $obj = new StdClass;
  5. $data_ini_fun = $param['data_ini'];
  6. $data_fim_fun = $param['data_fim'];
  7. if ($data_fim_fun < $data_ini_fun)
  8. {
  9. new TMessage('error','A Data Final: <B>'.$data_fim_fun.'<B> deve ser Maior ou Igual a Data Incial: <B>'.$data_ini_fun.'</B>');
  10. }
  11. }
  12. ?>
</B></B>
AJ

Como faço para consultar um tabela no banco com base no MES OU NO DIA, pois o CAMPO DA TABELA ;é do tipo DATE.
Na tabela existe o campor dataIda e dataChegada eu preciso buscar todos os registro do mes de julho por exemplo.
E preciso buscar o numero de dias entre a dataIda e dataChegada. Qual a melhor forma, tenho o livro mas to meio perdido.

DESDE JA GRATO
LA

Ola Apolonio. qual o banco de dados? No seu banco deve ter funções que ajudam a montar o sql.

No Postgre pode ser feito assim:
SELECT age((tabela.dataIda),(tabela.dataChegada)) dias, extract(MONTH FROM (tabela.data)) mes FROM tabela WHERE ... ;


mas mês de um período? e se for de Dez. ate Jan. ?
LA

Leandro, uso esta linha pra focar o campo, mas a TMessage tira.

 
  1. <?php TScript::create('setTimeout(function() { $("input[name=\'nomecampo\']").focus() }, 500);'); ?>