Autor Tópico: [RESOLVIDO] Quebra no Report PDF  (Lida 2919 vezes)

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
[RESOLVIDO] Quebra no Report PDF
« Online: Setembro 01, 2014, 09:56:10 am »
Bom dia pessoal, sou novo com o SC e me cadastrei no fórum agora que não consegui mais me virar sozinho.
Comecei um pequeno projeto de uma assistência técnica a um mês atrás e o mesmo já esta pronto, faltando apenas extrair relatórios funcionais.
Pois bem, fiz o relatório em report PDF e está quase do jeito que eu gostaria. A única coisa que não sei como fazer é quebrá-lo automaticamente por um campo, no caso o campo "Etapa".
Vejam a imagem em anexo.

Tenho que fazer com que o campo ETAPA, que no caso, ali esta como 1 1 1 2 2 exibisse uma vez 1 e todos os dados que tem estão na ETAPA 1 e abaixo o 2 e todos os dados que tem a ETAPA 2.

Alguém pode me ajudar?
OBS: utilizo a versão 6 do SC.

Agradeço desde já.
« Última modificação: Setembro 09, 2014, 02:03:02 pm por Bruno Barreto »

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #1 Online: Setembro 01, 2014, 05:12:03 pm »
Monte uma imagem de como deseja que o relatório se comporte.

Aí vemos como te ajudar.

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #2 Online: Setembro 01, 2014, 05:17:06 pm »
Obrigado pela resposta.
Em anexo fiz uma montagem de como gostaria que ficasse o relatório, quebrado por ETAPA.

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #3 Online: Setembro 01, 2014, 05:44:51 pm »
Entendido.

Você esta usando o padrão automático do SC para gerar o relatório?

Eh possível caso haja uma intervenção manual de programação. Trabalhar na quebra por etapas.

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #4 Online: Setembro 01, 2014, 05:52:07 pm »
Estou usando o padrão automático do SC.
Os únicos comandos que fiz foi de SQL no lookup de consulta pra trazer as descrições ou invés dos códigos e outro comando SQL pra somar a pontuação.
O resto, só a subconsulta.
OBS: utilizo MSSQL.

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #5 Online: Setembro 02, 2014, 02:25:44 pm »
Abaixo segue o código gerado automaticamente pelo SC:
São 2 subselects no relatório, um puxa as informações dos formulário e o outro só busca o peso das perguntas.

          /*------------------ Page 1 -----------------*/
            sc_pdf_print($Titulo);
            sc_pdf_print($Visita);
            sc_pdf_print($Cod_Visita);
            sc_pdf_print($Text_Data);
            sc_pdf_print($Data);
            sc_pdf_print($Text_Tecnico);
            sc_pdf_print_html($Nome_Tecnico);
            sc_pdf_print($Text_Cliente);
            sc_pdf_print_html($Desc_Cliente);
            sc_pdf_print($Text_OBS);
            sc_pdf_print($Obs);
            sc_pdf_print($Linha);
            sc_pdf_print($Levantamento);
            sc_pdf_print($Text_Total);
            sc_pdf_print($cell_Total_Pesos);
            sc_pdf_print($Text_De);
            sc_pdf_print($cell_Total_Pesos2);
            sc_pdf_print($Text_Cod_Perg);
            sc_pdf_print($Text_Desc_Perg);
            sc_pdf_print($Text_Resposta);
            sc_pdf_print($Text_Peso);
            sc_pdf_print($Text_OBS_2);
            sc_pdf_set_y(100);
            foreach ({Formulario} as $NM_ind => $Dados)
            {
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Desc_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Resposta[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_OBS[$NM_ind]);
                sc_pdf_ln(5);
            }
            sc_pdf_set_y(100);
            foreach ({Perguntas} as $NM_ind => $Dados)
            {
                sc_pdf_print_sub_sel($cell_Perguntas_Peso[$NM_ind]);
                sc_pdf_ln(5);
            }

          /*-------------------------------------------*/

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #6 Online: Setembro 02, 2014, 04:34:26 pm »
Fiz algumas mudanças e estou quase chegando aonde quero.
A imagem anexada mostra que só falta fazer com que exiba apenas as perguntas com o Código da Etapa correspondente, para isso, penso que um IF seria a resposta, porém, nenhuma das maneiras que tentei deram certo.

A alteração que fiz agora foi adicionar um outro subselect com o seguinte comando SQL:
SELECT Cod_Etapa FROM dbo.Visita_Tec_Formulario WHERE Cod_Visita = {Cod_Visita} group BY Cod_Etapa

E no código desse subselect, coloquei o código do outro subselect, um dentro do outro. Ficou assim:

            foreach ({Etapa} as $NM_ind => $Dados)
            { 
           sc_pdf_print_sub_sel($cell_Etapa_Cod_Visita[$NM_ind]);
              sc_pdf_print_sub_sel($cell_Etapa_Cod_Etapa[$NM_ind]);
              sc_pdf_ln(5);
            
            foreach ({Formulario} as $NM_ind => $Dados)
               {
//aqui vai um IF?
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Desc_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Resposta[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_OBS[$NM_ind]);
                sc_pdf_ln(5);
                 }
            }

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #7 Online: Setembro 02, 2014, 04:51:46 pm »
inicia uma váriável:

$quebra=0;

dentro do loop:

If ($quebra<>{Cod_Etapa}) {
   $quebra={Cod_Etapa};
  sc_pdf_ln(1);
   sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
   sc_pdf_ln(2);
}

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #8 Online: Setembro 02, 2014, 05:13:03 pm »
Haroldo,

Tentei seguir a sua dica mas não deu.
 foreach ({Etapa} as $NM_ind => $Dados)
            { 
         sc_pdf_print_sub_sel($cell_Etapa_Cod_Visita[$NM_ind]);
              sc_pdf_print_sub_sel($cell_Etapa_Cod_Etapa[$NM_ind]);
              sc_pdf_ln(5);
         
            foreach ({Formulario} as $NM_ind => $Dados)
               {
               If ($quebra<>$cell_Formulario_Cod_Etapa[$NM_ind]) {
                  $quebra=$cell_Formulario_Cod_Etapa[$NM_ind];
// tentei assim tambem: If ($quebra<>{Cod_Etapa}) {
                                           $quebra={Cod_Etapa};

              sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Desc_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Resposta[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_OBS[$NM_ind]);
                sc_pdf_ln(5);
                   }   
            }
            }


Nas duas situações, só imprimi 1 e 2. que são as etapas das perguntas, só que falta imprimir as perguntas cujo etapas são 1 e depois as perguntas cujo etapa são 2.         
« Última modificação: Setembro 02, 2014, 05:15:05 pm por Bruno Barreto »

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #9 Online: Setembro 02, 2014, 05:22:13 pm »
$cell_Formulario_Cod_Etapa  <-- Errado. deve usar o campo scriptcase, aqui esta formatado para o pdf.

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #10 Online: Setembro 02, 2014, 05:34:40 pm »
Mas o Cod_Etapa vem junto com o subselect "formulario", de que maneira vou usar o campo scriptcase nesse caso?

lembrando que tentei utilizar assim:
If ($quebra<>{Cod_Etapa}) {
    $quebra={Cod_Etapa};
Mas o efeito foi o mesmo, só imprimi 1 e 2, mais nada.

Acho que não ficou muito claro a minha estrutura.
Tenho 2 subselects pra uma só tabela. Um subselect serve só pra armazenar quais as Etapas, no caso 1 e 2. O outro subselect deve buscar todas as perguntas da visita, porem, deve mostrar separado por etapa.
Ex: Etapa 1
         Pergunta 1
         Pergunta 2
         Pergunta 3
     Etapa 2
         Pergunta 1
         Pergunta 2

Como esta trazendo:
Etapa 1

Etapa 2

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #11 Online: Setembro 02, 2014, 06:30:59 pm »
Fica difícil tentar avinhar como está no seu código e o resultado.

Não me pareceu fazer como sugeri.
 

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #12 Online: Setembro 03, 2014, 08:32:10 am »
Bom dia,
Meu código está assim:
            foreach ({Etapa} as $NM_ind2 => $Dados2)
            { 
           sc_pdf_print_sub_sel($cell_Etapa_Cod_Visita[$NM_ind2]);
              sc_pdf_print_sub_sel($cell_Etapa_Cod_Etapa[$NM_ind2]);
              sc_pdf_ln(5);
         
            foreach ({Formulario} as $NM_ind => $Dados)
               {
            //   If ($quebra<>{Cod_Etapa}) {
                 //  $quebra = {Cod_Etapa};
              sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Cod_Etapa[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Desc_Perg[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_Resposta[$NM_ind]);
                sc_pdf_print_sub_sel($cell_Formulario_OBS[$NM_ind]);
                sc_pdf_ln(5);
                   //}   
            }
            }      
Comentei o IF pq não funcionou.
O resultado do código é a imagem em anexo.
Lembrando que a primeira coluna é o número da pergunta e a segunda coluna é o número da Etapa.
O código já está fazendo a quebra por Etapa, porém, falta ainda só trazer as perguntas de tal Etapa.
Veja que na Etapa 1 está trazendo todas as 5 perguntas e na Etapa 2 também.
O correto seria trazer as 3 primeiras perguntas na Etapa 1 e as outras duas na Etapa 2.

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Quebra no Report PDF
« Responder #13 Online: Setembro 03, 2014, 09:19:28 am »
manda os dados e a aplicação isso eh simples de se fazer.

Bruno Barreto

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Quebra no Report PDF
« Responder #14 Online: Setembro 03, 2014, 10:14:45 am »
Desculpe, mas não sei como manda os dados e a aplicação.