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

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