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.
Segue abaixo o código, caso alguém consiga me ajudar com este erro. Em anexo imagem do erro gerado.
- <?php
- /**
- * CadastroClienteForm Registration
- * @author <your name here>
- */
- class CadastroClienteForm extends TPage
- {
- protected $form; // form
- use Adianti\Base\AdiantiStandardFormTrait; // Standard form methods
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
- $this->setDatabase('permissao'); // defines the database
- $this->setActiveRecord('CadastroCliente'); // defines the active record
- // creates the form
- $this->form = new TQuickForm('form_CadastroCliente');
- $this->form->class = 'tform'; // change CSS class
- $this->form->style = 'display: table;width:100%'; // change style
- // define the form title
- $this->form->setFormTitle('Cadastro de Cliente');
- // create the form fields
- 1919 = new TEntry('id');
- $fantasia = new TEntry('descricao');
- $razao = new TEntry('razao');
- $cnpj = new TEntry('cnpj');
- $endereco = new TEntry('endereco');
- $bairro = new TEntry('bairro');
- $cidade = new TEntry('cidade');
- $uf = new TCombo('uf');
- $fone1 = new TEntry('fone1');
- $fone2 = new TEntry('fone2');
- $email1 = new TEntry('email1');
- $email2 = new TEntry('email2');
- $contato = new TEntry('contato');
- $responsavel = new TEntry('responsavel');
- $observacoes = new TText('observacoes');
- 1919_c_custo = new ">TDBSeekButton('id_centro_custo','permissao','form_CadastroCliente','TipoDocumento','descricao','id_centro_custo','id');
- 1919_categoria_conta = new ">TDBSeekButton('id_categoria_conta','permissao','form_CadastroCliente','CategoriaReceita','descricao','id_categoria_conta','id');
- // add the combo filds
- $uf->addItems(array( 'AC'=>'Acre',
- 'AL'=>'Alagoas',
- 'AP'=>'Amapá',
- 'AM'=>'Amazonas',
- 'BA'=>'Bahia',
- 'CE'=>'Ceara',
- 'DF'=>'Distrito Federal',
- 'ES'=>'Espírito Santo',
- 'GO'=>'Goiás',
- 'MA'=>'Maranhão',
- 'MT'=>'Mato Grosso',
- 'MS'=>'Mato Grosso do Sul',
- 'MG'=>'Minas Gerais',
- 'PA'=>'Pará',
- 'PB'=>'Paraíba',
- 'PR'=>'Paraná',
- 'PE'=>'Pernambuco',
- 'PI'=>'Piauí',
- 'RJ'=>'Rio de Janeiro',
- 'RN'=>'Rio Grande do Norte',
- 'RS'=>'Rio Grande do Sul',
- 'RO'=>'Rondônia',
- 'RR'=>'Roraima',
- 'SC'=>'Santa Catarina',
- 'SP'=>'São Paulo',
- 'SE'=>'Sergipe',
- 'TO'=>'Tocantins'));
- // add the fields
- $this->form->addQuickField('Id', 1919, 100 );
- $this->form->addQuickField('Nome Fantasia', $fantasia, 400 , new TRequiredValidator);
- $this->form->addQuickField('Razão Social', $razao, 400 , new TRequiredValidator);
- $this->form->addQuickField('CNPJ', $cnpj, 200 , new TCNPJValidator);
- $this->form->addQuickField('Endereço', $endereco, 400 );
- $this->form->addQuickField('Bairro', $bairro, 300 );
- $this->form->addQuickField('Cidade', $cidade, 300 );
- $this->form->addQuickField('UF', $uf, 200 );
- $this->form->addQuickField('Telefone 01', $fone1, 200 );
- $this->form->addQuickField('Telefone 02', $fone2, 200 );
- $this->form->addQuickField('E-mail 01', $email1, 200 );
- $this->form->addQuickField('E-mail 02', $email2, 200 );
- $this->form->addQuickField('Contato', $contato, 200 );
- $this->form->addQuickField('Responsável', $responsavel, 200 );
- $this->form->addQuickField('Observacões', $observacoes, 400 );
- $this->form->addQuickFields('Centro de Custo', array(1919_c_custo));
- $this->form->addQuickFields('Categoria de Conta',array(1919_categoria_conta));
- if (!empty(1919))
- {
- 1919->setEditable(FALSE);
- }
- /** samples
- $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( 100, 40 ); // set size
- **/
- // create the form actions
- $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
- $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'bs:plus-sign green');
- $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('CadastroClienteList','onReload')),'fa:table blue');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- }
- ?>
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.
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.
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.');?>
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
Olá Cleidison.
Declare a a variável $uf no início da aplicação
no evento onEdit , depois do $this->form->clear() (se existir) coloque:
Não esqueça de mudar todos os $uf pelo $this->uf