Data pt-br com TQuickForm e TDate Estou tendo problemas com data no formato dd/mm/yyyy, juntamente com TQuickForm e TDate, coloquei um SetMask, mas na hora de salvar, não salva corretamente....
FK
Data pt-br com TQuickForm e TDate  
Fechado
Estou tendo problemas com data no formato dd/mm/yyyy, juntamente com TQuickForm e TDate, coloquei um SetMask, mas na hora de salvar, não salva corretamente.

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 (16)


NC

Antes do store você faz assim:
$object->campo = TDate::date2us($object->campo);
FK

Mas isso mesmo utilizando o TQuickForm?
NC

o seu problema não é no TQuickForm (ele somente mostra a informação na tela) o seu problema é no method onSave
FK

Então é ai que eu não estou compreendendo, o metodo onSave já é TQuickForm, eu não o criei. Então eu tenho que substituir ele? Criar meu próprio onSave?
NC

No seu fonte não tem um metodo onSave?
FK

Não, está como no exemplo da URL www.adianti.com.br/framework_files/tutor/index.php?class=CompleteDat
NC

Mas essse é um exemplo de formulário de DataGrid não exemplo de Formulário de edição de dados.

Você está digitando a data no Datagrid?

QuickForm faz formulário não salva dados.

O seu botão está chamando qual Ação?
FK

É verdade colei o errado, abaixo vai o meu código:
 
  1. <?php
  2. class EventoForm extends TStandardFormList
  3. {
  4. protected $form;
  5. protected $datagrid;
  6. protected $loaded;
  7. protected $pageNavigation;
  8. public function __construct()
  9. {
  10. parent::__construct();
  11. parent::setDatabase('banco');
  12. parent::setActiveRecord('Evento');
  13. parent::setDefaultOrder('evento_descricao', 'asc');
  14. $this->setLimit(-1);
  15. $this->form = new TQuickForm('form_evento');
  16. $this->form->class = 'tform'; // CSS class
  17. $this->form->setFormTitle('Evento');
  18. $pk_evento = new TEntry('pk_evento');
  19. $evento_descricao = new TEntry('evento_descricao');
  20. $evento_processo = new TEntry('evento_processo');
  21. $evento_registro = new TEntry('evento_registro');
  22. $evento_folha = new TEntry('evento_folha');
  23. $evento_data_registro = new TDate('evento_data_registro');
  24. $evento_livro = new TEntry('evento_livro');
  25. $evento_campus_fk = new TDBCombo('evento_campus_fk','banco','Campus','pk_campus','campus_descricao');
  26. $evento_descricao->addValidation(_t('Descrição'), new TRequiredValidator);
  27. $evento_processo->addValidation(_t('Processo'), new TRequiredValidator);
  28. $evento_registro->addValidation(_t('Registro'), new TRequiredValidator);
  29. $evento_folha->addValidation(_t('Folha'), new TRequiredValidator);
  30. $evento_data_registro->addValidation(_t('Data de Registro'), new TRequiredValidator);
  31. $evento_data_registro->setMask('dd/mm/yyyy');
  32. $evento_livro->addValidation(_t('Livro'), new TRequiredValidator);
  33. $evento_campus_fk->addValidation(_t('Campus'), new TRequiredValidator);
  34. $this->form->addQuickField('ID:', $pk_evento, 40);
  35. $this->form->addQuickField('Descrição:', $evento_descricao, 200);
  36. $this->form->addQuickField('Processo:', $evento_processo, 200);
  37. $this->form->addQuickField('Registro:', $evento_registro, 200);
  38. $this->form->addQuickField('Folha:', $evento_folha, 200);
  39. $this->form->addQuickField('Livro:', $evento_livro, 200);
  40. $this->form->addQuickField('Data de Registro:', $evento_data_registro, 200);
  41. $this->form->addQuickField('Campus:', $evento_campus_fk, 200);
  42. $this->form->addQuickAction('Salvar', new TAction(array($this, 'onSave')), 'ico_save.png');
  43. $this->form->addQuickAction('Novo', new TAction(array($this, 'onClear')), 'ico_new.png');
  44. $pk_evento->setEditable(FALSE);
  45. $this->datagrid = new TQuickGrid;
  46. $this->datagrid->style = 'width: 100%';
  47. $this->datagrid->setHeight(320);
  48. $this->datagrid->addQuickColumn('ID', 'pk_evento', 'center', 50, new TAction(array($this, 'onReload')), array('order', 'pk_evento'));
  49. $this->datagrid->addQuickColumn('Descrição', 'evento_descricao','left', 400, new TAction(array($this, 'onReload')), array('order', 'evento_descricao'));
  50. $this->datagrid->addQuickAction('Edit', new TDataGridAction(array($this, 'onEdit')), 'pk_evento', 'ico_edit.png');
  51. $this->datagrid->addQuickAction('Delete', new TDataGridAction(array($this, 'onDelete')), 'pk_evento', 'ico_delete.png');
  52. $this->datagrid->createModel();
  53. $vbox = new TVBox;
  54. $vbox->add($this->form);
  55. $vbox->add($this->datagrid);
  56. parent::add($vbox);
  57. }
  58. }
  59. </code>
NC

Então, na verdade você esta usando um TStandardFormList, como tal ele um um evento onSave padrão da classe, e como padrão da classe ele trabalha com data americana, como você está usando data no formato brasileiro, você terá que criar um metodo onSave quer irá substituir o padrão do TStandardFormList, trocando a data conforme eu havia te falado.
FK

Hum, o negócio é classe que eu estava extendendo, não é um método do TQuickForm, blz, obrigado. Vou tentar desse jeito.
FA

Se possível pode colocar o resultado da solução?

Apenas uma sugestão. Seria interessante os tópicos resolvidos terem no final [RESOLVIDO] pra melhor organização. Isso facilita a outros usuários que buscam a solução do mesmo problema.
SF

Essa é minha duvida : Não seria mais interessante mudar no código original da classe? Ficar refazendo OnSave em cada tela não seria um retrocesso ?
Não seria possível ajustar isso no MODEL da tabela, e ficar tudo automático ?
PD

Sergio,

Nem sempre é interessante deixar uma conversão genérica.
A conversão automática na model pode ser perigosa.
Em um formulário de cadastro, você quer o vai e vem automático.
Mas em outros pontos da regra de negócio, em outras rotinas
você vai querer a data em formato original para efetuar cálculos.

Att,
SF

Pablo, entendi. Mas como seria para modificar direto no MODEL? Seria possível vc Pode postar aqui?

PD

Hook Methods:
www.adianti.com.br/framework_files/tutor/index.php?class=HookMethodV

Mas se implementados da maneira errada, poderão trazer dor de cabeça generalizada.
PD

www.adianti.com.br/forum/pt/view_2287?conversao-de-datas-e-valores-m