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.
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.
- <?php e
- /**
- * AgendaList Listing
- * @author Leandro J N Barbosa
- */
- class AgendaList extends TStandardList
- {
- protected $form; // registration form
- protected $datagrid; // listing
- protected $pageNavigation;
- /**
- * Class constructor
- * Creates the page, the form and the listing
- */
- public function __construct()
- {
- parent::__construct();
- parent::setDatabase('info_clin'); // defines the database
- parent::setActiveRecord('Agenda'); // defines the active record
- parent::setDefaultOrder('data_con desc, cod_espec , hora', 'asc'); // defines the default order
- parent::addFilterField('data_con', '>='); // add a filter field
- //parent::addFilterField('data_con', '<='); // add a filter field
- parent::addFilterField('hora', '>='); // add a filter field
- parent::addFilterField('hora', '<='); // add a filter field
- parent::addFilterField('especialidade_descricao', 'like'); // add a filter field
- parent::addFilterField('paciente_nome', 'like'); // add a filter field
- parent::addFilterField('observacao', 'like'); // add a filter field
- // creates the form, with a table inside
- $this->form = new TQuickForm('form_search_Agenda');
- $this->form->class = 'tform'; // CSS class
- $this->form->setFormTitle('Agenda');
- // create the form fields
- $data_con = new TDate('data_con');
- $data_con_fim = new TDate('data_con_fim');
- $hora = new TCombo('hora');
- $hora_fim = new TCombo('hora_fim');
- $especialidade_descricao = new TEntry('especialidade_descricao');
- $paciente_nome = new TEntry('paciente_nome');
- $observacao = new TEntry('observacao');
- // add the fields
- $this->form->addQuickField('Data Inicial', $data_con, 100);
- $this->form->addQuickField('Data Final', $data_con_fim, 100);
- $this->form->addQuickField('Hora Inicial', $hora, 100);
- $this->form->addQuickField('Hora Final', $hora_fim, 100);
- $this->form->addQuickField('Especialidade', $especialidade_descricao, 250);
- $this->form->addQuickField('Paciente', $paciente_nome, 250);
- $this->form->addQuickField('Observação', $observacao, 250);
- // keep the form filled during navigation with session data
- $this->form->setData( TSession::getValue('Agenda_filter_data') );
- // add the search form actions
- $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'ico_find.png');
- //$this->form->addQuickAction(_t('New'), new TAction(array('AgendaForm', 'onEdit')), 'ico_new.png');
- // creates a DataGrid
- $this->datagrid = new TQuickGrid;
- $this->datagrid->setHeight(320);
- // creates the datagrid columns
- $data_con = $this->datagrid->addQuickColumn('Data', 'data_con', 'left', 100, new TAction(array($this, 'onReload')), array('order', 'data_con'));
- $hora = $this->datagrid->addQuickColumn('Hora', 'hora', 'left', 100, new TAction(array($this, 'onReload')), array('order', 'hora'));
- $especialidade_descricao = $this->datagrid->addQuickColumn('Especialidade', 'especialidade_descricao', 'left', 250, new TAction(array($this, 'onReload')), array('order', 'especialidade_descricao'));
- $paciente_nome = $this->datagrid->addQuickColumn('Paciente', 'paciente_nome', 'left', 250, new TAction(array($this, 'onReload')), array('order', 'paciente_nome'));
- $observacao = $this->datagrid->addQuickColumn('Observação', 'observacao', 'left', 250);
- // create the datagrid actions
- //$edit_action = new TDataGridAction(array('AgendaForm', 'onEdit'));
- //$delete_action = new TDataGridAction(array($this, 'onDelete'));
- // add the actions to the datagrid
- // $this->datagrid->addQuickAction(_t('Edit'), $edit_action, 'id', 'ico_edit.png');
- // $this->datagrid->addQuickAction(_t('Delete'), $delete_action, 'id', 'ico_delete.png');
- // create the datagrid model
- $this->datagrid->createModel();
- // create the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- // create the page container
- $container = TVBox::pack( $this->form, $this->datagrid, $this->pageNavigation);
- parent::add($container);
- }
- }
- ?>
Esse link aqui me ajudo muito: www.adianti.com.br/doc-framework-Persistence-Collections-Criteria
Show Luis , deu certo obrigado!
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.
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
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:
mas mês de um período? e se for de Dez. ate Jan. ?
Leandro, uso esta linha pra focar o campo, mas a TMessage tira.