• Lunes 29 de Abril de 2024, 06:15

Autor Tema:  crystal reports, 1 dataset con 2 columnas  (Leído 5363 veces)

streamercrow

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: mx
    • Ver Perfil
crystal reports, 1 dataset con 2 columnas
« en: Martes 5 de Julio de 2011, 20:41 »
0
Hola! soy nuevo en el foro, recientemente se me presento un problema.
necesito pasar a un reporte de Crystal Reports 2008 columnas de 2 datagrids el  contenido del primer datagrid esta en el Dataset1 en la primer columna y lo paso con el siguiente codigo:

Código: C#
  1. DataSet2 dg = new DataSet2();
  2.                     int filas = (dgv1.Rows.Count);
  3.                     for (int i = 0; i <= filas - 2; i++)
  4.                     {
  5.                         dg.Tables[0].Rows.Add
  6.                             (new object[]{
  7.                    
  8.                     dgv1[0,i].Value.ToString(),
  9.                     dgv1[1,i].Value.ToString(),
  10.                     dgv1[2,i].Value.ToString(),
  11.                     dgv1[3,i].Value.ToString(),
  12.                     dgv1[4,i].Value.ToString()              
  13.                      
  14.                                                          
  15.                     });
  16.                     }
  17.                     CrystalReport1 orep1 = new CrystalReport1();
  18.                     orep1.Load();
  19.                     orep1.SetDataSource(dg);
  20.                     crystalReportViewer1.ReportSource = orep1;
  21.  

y me funciona, solo que unicamente se llena el DataTable1 del dataset1 y no se como podria hacer para llenar el DataTable2 ya que en el codigo no veo ninguna referencia a los DataTables, entonces mi suposicion es que solo se debe cambiar la parte:
Código: C#
  1. dg.Tables[0].Rows.Add
  2.  
por
Código: C#
  1. dg.Tables[1].Rows.Add
  2.  
y obviamente declarar nuevos objetos, algo asi:

Código: C#
  1.   DataSet2 dg3 = new DataSet2();
  2.                     int filas2 = (dgv2.Rows.Count);
  3.                     for (int i = 0; i <= filas2 - 2; i++)
  4.                     {
  5.                         dg3.Tables[0].Rows.Add
  6.                             (new object[]{
  7.                    
  8.                     dgv2[0,i].Value.ToString(),
  9.                     dgv2[1,i].Value.ToString(),
  10.                     dgv2[2,i].Value.ToString(),
  11.                     dgv2[3,i].Value.ToString(),
  12.                     dgv2[4,i].Value.ToString()
  13.                                              
  14.                     });
  15.                     }
  16.                     CrystalReport1 orep2 = new CrystalReport1();
  17.                     orep2.Load();
  18.                     orep2.SetDataSource(dg3);
  19.                     crystalReportViewer1.ReportSource = orep2;
  20.  

es decir en un boton pongo el primer codigo y luego este y no me da error pero en el crystal reports ya no me carga ninguna columna, ya agregue las columnas del DataTable2 al diseñador de crystal pero no me funciona. El motivo de hacerlo en 2 DataTables es que los 2 datagrids tienen una cantidad de datos distintas.

sospecho que el error esta en el ReportSource pero no se como hacer para que el Source sean los dos objetos Orep1 y Orep2.  :wacko:
espero me puedan ayudar, cualquier cosa que no me haya sabido explicar me dicen y con muchisimo gusto aclaro.
saludos!!! ^_^
XD

streamercrow

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: mx
    • Ver Perfil
Re: crystal reports, 1 dataset con 2 columnas
« Respuesta #1 en: Miércoles 6 de Julio de 2011, 19:26 »
0
en serio nadie sabe???  :(
XD

gerloxxx

  • Miembro MUY activo
  • ***
  • Mensajes: 121
    • Ver Perfil
Re: crystal reports, 1 dataset con 2 columnas
« Respuesta #2 en: Viernes 8 de Julio de 2011, 16:11 »
0
La verdad no entiendo bien tu pregunta... no crees que te funcione meter dos subreportes y a cada uno le pasas un dateset diferente...

saludos

streamercrow

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: mx
    • Ver Perfil
Re: crystal reports, 1 dataset con 2 columnas
« Respuesta #3 en: Lunes 11 de Julio de 2011, 20:30 »
0
subreportes? no se mucho de crystal reports, voy  ver como funciona lo que dices. gracias por responder.  ^_^
XD

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: crystal reports, 1 dataset con 2 columnas
« Respuesta #4 en: Lunes 11 de Julio de 2011, 21:30 »
0
Lo que quieres hacer es meter datos de 2 tablas diferentes en un reporte?..  y tú problema es que sólo te ingresa la primera tabla?..
@gabio87

streamercrow

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: mx
    • Ver Perfil
Re:crystal reports, 1 dataset con 2 columnas
« Respuesta #5 en: Viernes 22 de Julio de 2011, 00:08 »
0
exacto!!!! ya intente varias cosas pero no lo logro... alguien sabe como???
saludos! :guitar:
XD

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:crystal reports, 1 dataset con 2 columnas
« Respuesta #6 en: Viernes 22 de Julio de 2011, 17:53 »
0
Está muy fácil...  te explico.. :

1) Crea la estructura de todas las tablas que vayas a usar en DataTables. (De hecho basta llenarlo con registros de una base de datos y automáticamente crea la estructura por tí, o puedes defirnila manualmente).

2) Llena un DataSet con TODOS tus Datatables que ya haz 'configurado'.

3) Crea un esquema XML de ese DataSet.. ¿como? http://msdn.microsoft.com/es-es/library/system.data.dataset.writexml%28VS.80%29.aspx

Código: C#
  1. //Esta linea te sirve apra crear el esquema xml, solo se necesita hacer UNA VEZ luego que tengas el esquema puedes comentar está linea..
  2. TuDataSet.WriteXml("C:\\ejemplo.xml",XmlWriteMode.WriteSchema);
  3.  

4) Ahora solo tienes que importar ese archivo xml en tu reporte..  ¿como? fácil creas un nuevo reporte, una vez en el reporte te vas a tú Explorador de campos, luego en donde dice "Campos de base de datos", das clic derecho y seleccionas Asistente de Base de datos, luego donde dice "Crear nueva conexión" seleccionas Archivos de base de datos al seleccionarlo te debe abrir una ventana en la cual vas a ubicar tu esquema XML que acabas de crear, luego le das clic en Abrir.. y verás como tu DataSet aparecerá en la pantalla, entonces sólo tienes que seleccionar las tablas que vas a utilizar y pasarlas donde dice "Tablas seleccionas".. y listo.. :D das clic en aceptar y tus tablas aparecerán en tú Explorador de campos..

5)Ahora cuando vayas a llamar a tu reporte desde tú código obviamente tienes que llenar tus datatables con datos y luego agregarlos a tú DataSet...

6) El objeto que crees de tu reporte se debes pasar un DataSource, tu DataSource deberá ser tu DataSet.. ejemplo:

Código: C#
  1.    Reportes.CrystalReports.ReporteMateriales rpt = new Reportes.CrystalReports.ReporteMateriales();
  2.             rpt.SetDataSource(DSMateriales); //DSMateriales es mi DataSet.
  3.  


Espero te sirva ... :)... saludos
@gabio87

streamercrow

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: mx
    • Ver Perfil
Re:crystal reports, 1 dataset con 2 columnas
« Respuesta #7 en: Sábado 23 de Julio de 2011, 20:06 »
0
Muchas gracias por responder gabio2!!! mas o menos comprendo lo que dices pero tengo dudas en el paso 5, como lleno los datatables?
disculpa si la pregunta es tonta, soy muy novato :losiento:. como especifico en que datatable se va a llenar?

y al crear el esquema xml la linea donde la pongo? en un nuevo archivo de codigo.cs o como?

nuevamente me disculpo por mi total ignorancia respecto al tema.

te cuento que tambien encontre esto:http://ltuttini.blogspot.com/2009/12/c-crystal-reports-usar-dataset-tipado.html ahora mismo no puedo probar porque estoy fuera pero en cuanto pueda lo pruebo y te comento como me fue.

Nota:utilizo ADO.NET. :nosweat:

Saludos!! :smartass:

XD

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:crystal reports, 1 dataset con 2 columnas
« Respuesta #8 en: Domingo 24 de Julio de 2011, 03:12 »
0
Ese link que me enviaste es correcto, esa es una forma de llenar tu DataTable.. :)... por cierto en la linea donde creas el XML pones un punto de interrupción, ya que despues que pase el punto tienes que darle STOP a tú aplicación para cargar el xml en el reporte.. y seguir haciendo los pasos que te dije.. luego puedes COMENTAR esa linea de codigo.. YA NO LA VAS A AVOLVER A UTILIZAR.. si no lo quitas tampoco pasa nada pero te va a estar generando UNA y OTRA vez el XML sin sentido alguno.. el XML que te crea Puede o NO tener datos, ya que el Crystal Reports toma  sólo la Estructura de tus tablas.. espero hayas entendido un poco la "lógica" de lo que te acabo de decir.. en caso contrario puedes seguir preguntando. :D
@gabio87