none
Crystal Reports – Insertar campo de una tabla en cabecera de pagina

    Pregunta

  • Hola a todos:

     

    Tengo un problemilla con el Crystal Reports. Yo trabajo con c# y tengo que diseñar un formulario para impresión. El problema que tengo es que en la cabecera del formulario quiero mostrar los datos de la empresa. Bien, pues esos datos los tengo almacenados en una tabla “Configuración” en SQL Server. Lo que he hecho ha sido crearme un DataSet con el asistente que me acceda a esa tabla. Luego desde el Crystal Reports utilizando el “Field Explorer” agrego dicho dataset. Una vez hecho esto me permite arrastrar los campos de la tabla que tengo en el dataset al documento de Crystal Reports. Yo concretamente para hacer la prueba arrastro el campo del nombre de la empresa a la cabecera de la página y cuando compilo no me sale ningún dato en el lugar donde he puesto el campo. El resto de datos sí que se me muestran en la línea de detalle, pero esos datos pertenecen a otra tabla que me he creado dinámicamente para mostrar los datos que a mí me interesan, pero con eso no tengo problema.

    He comprobado que el dataset que contiene la tabla de configuración tenga conexión con la base de datos, y efectivamente tiene conexión ya que me abro desde el propio dataset, con el asistente una previsualización de los datos, y me los muestra sin problemas.

    Me sería de mucha ayuda que alguien me echara un cable. Lo que necesito básicamente es poder poner en un documento de Crystal Reports un campo de una tabla para que me muestre el contenido de dicho campo. Realmente la tabla de donde quiero coger el campo tan sólo tiene un único registro, ya que son datos de configuración de la aplicación, con lo cual no tendría ni que filtrar la tabla.

    Espero que me puedan ayudar.

    Muchas gracias a todos.

     

    domingo, 11 de enero de 2009 0:38

Respuestas

  • oye amigo a como te entendí lo q puedes hacer es:

    crear un adaptador para llenar la tabla de tu dataset

    con los datos que tu necesitas

     

    //declaras un puente para entre la BD y el Dataset 

    dataadapter adap =new dataadapter("instrucciónSQL","Conexión");

    //creas un objeto del dataset

    Dataset ds=new Dataset();

    //llenas la tabla del dataset

    adap.Fill(ds.nombretabla);

    //creas un objeto del crystalr que diseñastes

    Crystalreports cr=new Crystalreports();

    //estableces el origen de datos para el crystalr

    cr.DataSource=ds;

     

    espero que te sirva

     

    domingo, 11 de enero de 2009 20:30

Todas las respuestas

  • oye amigo a como te entendí lo q puedes hacer es:

    crear un adaptador para llenar la tabla de tu dataset

    con los datos que tu necesitas

     

    //declaras un puente para entre la BD y el Dataset 

    dataadapter adap =new dataadapter("instrucciónSQL","Conexión");

    //creas un objeto del dataset

    Dataset ds=new Dataset();

    //llenas la tabla del dataset

    adap.Fill(ds.nombretabla);

    //creas un objeto del crystalr que diseñastes

    Crystalreports cr=new Crystalreports();

    //estableces el origen de datos para el crystalr

    cr.DataSource=ds;

     

    espero que te sirva

     

    domingo, 11 de enero de 2009 20:30
  • Hola irvinpc muchas gracias por tu respuesta pero el problema que tengo es que ya me he creado un dataset en el cual tengo almacenada la tabla temporal que yo me he creado para mostrar los datos que necesito en el report. Esta tabla temporal la lleno utilizando una instrucción sql y luego un DataAdapter para llenar la tabla temporal que está dentro del dataset.

    La cosa está en que esa tabla temporal de la que te hablo la vinculo al Crystal Report, pero no de la forma que tú me dices sino así:

     

    DataSet ds = DevuelveDataSet();

    CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new ReportDocument();

    rd.Load(@"G:\Datos\Trabajo\Informatica\Desarrollo Software\Pruebas Visual Studio\Aplicaciones Prueba\AccesoDatos\CrystalReport3.rpt");

    rd.SetDataSource(ds);

    foreach (CrystalDecisions.CrystalReports.Engine.ReportDocument sr in rd.Subreports)

    {

      if (sr.Database.Tables.Count > 0)

      {

        sr.SetDataSource(ds);

      }

    }

    this.crystalReportViewer1.ReportSource = rd;

    this.crystalReportViewer1.Show();

     

      La función "DevuelveDataSet()" me devuelve un dataset que contiene la taba termporal que utilizo para mostrar los datos en el report. La cosa está en que en dicha tabla temporal no tengo los datos de la empresa y es por ello que necesito otro dataset que me contenga en una tabla los datos de configuración de la aplicación. Por ello en tiempo de diseño me creo un dataset con el asistente para incluirle la tabla de configuración. Todo esto lo puedo hacer sin problemas pero cuando intento arrastar uno de los campos de la tabla desde el "Field Explorer" a la cabecera del report, cuando compilo y ejecuto en la posición donde he puesto el campo no me aparece nada de nada.

     

    Espero haberme esplicado mejor ahora, para ver si así me puedes ayudar.

     

    Muchas gracias por todo.

     

    Un saludo.

    lunes, 12 de enero de 2009 10:43