Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como Ordenar duas colunas num Relatório? Eu tenho uma coleção de Revistas e quero fazer ordenação primeiro pelo nome e segundo pelo número da revista. Meu relatório está exibindo corretamente a ordenação pelo nome da revista, mas os números de uma coleção, está exibindo desordenada. Como eu posso resolver isso? Tentei colocar nessa ordem abaixo, mas não funciona. $criteria->setProperty('order', 'nome'); ...
AM
Como Ordenar duas colunas num Relatório?  
Eu tenho uma coleção de Revistas e quero fazer ordenação primeiro pelo nome e segundo pelo número da revista.
Meu relatório está exibindo corretamente a ordenação pelo nome da revista, mas os números de uma coleção, está exibindo desordenada. Como eu posso resolver isso?
Tentei colocar nessa ordem abaixo, mas não funciona.
$criteria->setProperty('order', 'nome');
$criteria->setProperty('order', 'numero');

Veja o anexo, têm uma foto do relatório.
Veja abaixo, meu código completo do relatório.

  1. <?php
  2. class ImpRelatorio7 extends TPage
  3. {
  4.     protected $form;
  5.     protected $notebook;
  6.     
  7.     function __construct()
  8.     {
  9.         parent::__construct();
  10.         // Set focus no campo especificado
  11.         TScript::create('setTimeout(function() { $("input[name=\'id\']").focus() }, 500);');
  12.         
  13.         // Executa um script que substitui o Tab pelo Enter.
  14.         parent::include_js('app/lib/include/application.js');        
  15.         
  16.         // creates the form
  17.         $this->form = new TQuickForm('form_Revista_report');
  18.         $this->form->class 'tform'// change CSS class
  19.         $this->form->style 'width: 830px';
  20.         
  21.         // creates the table container
  22.         $table = new TTable;
  23.         $table->width '100%';
  24.         
  25.         // add the table inside the form
  26.         $this->form->add($table);                
  27.         
  28.         // define the form title
  29.         $table->addRowSet( new TLabel('Relatório de Revistas'), new TLabel('(Estilo 7) Em Ordem Alfabética') )->class 'tformtitle';
  30.         // create the form fields
  31.         $nome = new TEntry('nome');
  32.         $numero = new TEntry('numero');
  33.         $ano = new TEntry('ano');
  34.         
  35.         $nota                           = new TCombo('nota');
  36.         $combo_items = array();
  37.         $combo_items['Péssimo'] ='Péssimo';        
  38.         $combo_items['Ruim'] ='Ruim';
  39.         $combo_items['Médio'] ='Médio';        
  40.         $combo_items['Bom'] ='Bom';
  41.         $combo_items['Muito Bom'] ='Muito Bom';
  42.         $combo_items['Excelente'] ='Excelente';                
  43.         $nota->addItems($combo_items); 
  44.         
  45.         $output_type = new TRadioGroup('output_type');                 
  46.         // define the sizes
  47.         $nome->setSize(650);
  48.         $numero->setSize(70);
  49.         $ano->setSize(70);
  50.         $nota->setSize(100);
  51.         $output_type->setSize(100);                               
  52.         
  53.         // MaxLength
  54.         $nome->setMaxLength(70);
  55.         $numero->setMaxLength(4);
  56.         $ano->setMaxLength(4);
  57.         
  58.         //  Define um valor inicial para os campos. 
  59.         $nome->setValue('');
  60.         $numero->setValue('');
  61.         $ano->setValue('');
  62.         $nota->setValue('');                        
  63.         
  64.         // $output_type = new TRadioGroup('output_type');
  65.         
  66.         // validação
  67.         $output_type->addValidation('Output', new TRequiredValidator);        
  68.         
  69.         // add one row for each form field
  70.         $table->addRowSet( new TLabel('Nome:'), $nome );
  71.         $table->addRowSet( new TLabel('Número:'), $numero );
  72.         $table->addRowSet( new TLabel('Ano:'), $ano );
  73.         $table->addRowSet( new TLabel('Nota:'), $nota );
  74.         $table->addRowSet$label_output_type = new TLabel('Saída:'), $output_type );
  75.         $label_output_type->setFontColor('#cc0000');
  76.         
  77.         $this->form->setFields(array($nome,$numero,$ano,$nota,$output_type));                                                        
  78.         $output_type->addItems(array('html'=>'HTML''pdf'=>'PDF''rtf'=>'RTF'));;
  79.         $output_type->setValue('pdf');
  80.         $output_type->setLayout('horizontal');
  81.         
  82.         $generate_button TButton::create('generate', array($this'onGenerate'), ('Gerar'), 'ico_apply.png');
  83.         $this->form->addField($generate_button);
  84.         
  85.         $limp TButton::create('Limpar', array($this'onShow'), ('Limpar Campos'), 'ico_ok.png');
  86.         $this->form->addField($limp); 
  87.         
  88.         // add a row for the form action
  89.         $table->addRowSet$generate_button'' )->class 'tformaction';        
  90.         
  91.         parent::add($this->form);
  92.     }
  93.     
  94.     function onShow() {
  95.     }    
  96.     
  97.     function onGenerate()
  98.     {
  99.         try
  100.         {
  101.             // open a transaction with database 'revista'
  102.             TTransaction::open('revista');
  103.             
  104.             // get the form data into an active record
  105.             $formdata $this->form->getData();
  106.             
  107.             $repository = new TRepository('Revista');
  108.             $criteria   = new TCriteria;
  109.             
  110.             if ($formdata->nome)
  111.             {
  112.                 $criteria->add(new TFilter('nome''like'"%{$formdata->nome}%"));
  113.             }
  114.             if ($formdata->numero)
  115.             {
  116.                 $criteria->add(new TFilter('numero''like'"%{$formdata->numero}%"));
  117.             }
  118.             if ($formdata->ano)
  119.             {
  120.                 $criteria->add(new TFilter('ano''like'"%{$formdata->ano}%"));
  121.             }
  122.             if ($formdata->nota)
  123.             {
  124.                 $criteria->add(new TFilter('nota''like'"%{$formdata->nota}%"));
  125.             }
  126.             
  127.             //  Ordenação
  128.             $criteria->setProperty('order''nome');            
  129.             $criteria->setProperty('order''numero'); 
  130.             $objects $repository->load($criteriaFALSE);
  131.             $format  $formdata->output_type;
  132.             
  133.             if ($objects)
  134.             {
  135.                 $widths = array(375,40,40,80);
  136.                 
  137.                 switch ($format)
  138.                 {
  139.                     case 'html':
  140.                         $tr = new TTableWriterHTML($widths);
  141.                         break;
  142.                     case 'pdf':
  143.                         $tr = new TTableWriterPDF($widths);
  144.                         break;
  145.                     case 'rtf':
  146.                         if (!class_exists('PHPRtfLite_Autoloader'))
  147.                         {
  148.                             PHPRtfLite::registerAutoloader();
  149.                         }
  150.                         $tr = new TTableWriterRTF($widths);
  151.                         break;
  152.                 }
  153.                 
  154.                 // Cria o estilo do documento
  155.                 $tr->addStyle('title''Arial''12''B',   '#ffffff''#EA9C98');    // Cabeçalho, Cor: Letra - Fundo
  156.                 $tr->addStyle('title2''Arial''12''B',   '#ffffff''#EA9C98');    // Cabeçalho, Cor: Letra - Fundo
  157.                 $tr->addStyle('datap''Arial''12''',    '#000000''#EEEEEE');    // 2º Registro
  158.                 $tr->addStyle('datai''Arial''12''',    '#000000''#ffffff');    // 1º Registro
  159.                 $tr->addStyle('header''Arial''16''',  '#ffffff''#904F49');   // Título
  160.                 $tr->addStyle('header2''Arial''16''',  '#ffffff''#904F49');   // Título                
  161.                 $tr->addStyle('footer''Times''12''I''#000000''#F2BEBC');      // Rodapé 
  162.                 
  163.                 // add a header row
  164.                 $tr->addRow();
  165.                 $tr->addCell(utf8_decode('Relatório de Todas as Revistas'), 'center''header'4);
  166.                 
  167.                 // adiciona títulos na linha.
  168.                 $tr->addRow();
  169.                 $tr->addCell(utf8_decode('Nome'), 'center''title2');
  170.                 $tr->addCell(utf8_decode('Nº'), 'center''title2');
  171.                 $tr->addCell('Ano''center''title2');
  172.                 $tr->addCell(utf8_decode('Nota'), 'center''title2');
  173.                 
  174.                 // controls the background filling
  175.                 $colourFALSE;
  176.                 
  177.                 // data rows
  178.                 foreach ($objects as $object)
  179.                 {
  180.                     $style $colour 'datap' 'datai';
  181.                     $tr->addRow();
  182.                     $tr->addCell(utf8_decode($object->nome), 'left'$style);
  183.                     $tr->addCell(str_pad($object->numero2"0"STR_PAD_LEFT), 'center'$style);                    
  184.                     $tr->addCell(utf8_decode($object->ano), 'center'$style);
  185.                     $tr->addCell(utf8_decode($object->nota), 'center'$style);
  186.                     $colour = !$colour;
  187.                 }
  188.                 
  189.                 // footer row
  190.                 $tr->addRow();
  191.                 $tr->addCell(utf8_decode('Data e Hora da Impressão: ').date(' d/m/Y    |     h:i:s'), 'left''footer'4);
  192.                 // stores the file
  193.                 if (!file_exists("app/output/Revista.{$format}") OR is_writable("app/output/Revista.{$format}"))
  194.                 {
  195.                     $tr->save("app/output/Revista.{$format}");
  196.                 }
  197.                 else
  198.                 {
  199.                     throw new Exception(_t('Acesso Negado.') . ': ' "app/output/Revista.{$format}");
  200.                 }
  201.                 
  202.                 // open the report file
  203.                 parent::openFile("app/output/Revista.{$format}");
  204.                 
  205.                 // shows the success message
  206.                 new TMessage('info''Relatório Gerado. Deixe sempre habilitado o Pop-Up Menu do seu Navegador.');
  207.             }
  208.             else
  209.             {
  210.                 new TMessage('error''Nenhum registro foi encontrado.');
  211.             }
  212.     
  213.             // fill the form with the active record data
  214.             $this->form->setData($formdata);
  215.             
  216.             // close the transaction
  217.             TTransaction::close();
  218.         }
  219.         catch (Exception $e// in case of exception
  220.         {
  221.             // shows the exception error message
  222.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  223.             
  224.             // undo all pending operations
  225.             TTransaction::rollback();
  226.         }
  227.     }
  228. }

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


IF

Olá Alex.

Tenta fazer assim:

  1. <?php $criteria->setProperty('order''nome, numero'); ?>