Forums Neueste Beiträge
 

Crystal Report leeren Bericht

15/08/2008 - 10:46 von Michael Pleick | Report spam
Hallo Leute,

ich speicher die Daten eines Angebots in einer Datenbank und möchte diese
nun drucken. Dazu verwende ich folgenden Code:

Sub showPreview()
Dim oRpt As ReportDocument = New ReportDocument
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue

' Legt den Namen des Parameterfeldes fest; der Name muss mit
' einem Parameter im Bericht übereinstimmen.
discreteVal.Value = AB 'AB enthàlt die Angebotsnummer
paramField.ParameterFieldName = "AN"
paramField.CurrentValues.Add(discreteVal)
' Fügt den Parameter zur Auflistung der Parameterfelder hinzu.
paramFields.Add(paramField)

Dim r As Long = discreteVal.Value
'um die Geschwindigkeit des Ausdrucks zu erhöhen erzeuge ich ein
neues
'Dataset, das lediglich die für die Rechnung notwendigen Datensàtze
enthàlt
Dim DS As New DataSet
DS.Merge(SQL_Daten("Angebote", "select * from Angebote where AN=" &
r & ""))
DS.Merge(SQL_Daten("Angebote_Details", "select * from
Angebote_Details where AN= " & r & ""))
'MsgBox(DS.Tables("Angebote_Details").Rows.Count)

oRpt = New Angebot
oRpt.SetDataSource(DS)

With Me.CrystalReportViewer1
.Top = 25 : .Left = 0
.Width = Me.Width
.Height = Me.Height - 25
.ParameterFieldInfo = paramFields
.ReportSource = oRpt
.DisplayGroupTree = False
End With

End Sub

Der Code ist sicher nicht optimal, da ich wahrscheinlich wegen des
verwendeten SQL-Strings beim Ladens des Datasets auf die Parameter verzichten
kann.
Mit der MsgBox habe ich geprüft, ob sich auch Daten im Dataset befinden. Die
Textfelder kann ich in der Vorschau auch sehen, aber keine Daten.

Was mache ich falsch?

Gruß

Michael Pleick
 

Lesen sie die antworten

#1 Peter Fleischer
15/08/2008 - 11:11 | Warnen spam
"Michael Pleick" schrieb im
Newsbeitrag news:

ich speicher die Daten eines Angebots in einer Datenbank und möchte diese
nun drucken. Dazu verwende ich folgenden Code:

Sub showPreview()
Dim oRpt As ReportDocument = New ReportDocument
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue

' Legt den Namen des Parameterfeldes fest; der Name muss mit
' einem Parameter im Bericht übereinstimmen.
discreteVal.Value = AB 'AB enthàlt die Angebotsnummer
paramField.ParameterFieldName = "AN"
paramField.CurrentValues.Add(discreteVal)
' Fügt den Parameter zur Auflistung der Parameterfelder hinzu.
paramFields.Add(paramField)

Dim r As Long = discreteVal.Value
'um die Geschwindigkeit des Ausdrucks zu erhöhen erzeuge ich ein
neues
'Dataset, das lediglich die für die Rechnung notwendigen Datensàtze
enthàlt
Dim DS As New DataSet
DS.Merge(SQL_Daten("Angebote", "select * from Angebote where AN=" &
r & ""))
DS.Merge(SQL_Daten("Angebote_Details", "select * from
Angebote_Details where AN= " & r & ""))
'MsgBox(DS.Tables("Angebote_Details").Rows.Count)

oRpt = New Angebot
oRpt.SetDataSource(DS)

With Me.CrystalReportViewer1
.Top = 25 : .Left = 0
.Width = Me.Width
.Height = Me.Height - 25
.ParameterFieldInfo = paramFields
.ReportSource = oRpt
.DisplayGroupTree = False
End With

End Sub

Der Code ist sicher nicht optimal, da ich wahrscheinlich wegen des
verwendeten SQL-Strings beim Ladens des Datasets auf die Parameter
verzichten
kann.



Hi Michael,
mir scheint, dass die Filtern in der WHERE-Klausel und der Filter im Report
das gleiche Ziel haben. Ich würde ausschließlich mit der WHERE-Klasuel
arbeiten, um die zu ladende Datenmenge in Grenzen zu halen.

Mit der MsgBox habe ich geprüft, ob sich auch Daten im Dataset befinden.
Die
Textfelder kann ich in der Vorschau auch sehen, aber keine Daten.

Was mache ich falsch?



Hast du mal geprüpft, ob das übergebene DataSet mindestns genau die Tabellen
und Felder einhàlt die der Report benötigt. Wenn da etwas nicht stimmt, dann
bleibt der Report leer.

Viele Grüsse
Peter

Ähnliche fragen