Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports CrystalDecisions.Windows.Forms Imports CrystalDecisions.ReportSource Imports System.Windows.Forms Public Class frmcrreporting Dim ds As DataTable Dim auswertungnr As Integer Dim dms As New TKB.VV.Utils.MyDocMgmt Dim auswertung As New TKB.Auswertung.clsAuswertung Dim rptfilename As String Dim printparam As Boolean = True Dim StandardAuswertung As Boolean = True Dim CurrentUser As String = "" Sub New(ByRef ds As DataTable, ByVal Auswertungnr As Integer, ByRef auswertung As TKB.Auswertung.clsAuswertung, ByVal printparam As Boolean, Optional currentuser As String = "") InitializeComponent() Me.ds = ds Me.auswertungnr = Auswertungnr Me.auswertung = auswertung Me.printparam = printparam Me.StandardAuswertung = True Me.CurrentUser = currentuser End Sub Sub New(ByRef ds As DataTable, ByVal Auswertungnr As Integer) InitializeComponent() Me.ds = ds Me.auswertungnr = Auswertungnr Me.StandardAuswertung = False End Sub Private Sub frmcrreporting_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Cursor = Cursors.WaitCursor Application.DoEvents() rptfilename = dms.Get_RptDatei(Me.auswertungnr) Dim cr As New ReportDocument cr.Load(rptfilename) If Me.StandardAuswertung = True Then Try Dim crformulas As CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinitions crformulas = cr.DataDefinition.FormulaFields If Me.printparam Then Dim i As Integer Dim s As String = "" For i = 1 To Me.auswertung.ParamCollection.Count If s <> "" Then s = s + "|" s = s + Me.auswertung.ParamCollection.Item(i).ToString Next If Me.CurrentUser <> "" Then s = s + "|Benutzer-ID = " + Me.CurrentUser.ToString End If Try crformulas.Item("Param1").Text = "'" & s & "'" Catch ex As Exception End Try End If Try crformulas.Item("Titel1").Text = "'" & Me.auswertung.TitelZeile1 & "'" Catch ex As Exception End Try Try crformulas.Item("Titel2").Text = "'" & Me.auswertung.TitelZeile2 & "'" Catch ex As Exception End Try Catch End Try 'Dim myTextObjectOnReport As CrystalDecisions.CrystalReports.Engine.TextObject 'Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("txtheader11"), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.TitelZeile1 'Catch 'End Try 'Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("txtheader12"), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.TitelZeile2 'Catch 'End Try 'Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("txtheader21"), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.TitelZeile1 'Catch 'End Try 'End Try ' Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("txtheader22"), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.TitelZeile2 ' Catch ' End Try ' If Me.printparam Then ' Dim i As Integer ' For i = 1 To Me.auswertung.ParamCollection.Count ' Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("param1" & Trim(Str(i))), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.ParamCollection.Item(i).ToString ' Catch ' End Try ' Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("param2" & Trim(Str(i))), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.ParamCollection.Item(i).ToString ' Catch ' End Try ' Next ' Try ' Dim crformulas As CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinitions ' 'myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("fullparam1"), CrystalDecisions.CrystalReports.Engine.TextObject) ' 'myTextObjectOnReport.Text = Me.auswertung.FullParam ' Catch ex As Exception ' End Try ' Try ' myTextObjectOnReport = CType(cr.ReportDefinition.ReportObjects.Item("fullparam2"), CrystalDecisions.CrystalReports.Engine.TextObject) ' myTextObjectOnReport.Text = Me.auswertung.FullParam ' Catch ex As Exception ' End Try ' End If 'Catch ex As Exception 'End Try cr.SetDataSource(ds) '20091005 - SubReport-Connection DBConnection_SubReports(cr) Dim paramfield As ParameterField Dim newValue As New CrystalDecisions.Shared.ParameterDiscreteValue() For Each paramfield In cr.ParameterFields Try If paramfield.Name.Substring(0, 1) = "@" Then paramfield.CurrentValues.Clear() newValue.Value = "" paramfield.CurrentValues.Add(newValue) End If Catch End Try Next CrystalReportViewer1.ShowRefreshButton = False CrystalReportViewer1.ShowCloseButton = False CrystalReportViewer1.ShowGroupTreeButton = False CrystalReportViewer1.ReportSource = cr Me.Cursor = Cursors.Default Application.DoEvents() Else cr.SetDataSource(ds) '20091005 - SubReport-Connection DBConnection_SubReports(cr) CrystalReportViewer1.ShowRefreshButton = False CrystalReportViewer1.ShowCloseButton = False CrystalReportViewer1.ShowGroupTreeButton = False CrystalReportViewer1.ReportSource = cr Me.Cursor = Cursors.Default Application.DoEvents() End If End Sub Private Sub DBConnection_SubReports(ByRef cr As ReportDocument) If cr.Subreports.Count < 1 Then Exit Sub Dim filename As String = Application.StartupPath + "\" + Me.auswertung.Auswertung.sConnectionstring_Subreport.Value Dim ofile As System.IO.File Dim oread As System.IO.StreamReader Dim CoInfo As SqlClient.SqlConnection oread = ofile.OpenText(filename) sConnectionString = oread.ReadLine sConnectionString = Crypto.DecryptText(sConnectionString, "HutterundMueller") sConnectionString = Microsoft.VisualBasic.Left(sConnectionString, Len(sConnectionString) - 1) Dim split() As String = sConnectionString.Split(";") Dim servername As String = split(0) Dim dbname As String = split(1) Dim userid As String = split(5) Dim password As String = split(6) split = servername.Split("=") servername = split(1) split = dbname.Split("=") dbname = split(1) split = userid.Split("=") userid = split(1) split = password.Split("=") password = split(1) Dim Lo As New TableLogOnInfos() For Each subreport As ReportDocument In cr.Subreports Dim subreportdoc As ReportDocument = subreport Dim logonInfo As New TableLogOnInfo() For Each d As CrystalDecisions.CrystalReports.Engine.Table In subreportdoc.Database.Tables logonInfo = d.LogOnInfo logonInfo.ConnectionInfo.ServerName = servername logonInfo.ConnectionInfo.DatabaseName = dbname logonInfo.ConnectionInfo.UserID = userid logonInfo.ConnectionInfo.Password = password d.ApplyLogOnInfo(logonInfo) Next Next End Sub Private Function TranslateStringToCRFormula(ByVal VBString As String) As String Dim Returnstring As String = "'" 'Split the string at every LF For Each SubString As String In VBString.Split(Chr(10)) SubString = SubString.Replace("'", "' & Chr(39) & '") 'Trim all the CR / LF characters SubString = SubString.Trim(vbCrLf.ToCharArray) 'Form your string to the compatible CR Formula format. Chr(10) &nd Chr(13) should be inserted as a string, not as values!! Returnstring = Returnstring & "' & Chr(10) & Chr(13) & '" & SubString Next Returnstring = Returnstring & "'" Return Returnstring End Function Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub End Class