Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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.     /**
  13.      * Class constructor
  14.      * Creates the page, the form and the listing
  15.      */
  16.     public function __construct()
  17.     {
  18.         parent::__construct();
  19.         
  20.         parent::setDatabase('info_clin');            // defines the database
  21.         parent::setActiveRecord('Agenda');   // defines the active record
  22.         parent::setDefaultOrder('data_con desc, cod_espec , hora''asc');         // defines the default order
  23.         parent::addFilterField('data_con''>='); // add a filter field
  24.         //parent::addFilterField('data_con', '<='); // add a filter field
  25.         parent::addFilterField('hora''>='); // add a filter field
  26.         parent::addFilterField('hora''<='); // add a filter field
  27.         parent::addFilterField('especialidade_descricao''like'); // add a filter field
  28.         parent::addFilterField('paciente_nome''like'); // add a filter field
  29.         parent::addFilterField('observacao''like'); // add a filter field
  30.         
  31.         // creates the form, with a table inside
  32.         $this->form = new TQuickForm('form_search_Agenda');
  33.         $this->form->class 'tform'// CSS class
  34.         $this->form->setFormTitle('Agenda');
  35.         
  36.         // create the form fields
  37.         $data_con                       = new TDate('data_con');
  38.         $data_con_fim                   = new TDate('data_con_fim');
  39.         $hora                           = new TCombo('hora');
  40.         $hora_fim                       = new TCombo('hora_fim');
  41.         $especialidade_descricao        = new TEntry('especialidade_descricao');
  42.         $paciente_nome                  = new TEntry('paciente_nome');
  43.         $observacao                     = new TEntry('observacao');
  44.         // add the fields
  45.         $this->form->addQuickField('Data Inicial'$data_con,  100);
  46.         $this->form->addQuickField('Data Final'$data_con_fim,  100);
  47.         $this->form->addQuickField('Hora Inicial'$hora,  100);
  48.         $this->form->addQuickField('Hora Final'$hora_fim,  100);
  49.         $this->form->addQuickField('Especialidade'$especialidade_descricao,  250);
  50.         $this->form->addQuickField('Paciente'$paciente_nome,  250);
  51.         $this->form->addQuickField('Observação'$observacao,  250);
  52.         
  53.         // keep the form filled during navigation with session data
  54.         $this->form->setDataTSession::getValue('Agenda_filter_data') );
  55.         
  56.         // add the search form actions
  57.         $this->form->addQuickAction(_t('Find'), new TAction(array($this'onSearch')), 'ico_find.png');
  58.         //$this->form->addQuickAction(_t('New'),  new TAction(array('AgendaForm', 'onEdit')), 'ico_new.png');
  59.         
  60.         // creates a DataGrid
  61.         $this->datagrid = new TQuickGrid;
  62.         $this->datagrid->setHeight(320);
  63.         
  64.         // creates the datagrid columns
  65.         $data_con $this->datagrid->addQuickColumn('Data''data_con''left'100, new TAction(array($this'onReload')), array('order''data_con'));
  66.         $hora $this->datagrid->addQuickColumn('Hora''hora''left'100, new TAction(array($this'onReload')), array('order''hora'));
  67.         $especialidade_descricao $this->datagrid->addQuickColumn('Especialidade''especialidade_descricao''left'250, new TAction(array($this'onReload')), array('order''especialidade_descricao'));
  68.         $paciente_nome $this->datagrid->addQuickColumn('Paciente''paciente_nome''left'250, new TAction(array($this'onReload')), array('order''paciente_nome'));
  69.         $observacao $this->datagrid->addQuickColumn('Observação''observacao''left'250);
  70.         
  71.         // create the datagrid actions
  72.         //$edit_action   = new TDataGridAction(array('AgendaForm', 'onEdit'));
  73.         //$delete_action = new TDataGridAction(array($this, 'onDelete'));
  74.         
  75.         // add the actions to the datagrid
  76.         // $this->datagrid->addQuickAction(_t('Edit'), $edit_action, 'id', 'ico_edit.png');
  77.         // $this->datagrid->addQuickAction(_t('Delete'), $delete_action, 'id', 'ico_delete.png');
  78.         
  79.         // create the datagrid model
  80.         $this->datagrid->createModel();
  81.         
  82.         // create the page navigation
  83.         $this->pageNavigation = new TPageNavigation;
  84.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  85.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  86.         
  87.         // create the page container
  88.         $container TVBox::pack$this->form$this->datagrid$this->pageNavigation);
  89.         parent::add($container);
  90.     }
  91. }
  92. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 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.               
  8.         if ($data_fim_fun $data_ini_fun)
  9.         {   
  10.             new TMessage('error','A Data Final: <B>'.$data_fim_fun.'<B> deve ser Maior ou Igual a Data Incial: <B>'.$data_ini_fun.'</B>');          
  11.         }
  12.     }  
  13. ?>
</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);'); ?>