Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Duprlicando dados apos editar registros. Boa tarde pessoal, Eu estou iniciando meus trabalhos com o Adianti e estou com um problema. Em todos os meus datagrid, eu clico no botão editar, aí abre o formulário para edição dos dados, só que ao clicar em salvar ao invés de apenas salvar minha alteração, está criando um novo registro. Alguém já passou por este problema ou faz ideia o que pode ser? Obrigado. segue o códig...
RR
Duprlicando dados apos editar registros.  
Boa tarde pessoal,
Eu estou iniciando meus trabalhos com o Adianti e estou com um problema. Em todos os meus datagrid, eu clico no botão editar, aí abre o formulário para edição dos dados, só que ao clicar em salvar ao invés de apenas salvar minha alteração, está criando um novo registro.

Alguém já passou por este problema ou faz ideia o que pode ser?

Obrigado.

segue o código abaixo:



 
  1. <?php
  2. use Adianti\Widget\Form\TText;
  3. use Adianti\Widget\Form\THidden;
  4. use Adianti\Widget\Form\TEntry;
  5. /**
  6. * StandardFormView Registration
  7. *
  8. * @version 1.0
  9. * @package samples
  10. * @subpackage tutor
  11. * @author Pablo Dall'Oglio
  12. * @copyright Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  13. * @license http://www.adianti.com.br/framework-license
  14. */
  15. class ContasFormView extends TStandardForm
  16. {
  17. protected $form;
  18. // form
  19. /**
  20. * Class constructor
  21. * Creates the page and the registration form
  22. */
  23. function __construct()
  24. {
  25. parent::__construct();
  26. parent::setDatabase('samples'); // defines the database
  27. parent::setActiveRecord('Contas'); // defines the active record
  28. // creates the form
  29. $this->form = new TQuickForm('form_Contass');
  30. $this->form->class = 'tform'; // CSS class
  31. $this->form->style = 'width: 1000px';
  32. // define the form title
  33. $this->form->setFormTitle('Cadastro de contas a pagar');
  34. // create the form fields
  35. $idcontas = new THidden('idcontas');
  36. $fornecedor = new TDBCombo('fornecedor', 'samples', 'Fornecedor', 'nome', 'nome');
  37. $vencimento = new TDate('vencimento');
  38. $valor = new TEntry('valor');
  39. $filial = new TDBCombo('filial', 'samples', 'Filial', 'descricao', 'descricao');
  40. $forma_pgto = new TDBCombo('forma_pgto', 'samples', 'FormaPgto', 'descricao', 'descricao');
  41. $plano_conta = new TDBCombo('plano_conta', 'samples', 'Plano', 'descricao', 'descricao');
  42. $historico = new TText('historico');
  43. $idcontas->setEditable(FALSE);
  44. $valor->setNumericMask(2, ',', '.', true);
  45. $vencimento->setMask('dd/mm/yyyy');
  46. $valor->setNumericMask(2, ',', '.', true);
  47. // add the form fields
  48. $this->form->addQuickField('Id:', $idcontas, 50);
  49. $this->form->addQuickField('Fornecedor:', $fornecedor, 400);
  50. $this->form->addQuickField('Vencimento:', $vencimento, 120);
  51. $this->form->addQuickField('Plano de contas:', $plano_conta, 300);
  52. $this->form->addQuickField('Forma de PGTO:', $forma_pgto, 150);
  53. $this->form->addQuickField('Valor:', $valor, 120);
  54. $this->form->addQuickField('Filial:', $filial, 150);
  55. $row = $this->form->addRow();
  56. $row->class = 'tformsection';
  57. $cell = $row->addCell(new TLabel(' '));
  58. $cell->colspan = 2;
  59. $cell->style = 'height:30px; border-top: 1px solid gray;';
  60. $this->form->addQuickField('Historico', $historico, 120);
  61. $historico->setSize(380, 100);
  62. // define the form action
  63. $this->form->addQuickAction('Salvar', new TAction(array(
  64. $this,
  65. 'onSave'
  66. )), 'fa:save green');
  67. $this->form->addQuickAction('Limpar', new TAction(array(
  68. $this,
  69. 'onClear'
  70. )), 'fa:eraser red');
  71. $this->form->addQuickAction('Listagem', new TAction(array(
  72. 'ContasDataGridView',
  73. 'onReload'
  74. )), 'fa:table blue');
  75. $link = new TElement('a');
  76. $link->target = 'newwindow';
  77. $link->generator = 'adianti';
  78. $link->class = 'btn btn-default';
  79. $link->href = 'index.php?class=FornecedoresDataGridView';
  80. $link->add('Cadastrar Fornecedores');
  81. $link1 = new TElement('a');
  82. $link1->target = 'newwindow';
  83. $link1->generator = 'adianti';
  84. $link1->class = 'btn btn-default';
  85. $link1->href = 'index.php?class=RelatorioGeral2';
  86. $link1->add('Gerar Relatorio');
  87. $link2 = new TElement('a');
  88. $link2->target = 'newwindow';
  89. $link2->generator = 'adianti';
  90. $link2->class = 'btn btn-default';
  91. $link2->href = 'index.php?class=RelatorioGeral2';
  92. $link2->add('Cadastrar plano de contas');
  93. $vbox = new TVBox();
  94. $vbox->add($this->form);
  95. parent::add($vbox);
  96. }
  97. public function onSave()
  98. {
  99. try {
  100. $data = $this->form->getData();
  101. $this->form->setData($data);
  102. TTransaction::open('samples');
  103. $conta = new Contas();
  104. $conta->fornecedor = $data->fornecedor;
  105. $conta->historico = $data->historico;
  106. $conta->valor = $data->valor;
  107. $conta->filial = $data->filial;
  108. $conta->forma_pgto = $data->forma_pgto;
  109. $conta->plano_conta = $data->plano_conta;
  110. $conta->dt_lancamento = '';
  111. // converte a data de dd/mm/YYYY para YYYY/mm/dd
  112. $data->vencimento = DateTime::createFromFormat('d/m/Y', $data->vencimento)->format('Y-m-d');
  113. $conta->vencimento = $data->vencimento;
  114. $conta->store();
  115. new TMessage('info', 'Dados Gravados');
  116. TTransaction::close();
  117. //TApplication::gotoPage('ContasFormView');
  118. } catch (Exception $e) {
  119. new TMessage('error', $e->getMessage());
  120. }
  121. }
  122. public function onEdit($param){
  123. try {
  124. if (isset($param['key'])) {
  125. $key = $param['key']; // obtém o parâmetro $key
  126. TTransaction::open('samples'); // abre a transação
  127. $data = new Contas($key); // instancia o Active Record
  128. // AQUI CONVERSÃO PARA CARREGAR OS DADOS
  129. $data->vencimento = DateTime::createFromFormat('Y-m-d', $data->vencimento )->format( 'd/m/Y' );
  130. $this->form->setData($data); // preenche o form
  131. TTransaction::close(); // fecha a transação
  132. }
  133. else {
  134. $this->form->clear();
  135. }
  136. } catch (Exception $e) {
  137. new TMessage('error', $e->getMessage());
  138. }
  139. }
  140. }

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


WP

a partir da linha 124, em nenhum momento estas indicando o valor da PK (primary Key) de Contas, sendo assim o Framework pensa que é uma nova Conta

deveria ficar algo assim teu codigo para que funcione

 
  1. <?php
  2. $conta = new Contas();
  3. $conta->idcontas = $data->idcontas;//setar o valor da PK (si estiver vazio o Framework vai interpretar como NEW, caso contrario como UPDATE / ALTER)
  4. $conta->fornecedor = $data->fornecedor;
  5. $conta->historico = $data->historico;
  6. $conta->valor = $data->valor;
  7. ..................
  8. ........
  9. ....
  10. .
  11. ?>
RR

Cara muito obrigado! deu certo.
HT

boa tarde,

comigo o que ocorre é o seguinte. Faço a gravação dos dados de uma tabela cabeçalho que salva produtos em outra tabela (relacionamento). Quando vou editar o cabeçalho, os itens da tabela de produtos são deletados. Estou utilizando o formato standart do adianti.

Alguém já passou por isso?.