Lançado Adianti Framework 7.6!
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.     /**
  21.      * Class constructor
  22.      * Creates the page and the registration form
  23.      */
  24.     function __construct()
  25.     {
  26.         parent::__construct();
  27.         
  28.         parent::setDatabase('samples'); // defines the database
  29.         parent::setActiveRecord('Contas'); // defines the active record
  30.                                            
  31.         // creates the form
  32.         $this->form = new TQuickForm('form_Contass');
  33.         $this->form->class 'tform'// CSS class
  34.         $this->form->style 'width: 1000px';
  35.         
  36.         // define the form title
  37.         $this->form->setFormTitle('Cadastro de contas a pagar');
  38.         
  39.         // create the form fields
  40.         $idcontas    = new THidden('idcontas');
  41.         $fornecedor  = new TDBCombo('fornecedor''samples''Fornecedor''nome''nome');
  42.         $vencimento  = new TDate('vencimento');
  43.         $valor       = new TEntry('valor');
  44.         $filial      = new TDBCombo('filial''samples''Filial''descricao''descricao');
  45.         $forma_pgto  = new TDBCombo('forma_pgto''samples''FormaPgto''descricao''descricao');
  46.         $plano_conta = new TDBCombo('plano_conta''samples''Plano''descricao''descricao');
  47.         $historico   = new TText('historico');
  48.         
  49.         $idcontas->setEditable(FALSE);
  50.         $valor->setNumericMask(2',''.'true);
  51.         $vencimento->setMask('dd/mm/yyyy');
  52.         $valor->setNumericMask(2',''.'true);
  53.         
  54.         // add the form fields
  55.         $this->form->addQuickField('Id:'$idcontas50);
  56.         $this->form->addQuickField('Fornecedor:'$fornecedor400);
  57.         $this->form->addQuickField('Vencimento:'$vencimento120);
  58.         $this->form->addQuickField('Plano de contas:'$plano_conta300);
  59.         $this->form->addQuickField('Forma de PGTO:'$forma_pgto150);
  60.         $this->form->addQuickField('Valor:'$valor120);
  61.         $this->form->addQuickField('Filial:'$filial150);
  62.         
  63.         $row $this->form->addRow();
  64.         $row->class 'tformsection';
  65.         $cell $row->addCell(new TLabel(' '));
  66.         $cell->colspan 2;
  67.         $cell->style 'height:30px; border-top: 1px solid gray;';
  68.         
  69.         $this->form->addQuickField('Historico'$historico120);
  70.         $historico->setSize(380100);
  71.         
  72.         // define the form action
  73.         $this->form->addQuickAction('Salvar', new TAction(array(
  74.             $this,
  75.             'onSave'
  76.         )), 'fa:save green');
  77.         $this->form->addQuickAction('Limpar', new TAction(array(
  78.             $this,
  79.             'onClear'
  80.         )), 'fa:eraser red');
  81.         $this->form->addQuickAction('Listagem', new TAction(array(
  82.             'ContasDataGridView',
  83.             'onReload'
  84.         )), 'fa:table blue');
  85.         
  86.         $link = new TElement('a');
  87.         $link->target 'newwindow';
  88.         $link->generator 'adianti';
  89.         $link->class 'btn btn-default';
  90.         $link->href 'index.php?class=FornecedoresDataGridView';
  91.         $link->add('Cadastrar Fornecedores');
  92.         
  93.         $link1 = new TElement('a');
  94.         $link1->target 'newwindow';
  95.         $link1->generator 'adianti';
  96.         $link1->class 'btn btn-default';
  97.         $link1->href 'index.php?class=RelatorioGeral2';
  98.         $link1->add('Gerar Relatorio');
  99.         
  100.         $link2 = new TElement('a');
  101.         $link2->target 'newwindow';
  102.         $link2->generator 'adianti';
  103.         $link2->class 'btn btn-default';
  104.         $link2->href 'index.php?class=RelatorioGeral2';
  105.         $link2->add('Cadastrar plano de contas');
  106.         
  107.         $vbox = new TVBox();
  108.         $vbox->add($this->form);
  109.         
  110.         parent::add($vbox);
  111.     }
  112.     public function onSave()
  113.     {
  114.         try {
  115.             
  116.             $data $this->form->getData();
  117.             $this->form->setData($data);
  118.             
  119.             TTransaction::open('samples');
  120.             
  121.             $conta = new Contas();
  122.             $conta->fornecedor $data->fornecedor;
  123.             $conta->historico $data->historico;
  124.             $conta->valor $data->valor;
  125.             $conta->filial $data->filial;
  126.             $conta->forma_pgto $data->forma_pgto;
  127.             $conta->plano_conta $data->plano_conta;
  128.             $conta->dt_lancamento '';
  129.             // converte a data de dd/mm/YYYY para YYYY/mm/dd
  130.             $data->vencimento DateTime::createFromFormat('d/m/Y'$data->vencimento)->format('Y-m-d');
  131.             $conta->vencimento $data->vencimento;
  132.             $conta->store();
  133.             
  134.             new TMessage('info''Dados Gravados');
  135.             TTransaction::close();
  136.             //TApplication::gotoPage('ContasFormView');
  137.             
  138.         } catch (Exception $e) {
  139.             new TMessage('error'$e->getMessage());
  140.         }
  141.     }
  142.     
  143.     public function onEdit($param){
  144.         
  145.         try {
  146.             if (isset($param['key'])) {
  147.                 $key $param['key'];  // obtém o parâmetro $key
  148.                 TTransaction::open('samples'); // abre a transação
  149.                 $data = new Contas($key); // instancia o Active Record
  150.                 // AQUI CONVERSÃO PARA CARREGAR OS DADOS
  151.                 $data->vencimento DateTime::createFromFormat('Y-m-d'$data->vencimento )->format'd/m/Y' );
  152.                 $this->form->setData($data); // preenche o form
  153.                 TTransaction::close(); // fecha a transação
  154.             }
  155.             else {
  156.                 $this->form->clear();
  157.             }
  158.            
  159.             } catch (Exception $e) {
  160.                 new TMessage('error'$e->getMessage());
  161.             }
  162.     }
  163. }

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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?.