CR und VB.Net 2003

13/09/2007 - 12:37 von Arnd Löhr | Report spam
Hallo,

ich habe mit CR eine Bericht erstellt, der unsere Arbeitsplàtze darstellt.
Jetzt muss ich aber noch die angeschlossenen Drucker mit ausweisen. Dies
möchte ich mit einem Unterbericht machen. Nur wie? Ich habe den Unterbericht
schon erstellt. Auch schon in den Haupbericht mit eingebunden und die
Verknüpfung erstellt. Jetzt kommt das Problem. Wenn ich den Hauptbericht
aufrufe, fragt er mich nach den Zugangsdaten Servername, Benutzer, Kennwort,
Tabelle. Das dann direkt zwei mal. 1 mal für den Hauptbericht und 1 mal für
den Unterbericht.

Mit folgendem Code rufe ich das ganze auf.

Function Report_APL()
Dim fenster As New frm_Berichtsformular
If editID.Visible = True Then
SQLstring = "..."
End If
fenster.drDetail1 = SQLstring
fenster.drDetail2 = "Arbeitsplatzliste"
fenster.drDetail3 = "VIEW_ARBEITSPLATZ" ' Dies ist eine Dataset aus
einem View

fenster.ShowDialog()
End Function

Im frm_Berichtsformular habe ich folgenden Code drin:

Dim oRpt As rpt_Arbeitsplatzliste
oRpt = New rpt_Arbeitsplatzliste
Call Bericht1(oRpt)
CrystalReportViewer1.DisplayGroupTree = False
CrystalReportViewer1.ShowGroupTreeButton = False
CrystalReportViewer1.ShowPageNavigateButtons = True
CrystalReportViewer1.ShowCloseButton = True
CrystalReportViewer1.ShowGotoPageButton = True
CrystalReportViewer1.ShowExportButton = True
...

Die Function Bericht sieht so aus:

Function Bericht1(ByRef oRpt)
On Error GoTo Errorhandler

cString(JETDB, ConString, ConStringKurz, Benutzer, Server, Kennwort,
Datenbank, Workstation, Schlüssel, DatenbankDaten, DBPfad)
Me.OleDbConnection1.ConnectionString = ConString

Dim odataset As DataSet
Dim oadapter As OleDbDataAdapter
Dim sConstring As String = ConString

Dim oConnection As New OleDb.OleDbConnection(sConstring)
Dim sSql_Statement As String = Übergabe1
odataset = New Data.DataSet
oadapter = New OleDb.OleDbDataAdapter(sSql_Statement, oConnection)
oConnection.Open()
oadapter.Fill(odataset, Übergabe3)
oConnection.Close()
oRpt.SetDataSource(odataset)
With CrystalReportViewer1
.ReportSource = oRpt
End With
Exit Function
Errorhandler:
Select Case Err.Number
Case Else
MsgBox(Err.Number & ": " & Err.Description, , "Fehler bei
Bericht1")
End Select
End Function

Ich hoffe, es hat jemand eine Idee.

mfg

Arnd
 

Lesen sie die antworten

#1 Volker
13/09/2007 - 14:58 | Warnen spam
Hallo Arnd,

ich weise nach Möglichkeit dem jeweiligen Report die DataSource so zu:

For Each repTab As Table In rep.Database.Tables
If repTab.Location = PrintTable.TableName Then

rep.Database.Tables(repTab.Name).SetDataSource(PrintTable)
Exit For
End If
Next

Wobei rep vom Typ ReportDocument ist und PrintTable eine DataTable.
Evtl mußt du noch zusàtzlich in einer àußeren Schleife Reports im
ReportDocument iterieren.

Gruß
Volker

Ähnliche fragen