none
ReportViewer com DataSet dinâmico e layout baseado em arquivo XML. RRS feed

  • Pergunta

  • Bom dia, srs.

    Já li vários tópicos sobre DataSet dinâmico no ReportViewer e não consegui implementar nenhum deles, pois tenho um complicador.

    O layout do relatório (que na verdade é a impressão de recibos personalizados pelo cliente) é configurável num arquivo XML.
    Nesse arquivo eu defini QUAIS campos serão impressos, ONDE (margem superior e esquerda) e com qual FONTE (tipo, tamanho).

    Ou seja, não consigo criar o .rdlc em tempo de projeto, é tudo em tempo de execução, inclusive o dataset.
    Pra complicar um pouquinho (mas foge um pouco do assunto do fórum), há ainda a conversão de um dos campos tipo int em código de barras EAN13.
    Este campo específico eu defino as margens superior e esquerda, altura e largura (já que o código de barras vira um picturebox).

    Estou há semanas andando em círculos e não saio do lugar... alguém pode me ajudar?

    Obrigado.

    Carlos Schildberg.

    terça-feira, 20 de agosto de 2013 16:02

Todas as Respostas

  • Olá Carlos,

    Estive pesquisando alguma forma de ajudar na sua dúvida mas não ficou muito claro o que você precisa exatamente e qual o problema que você está enfrentando quando tenta trbalhar com o DataSet. Você poderia detalhar essa questão e qual o problema que está tendo, versões e linguagem utilizados?

    quarta-feira, 21 de agosto de 2013 12:56
  • Sim, claro!

    VS2010, C# Windows Forms, SQL Server 2008 R2.

    Tenho uma situação onde preciso determinar em um arquivo externo (escolhi um XML), configurações de tamanho de página, campos a serem impressos, etc. - como se fosse uma configuração de impressão de NF (cada empresa tem a sua).

    Como não sei (em tempo de projeto) quais campos vou imprimir (pode variar) e nem em que posição na página, não tenho como criar um layout de relatório.

    Como também não sei quantos recibos serão impressos (o usuário que escolhe), preciso gerar o dataset dinamicamente, usando "SELECT TOP"  e passando a quantidade de registros como parâmetro para uma StoredProcedure

    Gerar o dataset em tempo de execução eu já consegui.

    Criar e ler o arquivo xml com as configurações, também.

    O que não consigo fazer é montar o .rdlc em tempo de execução com base nesse arquivo de configurações;
    Também não consigo atualizar o dataset no report.

    Conteúdo do xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <GeneralConfig>
      <PaperSize>A4</PaperSize>
      <Orientation>Retrato</Orientation>
      <TopMargin>1</TopMargin>
      <LeftMargin>2</LeftMargin>
      <Font>Arial</Font>
      <TktsPerPage>3</TktsPerPage>
      <TktHeight>9</TktHeight>

      <Fields>
        <PF>TelRes</PF>
        <TM>4</TM>
        <LM>4</LM>
        <FS>9</FS>

        <PF>TelCom</PF>
        <TM>5</TM>
        <LM>5</LM>
        <FS>9</FS>

        <PF>TelCel</PF>
        <TM>6</TM>
        <LM>6</LM>
        <FS>10</FS>

        <PF>Contribuinte</PF>
        <TM>7</TM>
        <LM>8</LM>
        <FS>8</FS>

    <BC>Numero</BC>
    <X1>9</X1>
    <Y1>3</Y1>
    <FSBC>11</FSBC>
    <Width>6</Width>
    <Height>1</Height>

      </Fields>

        <!-- 
        Configuracoes especificas de cada campo impresso:
        PF - PrintedField:  Alias de Campo existente na StoredProcedure SQL [pRecibosPrint] 
        TM - Top Margin (em cm)
        LM - Left Margin (em cm)
        FS - Font Size(padrao Windows)
        BC - BarCode (Código de Barras padrão EAN13 baseado no campo <Numero> - Como ele vira um PictureBox, determino aqui a posição na folha, largura e altura - converto tudo de cm para Px depois).  
        -->

    </GeneralConfig>


    segunda-feira, 26 de agosto de 2013 20:10