Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBNET2005] DataTable koppelen aan subrapport van CReports

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb een DataSet "MCO" aangemaakt met 2 DataTables "Klanten" en "Aankopen" (in deze 2 tabellen is er een gemeenschappelijk veld nl. nummer of klantnr). Deze 2 DataTables heb ik gevuld met de gegevens van 1 bepaalde klant (mbv select * from...where klantnr = ...)

Als ik nu deze data wil weergeven in een rapport maak ik een nieuw rapport aan met CrystalReports en de wizard (rapport.rpt). Hierbij maak ik een nieuwe OLE DB connectie en voeg de tabellen tblKlanten en tblAankopen toe. Mbv de wizard maak ik verder een standaard rapport (wat ik achteraf nog kan aanpassen). Hierbij staan zowel de data van tblKlanten als tblAankopen langs elkaar (dus de titels op de pageheader...). De link tussen de 2 tabellen is ook via de wizard gelegd.

Ik vraag dit rapport op mbv volgende code
Visual Basic .NET:
1
2
3
4
dim objReport as New rapport
objReport.SetDataSource(objDataSet.Tables("Klanten"))
frmRapport.CrystalReportViewer1.ReportSource = objReport
frmRapport.Show

Het rapport wat ik nu zie bevat wel de juiste data (mede door de link tussen de 2 tabellen), maar eigenlijk wil ik de aankopen zien onder de regel met de klantgegevens... Dus in een subrapport.

Als ik nu een 2de rapport aanmaken met de aankopen in en deze in het 1ste rapport plak (in de detailsectie) mbv insert - subreport (en weer de wizard doorlopen om de link te leggen tussen de 2 tabllen, ...) dan werkt dit op zich wel.

Maar is het niet nodig dat ik ook mijn DataTable "Aankopen" hieraan koppel?
Visual Basic .NET:
1
2
3
4
5
6
7
dim objReport as New KlantenRapport
dim objReport2 as new AankopenRapport
objReport.SetDataSource(objDataSet.Tables("Klanten"))
objReport2.SetDataSource(objDataSet.Tables("Aankopen"))
frmRapport.CrystalReportViewer1.ReportSource = objReport
' ? hoe nu objReport2 koppelen aan het subrapport ?
...


Op zich werkt het werken via de wizard wel voor het subrapport, maar hierna moet ik (waarschijnlijk) 2 parameters mee naar het rapport versturen om bepaalde velden te berekenen (die niet in de tabellen voorkomen).

Ik zou dus graag weten of dit de juiste manier is, of als ik dit op een betere manier moet aanpakken? Dank alvast voor de hulp

[edit]Is het ook mogelijk om 2 waardes uit een tekstvak van een formulier mee te geven als parameter naar het rapport (om met die 2 waardes daar een berekening te doen op 1 van de tabelvelden)

[ Voor 4% gewijzigd door mmy841 op 15-10-2007 11:47 ]


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb wat zitten opzoeken ivm variables aan een rapport geven. Als ik een rapport open, dan vraagt deze eerst naar 2 waardes. Deze waardes kan ik wel gebruiken in mijn functie, maar dan kan ik nog steeds geen algemeen totaal van deze functie maken... :(

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:17
redelijk uitgebreide walkthrough met oa voorbeelden hoe je parameters doorgeeft aan je rapport

http://www.businessobject...e/VS2005_Walkthroughs.pdf

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Bedankt voor de link, het deel over formules lijkt al zeer handig te zijn.

Maar ik denk eigenlijk niet dat ik gebruik kan maken van parameters die ik moet doorgeven aan het rapport.

Deze 2 parameters kan ik wel gebruiken in een functie (in de detailsectie van het subrapport), maar dan kan ik uiteindelijk nog geen totaal maken van deze functie.

Nu was ik aan het denken aan de volgende manier:
1) maak een kopie van de tabel tblAankopen en noem deze tblAankopenNieuw (mbv select * into)
2) voeg 2 kolommen toe (bv. A en B )
3) doe een update en vul kolom A en B in met de waardes van textbox1 en textbox2
4) maak het rapport op basis van tblAankopenNieuw
5) in dit rapport een functie maken die de velden A en B gebruikt om de juiste waarde te krijgen
6) in een testvoorbeeld leek het me wel te lukken om nu een totaal van de functie te maken

OF: stap 1 en 2 overslaan en in de originele tabel reeds 2 extra kolommen (A en B ) toevoegen. Deze updaten als we een rapport opvragen. Vervolgens kan ik weer het veld A en B gebruiken in de functie en uiteindelijk een som maken...

Verwijderd

Copieren naar tblAankopenNieuw lijkt me niet handig of nuttig, en die 2 selectie-kolommen standaard aan je tabel toevoegen al helemaal niet.
Ik zou gaan voor een stored procedure of een user defined function die een dataset teruggeeft waar je die 2 parameters aan kunt voeren. Qua performance is dat m.i. de beste oplossing, en je houdt je database schoon.

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Als test heb ik een kopie van mijn originele tabel gemaakt met de 2 extra kolommen. Dit lijkt wel te werken, maar de functie in Crystal Reports schrijven is ook niet echt simpel en overzichtelijk.

In Access was er een mogelijkheid om in de query aan een bepaalde kolom een functie te koppelen.
Bijvoorbeeld: berekendveld: functienaam([kolom1];[kolom2];.....)

in "functienaam" kon ik vervolgens een aantal berekeningen doen mbv de waarde uit kolom1, kolom2, ... Het resultaat van de berekening werd terug gegeven en kwam dan in de kolom "berekendveld" te staan.

Is dit dezelfde manier als een stored procedure of een user defined function? Zoja, dan zal ik me hier toch in moeten gaan verdiepen want ik zie niet echt een andere manier...
Pagina: 1