Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Erro ao utilizar o TDBSeekButton - Editando registros já gravado Boa tarde "Adianteiros" de plantão. Estou desenvolvendo uma aplicação para cadastro de clientes e nesta aplicação quero setar o centro de custo e a categoria de receitas do cliente cadastrado. Até ai tudo bem, criei toda a minha aplicação utilizando o Adianti Stúdio Professional e para inclusão de novos registros segui o exemplo do livro e funcionou corretamente. O erro esta ocorrendo qu...
CC
Erro ao utilizar o TDBSeekButton - Editando registros já gravado  
Fechado
Boa tarde "Adianteiros" de plantão. Estou desenvolvendo uma aplicação para cadastro de clientes e nesta aplicação quero setar o centro de custo e a categoria de receitas do cliente cadastrado. Até ai tudo bem, criei toda a minha aplicação utilizando o Adianti Stúdio Professional e para inclusão de novos registros segui o exemplo do livro e funcionou corretamente. O erro esta ocorrendo quando edito um registro já cadastrado. Altero o registro e clico em salvar, o framework chama a opção de inserir um novo registro em vez de atualizar o registro corrente.
Segue abaixo o código, caso alguém consiga me ajudar com este erro. Em anexo imagem do erro gerado.

  1. <?php
  2. /**
  3.  * CadastroClienteForm Registration
  4.  * @author  <your name here>
  5.  */
  6. class CadastroClienteForm extends TPage
  7. {
  8.     protected $form// form
  9.     
  10.     use Adianti\Base\AdiantiStandardFormTrait// Standard form methods
  11.     
  12.     /**
  13.      * Class constructor
  14.      * Creates the page and the registration form
  15.      */
  16.     function __construct()
  17.     {
  18.         parent::__construct();
  19.         
  20.         $this->setDatabase('permissao');              // defines the database
  21.         $this->setActiveRecord('CadastroCliente');     // defines the active record
  22.        
  23.         // creates the form
  24.         $this->form = new TQuickForm('form_CadastroCliente');
  25.         $this->form->class 'tform'// change CSS class
  26.         
  27.         $this->form->style 'display: table;width:100%'// change style
  28.         
  29.         // define the form title
  30.         $this->form->setFormTitle('Cadastro de Cliente');
  31.         
  32.         // create the form fields
  33.         1919 = new TEntry('id');
  34.         $fantasia = new TEntry('descricao');
  35.         $razao = new TEntry('razao');
  36.         $cnpj = new TEntry('cnpj');
  37.         $endereco = new TEntry('endereco');
  38.         $bairro = new TEntry('bairro');
  39.         $cidade = new TEntry('cidade');
  40.         $uf = new TCombo('uf');
  41.         $fone1 = new TEntry('fone1');
  42.         $fone2 = new TEntry('fone2');
  43.         $email1 = new TEntry('email1');
  44.         $email2 = new TEntry('email2');
  45.         $contato = new TEntry('contato');
  46.         $responsavel = new TEntry('responsavel');
  47.         $observacoes = new TText('observacoes');
  48.         1919_c_custo = new  ">TDBSeekButton('id_centro_custo','permissao','form_CadastroCliente','TipoDocumento','descricao','id_centro_custo','id');
  49.         1919_categoria_conta =  new  ">TDBSeekButton('id_categoria_conta','permissao','form_CadastroCliente','CategoriaReceita','descricao','id_categoria_conta','id');
  50.      
  51.        
  52.         
  53.        
  54.        // add the combo filds
  55.          
  56.          $uf->addItems(array( 'AC'=>'Acre',
  57.          'AL'=>'Alagoas',
  58.          'AP'=>'Amapá',
  59.          'AM'=>'Amazonas',
  60.          'BA'=>'Bahia',
  61.          'CE'=>'Ceara',
  62.          'DF'=>'Distrito Federal',
  63.          'ES'=>'Espírito Santo',
  64.          'GO'=>'Goiás',
  65.          'MA'=>'Maranhão',
  66.          'MT'=>'Mato Grosso',
  67.          'MS'=>'Mato Grosso do Sul',
  68.          'MG'=>'Minas Gerais',
  69.          'PA'=>'Pará',
  70.          'PB'=>'Paraíba',
  71.          'PR'=>'Paraná',
  72.          'PE'=>'Pernambuco',
  73.          'PI'=>'Piauí',
  74.          'RJ'=>'Rio de Janeiro',
  75.          'RN'=>'Rio Grande do Norte',
  76.          'RS'=>'Rio Grande do Sul',
  77.          'RO'=>'Rondônia',
  78.          'RR'=>'Roraima',
  79.          'SC'=>'Santa Catarina',
  80.          'SP'=>'São Paulo',
  81.          'SE'=>'Sergipe',
  82.          'TO'=>'Tocantins'));
  83.           
  84.        
  85.         
  86.             
  87.       
  88.         // add the fields
  89.         $this->form->addQuickField('Id'1919,  100 );
  90.         $this->form->addQuickField('Nome Fantasia'$fantasia,  400 , new TRequiredValidator);
  91.         $this->form->addQuickField('Razão Social'$razao,  400 , new TRequiredValidator);
  92.         $this->form->addQuickField('CNPJ'$cnpj,  200 , new TCNPJValidator);
  93.         $this->form->addQuickField('Endereço'$endereco,  400 );
  94.         $this->form->addQuickField('Bairro'$bairro,  300 );
  95.         $this->form->addQuickField('Cidade'$cidade,  300 );
  96.         $this->form->addQuickField('UF'$uf,  200 );
  97.         $this->form->addQuickField('Telefone 01'$fone1,  200 );
  98.         $this->form->addQuickField('Telefone 02'$fone2,  200 );
  99.         $this->form->addQuickField('E-mail 01'$email1,  200 );
  100.         $this->form->addQuickField('E-mail 02'$email2,  200 );
  101.         $this->form->addQuickField('Contato'$contato,  200 );
  102.         $this->form->addQuickField('Responsável'$responsavel,  200 );
  103.         $this->form->addQuickField('Observacões'$observacoes,  400 );
  104.         $this->form->addQuickFields('Centro de Custo', array(1919_c_custo));
  105.         $this->form->addQuickFields('Categoria de Conta',array(1919_categoria_conta));
  106.         
  107.         
  108.           if (!empty(1919))
  109.         {
  110.             1919->setEditable(FALSE);
  111.         }
  112.         
  113.         /** samples
  114.          $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
  115.          $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
  116.          $fieldX->setSize( 100, 40 ); // set size
  117.          **/
  118.          
  119.         // create the form actions
  120.         $this->form->addQuickAction(_t('Save'), new TAction(array($this'onSave')), 'fa:floppy-o');
  121.         $this->form->addQuickAction(_t('New'),  new TAction(array($this'onEdit')), 'bs:plus-sign green');
  122.         $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('CadastroClienteList','onReload')),'fa:table blue');
  123.         // vertical box container
  124.         $container = new TVBox;
  125.         $container->style 'width: 90%';
  126.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  127.         $container->add($this->form);
  128.         
  129.         parent::add($container);
  130.     }
  131. }
  132. ?>

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


NC

Uma duvida, quando você gerou o código ele não gerou os metodos onEdit e onSave?

Porque daria para depurar e ver o que ele tá enviando no $param.

Já vi esse erro e era o fato de não estar passando o ID então ele entende que é um novo registro.
CC

Encontrei o erro.
O Problema estava no array que exige 2 parâmetros e como eu estava passando apenas um parâmetro ocorria o erro, e o ID que estava no lugar errado.
  1. <?php $this->form->addQuickFields('Centro de Custo', array($id_c_custo,'Segundo parâmetro aqui'));?>

Este segundo parametro tinha que ser previamente informado aqui.
<?pho $id_c_custo = new ">TDBSeekButton('id_centro_custo','permissao','form_CadastroCliente','TipoDocumento','descricao','id_centro_custo','segundo parametro.');?>
CC

Uma outra dúvida que eu tenho é, como fazer com que ao incluir um novo cadastro o sistema considere um estado como sendo padrão no TCombo.

Ja tentei inserir
$uf->setValue(13);
e não funcionou. Alguma dica ?
IF

Olá Cleidison.

Declare a a variável $uf no início da aplicação
  1. <?php
  2.     private $uf;
  3. ?>


no evento onEdit , depois do $this->form->clear() (se existir) coloque:
  1. <?php
  2.     $this->uf->setValue('PR');
  3. ?>

Não esqueça de mudar todos os $uf pelo $this->uf