Hallo,
ich habe mich mal an Crystal Reports versucht (Aufbau wie mit dem Tip ausm Forum http://www.vbarchiv.net/tipps/details.php?id=1266 ).
Das ganze hat bei meinem ersten Report auch wunderbar funktioniert nun bin ich gleich dazu übergeganen einen zweiten zu implementieren ... und an diesem hänge ich nun schon wieder seit heute vormittag.
Ich übergebe mehrere Tables in meinen Bericht, enthalten sind alle Felder aus allen Tabellen und diese übergebe ich auch im dataset an die Reportdatei.
Erstmal der Code der Übergabe:
Dim dt As New DataTable
Dim sSql As String
Dim kd As New KundenNeu
Select nAuswertungsArt
Case 0 'Registernachweis - dieser funktioniert
Dim crDoc As New Registernachweis
sSql = "SELECT ven.ID, ven.kd_id, ven.anlagen_id, ven.stoff_id," & _
"ven.jahr, " & _
"ven.VEN_Nr, ven.VEN_datum, ven.Laufzeit, ven.ana_klein," & _
"ven.laufzeit_klein, " & _
"ven.ana_gross, ven.laufzeit_gross, kunden.id," & _
"kunden.kdnr, kunden.kd_name, kunden.bemerkung, " & _
"anlagen.id, anlagen.nr, anlagen.bez, stoffe.id," & _
"stoffe.nr, stoffe.bez " & _
"FROM ((ven INNER JOIN kunden ON ven.kd_id = kunden.id)" & _
"INNER JOIN anlagen ON ven.anlagen_id = anlagen.id) " & _
"INNER JOIN stoffe ON ven.stoff_id = stoffe.id WHERE" & _
"ven.id=" & nAbfrageID
dt = kd.FillDataTableWithSQL(sSql, "ven")
If dt IsNot Nothing Then
crDoc.SetDataSource(dt)
With CrystalReportViewer1
.ReportSource = crDoc
.ShowFirstPage()
End With
End If
Case 1 'Kunden - VEN Auswertung
Dim crDoc As New Ausw_KdVEN
sSql = "SELECT kunden.id, kunden.kdnr, kunden.kd_name," & _
"kunden.bemerkung, ven.ID, ven.kd_id, ven.anlagen_id, " & _
"ven.stoff_id, ven.jahr, ven.VEN_Nr, ven.VEN_datum," & _
"ven.Laufzeit, ven.ana_klein, ven.laufzeit_klein, " & _
"ven.ana_gross, ven.laufzeit_gross, " & _
"anlagen.id, anlagen.nr, anlagen.bez, stoffe.id," & _
"stoffe.nr, stoffe.bez " & _
"FROM ((kunden INNER JOIN ven ON kunden.id = ven.kd_id)" & _
"INNER JOIN anlagen ON ven.anlagen_id = anlagen.id) " & _
"INNER JOIN stoffe ON ven.stoff_id = stoffe.id " & _
"WHERE kunden.id=" & nAbfrageID
dt = kd.FillDataTableWithSQL(sSql, "ven")
If dt IsNot Nothing Then
'crDoc.DataDefinition.Dispose()
crDoc.SetDataSource(dt)
With CrystalReportViewer1
.ReportSource = crDoc
.ShowFirstPage()
End With
End If
Case Else
MsgBox("Noch nicht implemtiert")
Me.Close()
End Select
kd.Dispose()In Bericht1 (Registernachweis) sind keine Detaildaten vorhanden, nur der Seitenkopf mit einzelnen Datenfeldern. Im 2 Bericht (Ausw_KdVEN) sollte ich 2 Detailsätze bekommen, die Datatable gibt auch nur 2Rows zurück und der SQL String wenn ich diesen ins Access kopiere ebenfalls. Füge ich jetzt das Feld kunden.kdnr in den Detailbereich ein bekomme ich 2 Datensätze in der Vorschau, verwende ich jedoch ein Feld aus der Table ven bekomme ich gleich 93 Seiten
Muss ich irgendwie die Detaildaten extra steuern (kenne ich zumindest von List&Label).
Vielleicht kann mir wer nen Tip geben was ich vergessen oder übersehen habe.
Achja Datenbank ist Access.
Edit: nochmal ein Screenshot vom CR Bericht im EditMode:
mfg
Sebastian
Beitrag wurde zuletzt am 13.03.11 um 15:36:56 editiert. |