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:
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:
- <?php
- use Adianti\Widget\Form\TText;
- use Adianti\Widget\Form\THidden;
- use Adianti\Widget\Form\TEntry;
- /**
- * StandardFormView Registration
- *
- * @version 1.0
- * @package samples
- * @subpackage tutor
- * @author Pablo Dall'Oglio
- * @copyright Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
- * @license http://www.adianti.com.br/framework-license
- */
- class ContasFormView extends TStandardForm
- {
- protected $form;
- // form
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
- parent::setDatabase('samples'); // defines the database
- parent::setActiveRecord('Contas'); // defines the active record
- // creates the form
- $this->form = new TQuickForm('form_Contass');
- $this->form->class = 'tform'; // CSS class
- $this->form->style = 'width: 1000px';
- // define the form title
- $this->form->setFormTitle('Cadastro de contas a pagar');
- // create the form fields
- $idcontas = new THidden('idcontas');
- $fornecedor = new TDBCombo('fornecedor', 'samples', 'Fornecedor', 'nome', 'nome');
- $vencimento = new TDate('vencimento');
- $valor = new TEntry('valor');
- $filial = new TDBCombo('filial', 'samples', 'Filial', 'descricao', 'descricao');
- $forma_pgto = new TDBCombo('forma_pgto', 'samples', 'FormaPgto', 'descricao', 'descricao');
- $plano_conta = new TDBCombo('plano_conta', 'samples', 'Plano', 'descricao', 'descricao');
- $historico = new TText('historico');
- $idcontas->setEditable(FALSE);
- $valor->setNumericMask(2, ',', '.', true);
- $vencimento->setMask('dd/mm/yyyy');
- $valor->setNumericMask(2, ',', '.', true);
- // add the form fields
- $this->form->addQuickField('Id:', $idcontas, 50);
- $this->form->addQuickField('Fornecedor:', $fornecedor, 400);
- $this->form->addQuickField('Vencimento:', $vencimento, 120);
- $this->form->addQuickField('Plano de contas:', $plano_conta, 300);
- $this->form->addQuickField('Forma de PGTO:', $forma_pgto, 150);
- $this->form->addQuickField('Valor:', $valor, 120);
- $this->form->addQuickField('Filial:', $filial, 150);
- $row = $this->form->addRow();
- $row->class = 'tformsection';
- $cell = $row->addCell(new TLabel(' '));
- $cell->colspan = 2;
- $cell->style = 'height:30px; border-top: 1px solid gray;';
- $this->form->addQuickField('Historico', $historico, 120);
- $historico->setSize(380, 100);
- // define the form action
- $this->form->addQuickAction('Salvar', new TAction(array(
- $this,
- 'onSave'
- )), 'fa:save green');
- $this->form->addQuickAction('Limpar', new TAction(array(
- $this,
- 'onClear'
- )), 'fa:eraser red');
- $this->form->addQuickAction('Listagem', new TAction(array(
- 'ContasDataGridView',
- 'onReload'
- )), 'fa:table blue');
- $link = new TElement('a');
- $link->target = 'newwindow';
- $link->generator = 'adianti';
- $link->class = 'btn btn-default';
- $link->href = 'index.php?class=FornecedoresDataGridView';
- $link->add('Cadastrar Fornecedores');
- $link1 = new TElement('a');
- $link1->target = 'newwindow';
- $link1->generator = 'adianti';
- $link1->class = 'btn btn-default';
- $link1->href = 'index.php?class=RelatorioGeral2';
- $link1->add('Gerar Relatorio');
- $link2 = new TElement('a');
- $link2->target = 'newwindow';
- $link2->generator = 'adianti';
- $link2->class = 'btn btn-default';
- $link2->href = 'index.php?class=RelatorioGeral2';
- $link2->add('Cadastrar plano de contas');
- $vbox = new TVBox();
- $vbox->add($this->form);
- parent::add($vbox);
- }
- public function onSave()
- {
- try {
- $data = $this->form->getData();
- $this->form->setData($data);
- TTransaction::open('samples');
- $conta = new Contas();
- $conta->fornecedor = $data->fornecedor;
- $conta->historico = $data->historico;
- $conta->valor = $data->valor;
- $conta->filial = $data->filial;
- $conta->forma_pgto = $data->forma_pgto;
- $conta->plano_conta = $data->plano_conta;
- $conta->dt_lancamento = '';
- // converte a data de dd/mm/YYYY para YYYY/mm/dd
- $data->vencimento = DateTime::createFromFormat('d/m/Y', $data->vencimento)->format('Y-m-d');
- $conta->vencimento = $data->vencimento;
- $conta->store();
- new TMessage('info', 'Dados Gravados');
- TTransaction::close();
- //TApplication::gotoPage('ContasFormView');
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- }
- }
- public function onEdit($param){
- try {
- if (isset($param['key'])) {
- $key = $param['key']; // obtém o parâmetro $key
- TTransaction::open('samples'); // abre a transação
- $data = new Contas($key); // instancia o Active Record
- // AQUI CONVERSÃO PARA CARREGAR OS DADOS
- $data->vencimento = DateTime::createFromFormat('Y-m-d', $data->vencimento )->format( 'd/m/Y' );
- $this->form->setData($data); // preenche o form
- TTransaction::close(); // fecha a transação
- }
- else {
- $this->form->clear();
- }
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- }
- }
- }
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
Cara muito obrigado! deu certo.
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?.