Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como Alterar Valor do Campo Dinamico TENTRY Pessoal bom dia! Preciso alimentar um campo dinamicamente, o campo convênio é o código do convenio que está armazenado na tabela de convenio ao cadastrar o cliente eu busco dessa tabela o nome do convenio e a função do TSeekButton retorna para esse campo "Nome Convênio". Porém depois que salvo se eu editar ou navegar no datagrid entre os registros o nome não é mais exibido pois não t...
LB
Como Alterar Valor do Campo Dinamico TENTRY  
Fechado
Pessoal bom dia!
Preciso alimentar um campo dinamicamente, o campo convênio é o código do convenio que está armazenado na tabela de convenio ao cadastrar o cliente eu busco dessa tabela o nome do convenio e a função do TSeekButton retorna para esse campo "Nome Convênio". Porém depois que salvo se eu editar ou navegar no datagrid entre os registros o nome não é mais exibido pois não tem função para alimentar esse campo. Alguém poderia me dar uma dica de como alimentar esse campo para que eu navegue entre os registros e a aplicação retorne o nome do convenio de acordo com o active record atual que possui o código do convênio.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (14)


LC

Usa o TDBSeekButton que vai da certo.
Segue este exemplo: www.adianti.com.br/framework_files/tutor/index.php?class=FormSeekBut
LB

Leadro já estou usando o problema é na navegação depois que o registro está salvo, pois o campo Nome Convenio não existe na tabela Paciente, ao incluir está perfeito. Meu problema é no edit que esse campo fica em branco e também ao mudar os registro no datagrid esse campo também fica em branco.
LC

Tem que funcionar então.
Pegando o exemplo como base, o ultimo parâmetro do seek aponta para o campo city_name2, veja se no seu código esta apontando para o campo correto.
$city_id2 = new TDBSeekButton('city_id2', 'samples', 'form_seek_sample', 'City', 'name', 'city_id2', 'city_name2');
$city_name2 = new TEntry('city_name2');
IF

Leandro, quando vc usa uma tabela contendo campos estrangeiros, vc tem que configurar o seu model para o TDBSeek poder funcionar adequadamente. Posta aí os models do Paciente e do Convenio pra gente dar uma olhada





LB

  1. <?php e 
  2. /**
  3.  * Convenio Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Convenio extends TRecord
  7. {
  8.     const TABLENAME 'convenio';
  9.     const PRIMARYKEY'cod_conv';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('nome');
  20.         parent::addAttribute('logradouro');
  21.         parent::addAttribute('numero');
  22.         parent::addAttribute('bairro');
  23.         parent::addAttribute('cep');
  24.         parent::addAttribute('cidade');
  25.         parent::addAttribute('estado');
  26.         parent::addAttribute('pais');
  27.         parent::addAttribute('observacao');
  28.         parent::addAttribute('tel1');
  29.         parent::addAttribute('tel2');
  30.         parent::addAttribute('contato1');
  31.         parent::addAttribute('contato2');
  32.     }
  33. }
  34. ?>
LB

  1. <?php e
  2. /**
  3.  * Paciente Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Paciente extends TRecord
  7. {
  8.     const TABLENAME 'paciente';
  9.     const PRIMARYKEY'cod_pac';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $convenio;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('nome');
  21.         parent::addAttribute('logradouro');
  22.         parent::addAttribute('cod_conv');
  23.         parent::addAttribute('cpf');
  24.         parent::addAttribute('data_nasc');
  25.         parent::addAttribute('data_inclusao');
  26.         parent::addAttribute('numero');
  27.         parent::addAttribute('bairro');
  28.         parent::addAttribute('cep');
  29.         parent::addAttribute('cidade');
  30.         parent::addAttribute('estado');
  31.         parent::addAttribute('pais');
  32.         parent::addAttribute('tel_fixo');
  33.         parent::addAttribute('celular');
  34.         parent::addAttribute('tel_contato');
  35.         parent::addAttribute('e_mail');
  36.     }
  37.     
  38.     /**
  39.      * Method set_convenio
  40.      * Sample of usage: $paciente->convenio = $object;
  41.      * @param $object Instance of Convenio
  42.      */
  43.     public function set_convenio(Convenio $object)
  44.     {
  45.         $this->convenio $object;
  46.         $this->convenio_id $object->id;
  47.     }
  48.     
  49.     /**
  50.      * Method get_convenio
  51.      * Sample of usage: $paciente->convenio->attribute;
  52.      * @returns Convenio instance
  53.      */
  54.     public function get_convenio()
  55.     {
  56.         // loads the associated object
  57.         if (empty($this->convenio))
  58.             $this->convenio = new Convenio($this->convenio_id);
  59.     
  60.         // returns the associated object
  61.         return $this->convenio;
  62.     }
  63.     
  64. }
  65. ?>
LB

Só um comentario o seekfunciona legal ao incluir, porém como o campo Nome Convenio é apenas para exibição e não existe na classe Paciente ao navegar nos registro do paciente o campo nome "Nome Convenio não está sendo atualizado". Imagino que seja por ele não existir na tabela de Paciente, é um campo no form apenas para exibição do nome do convenio que o usuário escolheu ao selecionar um código de paciente.
IF

Acho que o relacionamento no Model Paciente está configurado errado não tem o campo (convenio_id) e sim cod_conv , confirma?
LB

Não Ivan o campo chave da tabela Convenio é realmente é o campo cod_conv e na tabela Paciente o nome do campo também é cod_conv.
LB

Ivan entendi o que vc falou, já ajustei olha o fonte mas mesmo assim não rolou de funcionar.

  1. <?php e
  2. /**
  3.  * Paciente Active Record
  4.  * @author  Leandro J N Barbosa
  5.  */
  6. class Paciente extends TRecord
  7. {
  8.     const TABLENAME 'paciente';
  9.     const PRIMARYKEY'cod_pac';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $convenio;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('nome');
  21.         parent::addAttribute('logradouro');
  22.         parent::addAttribute('cod_conv');
  23.         parent::addAttribute('cpf');
  24.         parent::addAttribute('data_nasc');
  25.         parent::addAttribute('data_inclusao');
  26.         parent::addAttribute('numero');
  27.         parent::addAttribute('bairro');
  28.         parent::addAttribute('cep');
  29.         parent::addAttribute('cidade');
  30.         parent::addAttribute('estado');
  31.         parent::addAttribute('pais');
  32.         parent::addAttribute('tel_fixo');
  33.         parent::addAttribute('celular');
  34.         parent::addAttribute('tel_contato');
  35.         parent::addAttribute('e_mail');
  36.     }
  37.     
  38.     /**
  39.      * Method set_convenio
  40.      * Sample of usage: $paciente->convenio = $object;
  41.      * @param $object Instance of Convenio
  42.      */
  43.     public function set_convenio(Convenio $object)
  44.     {
  45.         $this->Convenio $object;
  46.         $this->cod_conv $object->id;
  47.     }
  48.     
  49.     /**
  50.      * Method get_convenio
  51.      * Sample of usage: $paciente->convenio->attribute;
  52.      * @returns Convenio instance
  53.      */
  54.     public function get_convenio()
  55.     {
  56.         // loads the associated object
  57.         if (empty($this->Convenio))
  58.             $this->Convenio = new Convenio($this->cod_conv);
  59.     
  60.         // returns the associated object
  61.         return $this->convenio;
  62.     }
  63.     
  64. }
  65. ?>
IF

Agora sim, rsrs, mas agora vc tem que incluir o seguinte código:

  1. <?php
  2.     public function get_convenio_nome()
  3.     {
  4.         // loads the associated object
  5.         if (empty($this->Convenio))
  6.             $this->Convenio = new Convenio($this->cod_conv);
  7.     
  8.         // returns the associated object
  9.         return $this->convenio->nome;
  10.     }
  11. ?>

Qdo for usar o relacionamento em qualquer tela, vc tem que definir o nome do objeto como "convenio_nome"

$convenio_nome = new TEntry('convenio_nome');

Veja se agora funciona
IF

Esse código vc insere no model Paciente
LB

Caramba Ivan Agora funcionou show de bola cara me ajudou muito.
Obrigado Ivan e obrigado!

Leandro Coelho obrigado também pelas dicas!

Estou iniciando com o adianti framework então as vezes surgem muitas dúvidas, tenho o livro mas nem sempre tem no livro o que quero ou preciso fazer fico muito grato plea ajuda de vocês.

Abraço a todos!
IF

Blz, abraço