[RESOLVIDO] Quebra no Report PDF

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á.


Report PDF.PNG

Monte uma imagem de como deseja que o relatório se comporte.

Aí vemos como te ajudar.

Obrigado pela resposta.
Em anexo fiz uma montagem de como gostaria que ficasse o relatório, quebrado por ETAPA.


Report PDF2.PNG

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.

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.

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);
        }

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

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);
}
}


Report PDF_Quase.PNG

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);
}

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.

$cell_Formulario_Cod_Etapa <-- Errado. deve usar o campo scriptcase, aqui esta formatado para o pdf.

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

Fica difícil tentar avinhar como está no seu código e o resultado.

Não me pareceu fazer como sugeri.

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.


Report PDF_Quase.PNG

manda os dados e a aplicação isso eh simples de se fazer.

Desculpe, mas não sei como manda os dados e a aplicação.

faça um dump das tabelas envolvidas populadas e exporte a aplicação.

Disponibilize num ftp.

Dbo’s: https://mega.co.nz/#!8hMTzCxT!LC_MW1P9DMRn-1W09jjXOJXoD1TDvhnnijG-oYOoZuY

Aplicação: https://mega.co.nz/#!h4MzTBhA!qZBab_AZIO2b_rh943sRSAwgL9Yc6wnuFRQkeeK-YEM

a exportação da aplicação gera um arquivo zip.
Você compactou a pasta da aplicação publicada.

ok, vi isso agora mesmo.
aplicação exportada: https://mega.co.nz/#!h5MXSDaD!46FrW1cSOKD7OfKsFHmocenigGFpDJcrjN9JrUQEifU

e qual o banco de dados que vc utiliza?
não veio com os dados como podemos simular sem os dados?