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.

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 (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. * Constructor method
  13. */
  14. public function __construct($id = NULL, $callObjectLoad = TRUE)
  15. {
  16. parent::__construct($id, $callObjectLoad);
  17. parent::addAttribute('nome');
  18. parent::addAttribute('logradouro');
  19. parent::addAttribute('numero');
  20. parent::addAttribute('bairro');
  21. parent::addAttribute('cep');
  22. parent::addAttribute('cidade');
  23. parent::addAttribute('estado');
  24. parent::addAttribute('pais');
  25. parent::addAttribute('observacao');
  26. parent::addAttribute('tel1');
  27. parent::addAttribute('tel2');
  28. parent::addAttribute('contato1');
  29. parent::addAttribute('contato2');
  30. }
  31. }
  32. ?>
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. private $convenio;
  12. /**
  13. * Constructor method
  14. */
  15. public function __construct($id = NULL, $callObjectLoad = TRUE)
  16. {
  17. parent::__construct($id, $callObjectLoad);
  18. parent::addAttribute('nome');
  19. parent::addAttribute('logradouro');
  20. parent::addAttribute('cod_conv');
  21. parent::addAttribute('cpf');
  22. parent::addAttribute('data_nasc');
  23. parent::addAttribute('data_inclusao');
  24. parent::addAttribute('numero');
  25. parent::addAttribute('bairro');
  26. parent::addAttribute('cep');
  27. parent::addAttribute('cidade');
  28. parent::addAttribute('estado');
  29. parent::addAttribute('pais');
  30. parent::addAttribute('tel_fixo');
  31. parent::addAttribute('celular');
  32. parent::addAttribute('tel_contato');
  33. parent::addAttribute('e_mail');
  34. }
  35. /**
  36. * Method set_convenio
  37. * Sample of usage: $paciente->convenio = $object;
  38. * @param $object Instance of Convenio
  39. */
  40. public function set_convenio(Convenio $object)
  41. {
  42. $this->convenio = $object;
  43. $this->convenio_id = $object->id;
  44. }
  45. /**
  46. * Method get_convenio
  47. * Sample of usage: $paciente->convenio->attribute;
  48. * @returns Convenio instance
  49. */
  50. public function get_convenio()
  51. {
  52. // loads the associated object
  53. if (empty($this->convenio))
  54. $this->convenio = new Convenio($this->convenio_id);
  55. // returns the associated object
  56. return $this->convenio;
  57. }
  58. }
  59. ?>
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. private $convenio;
  12. /**
  13. * Constructor method
  14. */
  15. public function __construct($id = NULL, $callObjectLoad = TRUE)
  16. {
  17. parent::__construct($id, $callObjectLoad);
  18. parent::addAttribute('nome');
  19. parent::addAttribute('logradouro');
  20. parent::addAttribute('cod_conv');
  21. parent::addAttribute('cpf');
  22. parent::addAttribute('data_nasc');
  23. parent::addAttribute('data_inclusao');
  24. parent::addAttribute('numero');
  25. parent::addAttribute('bairro');
  26. parent::addAttribute('cep');
  27. parent::addAttribute('cidade');
  28. parent::addAttribute('estado');
  29. parent::addAttribute('pais');
  30. parent::addAttribute('tel_fixo');
  31. parent::addAttribute('celular');
  32. parent::addAttribute('tel_contato');
  33. parent::addAttribute('e_mail');
  34. }
  35. /**
  36. * Method set_convenio
  37. * Sample of usage: $paciente->convenio = $object;
  38. * @param $object Instance of Convenio
  39. */
  40. public function set_convenio(Convenio $object)
  41. {
  42. $this->Convenio = $object;
  43. $this->cod_conv = $object->id;
  44. }
  45. /**
  46. * Method get_convenio
  47. * Sample of usage: $paciente->convenio->attribute;
  48. * @returns Convenio instance
  49. */
  50. public function get_convenio()
  51. {
  52. // loads the associated object
  53. if (empty($this->Convenio))
  54. $this->Convenio = new Convenio($this->cod_conv);
  55. // returns the associated object
  56. return $this->convenio;
  57. }
  58. }
  59. ?>
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. // returns the associated object
  8. return $this->convenio->nome;
  9. }
  10. ?>

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