Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Dúvida cruel sobre CheckGroup e como Gravar no Banco. Ola Pessoal. Ja li inumeros posts e pesquisei mas nao consigo fazer funcionar sempre dá um erro. Tenho uma tela com CHECKGROUP. E preciso marcar varios tipos de exames para o cliente. Na hora de gravar o registro é salva mas nao grava no banco. Na minha tabela TB_PRESCRICAO (id, codPaciente, exames,....) ja criei uma tabela igual os exemplos do tutor ComplexView. ...
AJ
Dúvida cruel sobre CheckGroup e como Gravar no Banco.  
Ola Pessoal. Ja li inumeros posts e pesquisei mas nao consigo fazer funcionar sempre dá um erro.
Tenho uma tela com CHECKGROUP. E preciso marcar varios tipos de exames para o cliente. Na hora de gravar o registro é salva mas nao grava no banco.
Na minha tabela TB_PRESCRICAO (id, codPaciente, exames,....) ja criei uma tabela igual os exemplos do tutor ComplexView.

  1. <?php
  2. class AvaliacaoPrescricao extends TStandardForm
  3. {
  4.     protected $form;     
  5.     public function __construct()
  6.     {
  7.         parent::__construct();
  8.           
  9.         Adianti\Control\TPage::include_css('app/resources/formdecorator.css');
  10.         $html = new \Adianti\Widget\Template\THtmlRenderer('app/resources/formdecorator.html');
  11.         
  12.         $this->form = new TQuickForm('form_AvaliaçãoPrescrição');
  13. ;
  14.             
  15.         // Bancos de dados e Active Record
  16.         parent::setDatabase('permission');
  17.         parent::setActiveRecord('Prescricao');
  18.         
  19.         //Campos do Formulario          //origem      //banco       //model    //gravaBanco  // aparece na caixa
  20.         $codPaciente    = new TDBCombo('codPaciente''permission''Paciente''nome''nome');
  21.         $codAvaliador  = new TDBCombo('codAvaliador','permission','Avaliador','nomeAvaliador','nomeAvaliador');
  22.        
  23.         $dataPresc= new TDate('dataPresc');
  24.         $dataPresc->setMask('dd/mm/yyyy');
  25.         $dataPresc->setDatabaseMask('yyyy-mm-dd');
  26.         
  27.         //Objetivos: Clinicos e Funcionais
  28.         $diagnostico = new TEntry('diagnostico');
  29.         $objetivo = new Adianti\Widget\Form\TCheckGroup('objetivo');   // Esse campo que quero gravar no banco
  30.         $cb = array();
  31.         $cb['1'] = 'Hipertensão Arterial Sistêmica';
  32.         $cb['2'] = 'Angina';
  33.         $cb['3'] = 'Dispnéia';
  34.         $cb['4'] = 'Dislipidemia';
  35.         $cb['5'] = 'Obesidade';
  36.         $cb['6'] = 'Tabagismo';
  37.         $cb['7'] = 'Depressão';
  38.         $cb['8'] = 'Estresse';
  39.         $objetivo->addItems($cb);
  40.         $objetivo->setLayout('horizontal');
  41.       
  42.         
  43.           
  44.         // Campos que aparecem no Formulário
  45.         $this->form->addQuickField('Paciente',$codPaciente,300);
  46.         $this->form->addQuickField('Avaliador',$codAvaliador,300);   
  47.         $this->form->addQuickField('Diagnóstico Clínico '$diagnostico,300);    
  48.         $this->form->addQuickField('Objetivos '$objetivo,300);    
  49.         $this->form->addQuickField('Funcionais '$funcional,300);    
  50.         $this->form->addQuickField('Cicloergometro MMSS'$ciclommss,100);
  51.         $this->form->addQuickField('Cicloergometro MMII',$ciclommii,100);
  52.         $this->form->addQuickField('Frequênica',$frequencia,100);
  53.         $this->form->addQuickField('Modalidade',$modalidade,300);
  54.         $this->form->addQuickFields('Tipo Tempo', array($tipotp, new TLabel('Tempo'), $tempo));  
  55.         $this->form->addQuickFields('FC Inferior', array($fcinf, new TLabel('FC Superior'), $fcsup)); 
  56.         $this->form->addQuickFields('Cicloergômetro M. Superiores', array( $lbl_duracaos,  $duracaos$lbl_cargas,$cargas$lbl_rpms$rpms$lbl_posicaos$posicaos )); 
  57.         $this->form->addQuickFields('Cicloergômetro M. Inferiores', array( $lbl_duracaoi,  $duracaoi$lbl_cargai,$cargai$lbl_rpmi$rpmi$lbl_posicaoi$posicaoi )); 
  58.         
  59.         
  60.         $this->form->addQuickField('Parecer',$parecer,200);   
  61.         $this->form->addQuickField('Data',$dataPresc,100);
  62.        
  63.         $parecer->setSize(650,70);
  64.         
  65.        
  66.         $replace = array('form'=>$this->form);
  67.         $html->enableSection('main',$replace);
  68.         
  69.         // Ações dos botões do formulário
  70.         $this->form->addQuickAction('Salvar', new TAction(array($this,'onSave')),'ico_save.png');
  71.    
  72.                 
  73.         $vbox = new TVBox;
  74.         $vbox->add(new Adianti\Widget\Util\TXMLBreadCrumb('menu.xml''AvaliacaoPrescricao'));
  75.         //$vbox->add($this->form);
  76.         $vbox->add($html);
  77.      
  78.         parent::add($vbox);
  79.         
  80.     }
  81.      
  82.      function onSave()
  83.     {
  84.         try
  85.         {
  86.             
  87.             TTransaction::open('permission');
  88.             
  89.           
  90.             $prescricao $this->form->getData();
  91.     // AQUI PRECISO GRAVAR O CHECK COMO FACO PARA IMPLODIR O ARRAY QUE CHEGA COM OS GRUPOS E COMO DEVE TEM QUE O TIPO DE CAMPO DA TABELA VARCHAR? OU INT? SENDO QUE SERAO VARIOS VALORES.
  92.             $prescricao->store();
  93.  
  94.             new TMessage('info''Avaliação e Prescrição cadastrada com Sucesso!');
  95.             
  96.             TTransaction::close(); // close the transaction
  97.         }
  98.         catch (Exception $e// in case of exception
  99.         {
  100.             new TMessage('error''<b>Error</b>: ' $e->getMessage());
  101.        
  102.             TTransaction::rollback();
  103.         }
  104.     }
  105.     
  106.     
  107.     }
  108. ?>

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


NR

Se você está planejando gravar as várias opções selecionadas em 1 só campo da tabela, você precisa criar um campo array no banco de dados. Veja o link abaixo:
https://www.adianti.com.br/forum/pt/view_2037?como-tratar-string-do-tipo-array-n

Na minha opinião seria melhor modificar seu banco de dados para criar uma agregação entre Prescricao e Objetivo, sem a necessidade de utilizar campos do tipo array.
AJ

Blz estou fazendo assim. Busquei o exemplo de customer e Skill do tutor onde uma pessoa tem varias habilidades no meu caso tenho uma Prescrição com vários exames. A prescrição é gravada na tabela system-prescrição e os exames na tabela System-prescricao-objetivo aí na hora de gravar os ChechGroup é um array e quando chega no onsave() eu tenho que concatenar? Como faço para armazenar no store. Vou postar meu código estou com muita dúvida já papirei um pouco de agregação e composição no livro.
NR

Se você criou a agregação entre os modelos basta fazer um foreach e adicionar os objetivos à prescrição, do mesmo modo que nesse exemplo do tutor que você citou:
  1. <?php
  2. //onSave
  3. $prescricao $this->form->getData('Prescricao'); 
  4. foreach ($prescricao->objetivo as $id_objetivo)
  5. {
  6.        $prescricao->addObjetivo(new Objetivo($id_objetivo);
  7. }
  8. $prescricao->store();
  9. ?>