Toon posts:

[C#] DataTable als DataSource Crystal Reports

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben bezig om een crystal report te maken, deze wil ik vullen doormiddel van een datatable.

Ik heb dus de datatable:

C#:
1
2
3
4
DataTable dt = new DataTable();
dt.Columns.Add("Kolom1");
dt.Columns.Add("Kolom2");
dt.Columns.Add("Kolom3");


Hier zet ik verschillende rijen in

C#:
1
2
3
4
5
6
7
8
DataRow dr = dt.NewRow();

dr["Kolom1"] = "Waarde1";
dr["Kolom2"] = "Waarde2";
dr["Kolom3"] = "Waarde3";

dt.Rows.Add(dr);
etc..


Nu koppel ik deze vervolgens aan mijn crystal report

C#:
1
CrystalReport.SetDataSource(dt);


Maar nu moet ik mijn crystal report opmaken, hiermee bedoel ik waar ik bijvoorbeeld Kolom1 wil hebben staan. Waar kan ik deze objecten vinden.

Wat ik nu doe is dat ik een classe heb, die dezelfde properties heeft. Deze voeg ik toe, maar dit moet toch ook beter kunnen?

Mijn probleem is eigenlijk dat ik een datatable heb die gevuld is met klanten.

Deze datatable heeft dus informatie over de klanten, ook zit er in deze datatable een column "Telefoon" in. Maar in mijn classe 'Klant' zit die niet, aangezien ik daar 2 properties heb "Telefoon1" en "Telefoon2".

Ik heb dus geen object "Telefoon" terwijl ik deze graag wil laten zien op het report.

Ik hoop dat jullie mijn vraag begrijpen.

Bij voorbaat dank,

  • Shezzie
  • Registratie: Januari 2005
  • Laatst online: 01-12 11:21

Shezzie

Lekker hoor!

De issue komt me bekend voor, na wat googlen ben ik destijds tot het volgende gekomen:

1) Exporteer de lay-out
[code tag]
dtb = new DataTable("Backorders");
dtb.Columns.Add("Artikel");
dtb.Columns.Add("Omschrijving");
dtb.Columns.Add("Aantal");
dtb.Columns.Add("Eenheid");
dtb.WriteXmlSchema(@"c:\backorders.xsd");
dtb.Dispose();
[/code tag]

2) MS tool xsd.exe gebruiken om je class te genereren:
Open een Visual Studio commandprompt en run "xsd.exe /d /l:C# c:\backorders.xsd"

3) Open de backorders.cs en vervang "NewDataSet" overal met je eigen naam bv. dsBackOrders.

4) Voeg de class toe aan je project.

5) Ga naar je .rpt file en open je Database Expert. Kies Project Data, ADO.NET Datasets en voeg je eigen set toe.

6) Als je nu data in je dataset stopt, kan het report ze gebruiken.

Succes.

Verwijderd

Topicstarter
Dank je wel, dit was precies wat ik nodig had

  • Shezzie
  • Registratie: Januari 2005
  • Laatst online: 01-12 11:21

Shezzie

Lekker hoor!

Klein dingetje nog, herinner ik me weer: als je je report run-time creeert, erna met setdatasource() de datatable weer toekennen:

[code tag]
rpt = new ReportDocument();
rpt.Load(@"factuur.rpt");
rpt.Database.Tables["Backorders"].SetDataSource(dsBackOrders);

rpt.Refresh();
rpt.PrintToPrinter(1, false, 0, 0);
[/code tag]

Anders ziet 'ie niet zo veel :)