Report Pdf usando 3 subselect

Prezados,

      Boa tarde ! Estou com um problema que tem meu causado muita dificuldades e não encontrei a forma de resolve-lo.
  • Criei um Relatório de Orçamento, onde tenho Dados de um cliente e seu respectivo veiculo, logo em seguida criei 3 sub-selects, nos seguintes moldes:

1° - Traz a relação das peças usadas.
2° - Traz a mão de obra a ser aplicada.
3° - Traz as formas de pagamento.

   Até este momento tudo funciona, porém quando um dos sub-selects tem muitas informações ele sobrepõe começa a sobrepor as informações, eu gostaria de saber como fazer para que em um caso desse fosse criado uma outra pagina para os sub-selects posteriores.

Att

Rodrigo Bento

rodrigo_alves_bento, poste uma imagem do erro para facilitar o entendimento.

Prezados, conforme solicitado segue imagem observe que o serviços e mão de obravam avançam sobre as informações financeiras.

Atenciosamente,

rodrigo

Verifica o valor que você esta setando para eixo Y do terceiro suselect

Bom dia !

      Não consegui entender muito bem sua pergunta mas segue a parte do código que trata informações de Produtos e Serviços:

//*********************************** PRODUTOS *************************************

        foreach ({produtos} as $NM_ind => $Dados)
        { 
            sc_pdf_print_sub_sel($cell_produtos_qtde[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_codigo[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_produto[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_g_km[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_g_meses[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_vl_unit[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_valor[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_fornecedor[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_xid[$NM_ind]);
            sc_pdf_ln(5);
        }

sc_pdf_set_y(160); // Encerramento da parte deprodutos

//*********************************** SERVIÇOS *********************************************
foreach ({servicos} as $NM_ind => $Dados)
{
sc_pdf_print_sub_sel($cell_servicos_qtde[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_codigo[$NM_ind]);
sc_pdf_print_sub_sel_mult($cell_servicos_produto[$NM_ind], 4.2333333333333);
sc_pdf_print_sub_sel($cell_servicos_g_km[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_g_meses[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_vl_unit[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_valor[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_func[$NM_ind]);
sc_pdf_print_sub_sel($cell_servicos_xid[$NM_ind]);
sc_pdf_ln(5);
}
sc_pdf_line(5,150,205,150);
sc_pdf_line(5,160,205,160);
sc_pdf_text(‘10’,‘155’, ‘Qtde.’);
sc_pdf_text(‘25’,‘155’, ‘Codigo.’);
sc_pdf_text(‘45’,‘155’, ‘Servicos e Mao de Obra.’);
sc_pdf_text(‘110’,‘155’, ‘G.KM/mes.’);
sc_pdf_text(‘145’,‘155’, ‘Vl. Unit.’);
sc_pdf_text(‘175’,‘155’, ‘Vl. Total.’);

sc_pdf_set_y(205); // Encerramento do serviços

Atenciosamente

Rodrigo

Verifique a posição que os dados do terceiro bloco. Você esta setando o eixo Y em 205 mude para 230 por exemplo e veja o resultado.

sc_pdf_set_y(205); // Encerramento do serviços
sc_pdf_set_y(230); // Encerramento do serviços

Cleidson,

    Obrigado pela atenção que tem me dado, mas na verdade não queria alterar o eixo y uma vez que estou delimitando o tamanho do subselect o que eu gostaria e que alcançado o tamanho máximo do eixo y automaticamente fosse criada uma nova pagina para terminar de preencher as informações.

Atenciosamente,

Rodrigo

Você pode fazer da seguinte forma.

[ol][li]Usar a função sc_pdf_get_y() para obter a posição do eixo Y[/li]
[li]Usar um IF, para verificar se o valor do eixo Y é o que você quer[/li]
[li]Se o valor do eixo Y for o que você quer, use a função sc_pdf_add_page (“orientacao”) que vai adicionar uma nova pagina[/li][/ol]

Verifica se isso te atende, se não atender é só avisar.

Bom dia Cleiderson,

          O Sr. consegue me dar um exemplo como funcionária este IF ?

Atenciosamente,

Rodrigo Bento

$pdf->GetY() = Retorna o valor usado no eixo Y
$aux = tamanho das linhas do seu relatório exemplo 6, 8 …
$h = Altura da pagina menos altura do rodapé.

[b]if($pdf->GetY()+$aux>=$h){

$pdf->AddPage();

}[/b]

Prezado Cleiderson,

        Seu auxilio tem sido muito útil, vou lhe mandar abaixo como ficou o código fonte para que vc possa ter uma ideia de como implementei, contudo observe que ao criar uma nova pagina ele não gera a estrutura da pagina anterior, tem como resolver isso ?


        foreach ({produtos} as $NM_ind => $Dados)
        { 

            sc_pdf_print_sub_sel($cell_produtos_qtde[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_codigo[$NM_ind]);
            sc_pdf_print_sub_sel_mult($cell_produtos_produto[$NM_ind], 3.4577777777778);
            sc_pdf_print_sub_sel($cell_produtos_g_km[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_g_meses[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_vl_unit[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_valor[$NM_ind]);
            sc_pdf_print_sub_sel($cell_produtos_fornecedor[$NM_ind]);
            sc_pdf_ln(4);

$pdf->GetY();
$aux = 9;
$h = 170;

if($pdf->GetY()+$aux>=$h){

$pdf->AddPage(Retrato);
}
}

sc_pdf_set_y(170);

        foreach ({servicos} as $NM_ind => $Dados)
        { 
            sc_pdf_print_sub_sel($cell_servicos_qtde[$NM_ind]);
            sc_pdf_print_sub_sel($cell_servicos_codigo[$NM_ind]);
            sc_pdf_print_sub_sel_mult($cell_servicos_produto[$NM_ind],  2.211);
            sc_pdf_print_sub_sel($cell_servicos_g_km[$NM_ind]);
            sc_pdf_print_sub_sel($cell_servicos_g_meses[$NM_ind]);
            sc_pdf_print_sub_sel($cell_servicos_vl_unit[$NM_ind]);
            sc_pdf_print_sub_sel($cell_servicos_valor[$NM_ind]);
            sc_pdf_print_sub_sel($cell_servicos_fornecedor[$NM_ind]);
            sc_pdf_ln(4,5);
			
        }

sc_pdf_set_y(220);

        foreach ({financeiro} as $NM_ind => $Dados)
        { 
            sc_pdf_print_sub_sel($cell_financeiro_parcela[$NM_ind]);
            sc_pdf_print_sub_sel($cell_financeiro_n_doc[$NM_ind]);
            sc_pdf_print_sub_sel($cell_financeiro_valor[$NM_ind]);
            sc_pdf_print_sub_sel($cell_financeiro_data_venc[$NM_ind]);
            sc_pdf_print_sub_sel($cell_financeiro_data_pgto[$NM_ind]);
            sc_pdf_print_sub_sel($cell_financeiro_documento[$NM_ind]);
			sc_pdf_ln(4);
            //sc_pdf_sub_sel_end(5);
        }

sc_pdf_set_y(240);
/-------------------------------------------/

Rodrigo, não vou conseguir te ajudar muito com a aplicação report_pdf.

Para evitar estes contratempos, uso a classe TDPDF ou FPDF em uma aplicação do tipo blank.
Desta forma consigo desenvolver os relatórios com mais flexibilidade, talvez alguém do fórum consiga tirar sua duvida.

Se for fazer usando uma das classes que citei, pode contar comigo.

Cleideson,

      Boa Tarde ! Conseguiu sim me ajudar muito, ja deu para entender melhor o meu caso em especifico, gostaria de saber se vc tem a documentação que possa me ajudar para fazer o relatório TDPDF ou FPDF.

Atenciosamente,

Rodrigo Bento

Tenho sim, envio para o seu e-mail.