Skip to Content
0
Former Member
Sep 01, 2008 at 11:40 AM

How do u call report from VB.Net(Windows form)

534 Views

Hi,

How to load the report in VB.Net.This is my Code:

Public Class ReportFunctions

Enum ParamType As Integer

Int

Text

End Enum

Public Shared Sub SetCrystalLogin(ByVal sUser As String, ByVal sPassWord As String, ByVal sServer As String, ByVal sCompanyDB As String, ByRef oRpt As CrystalDecisions.CrystalReports.Engine.ReportDocument)

Dim oDB As CrystalDecisions.CrystalReports.Engine.Database = oRpt.Database

Dim oTables As CrystalDecisions.CrystalReports.Engine.Tables = oDB.Tables

Dim oLogOnInfo As CrystalDecisions.Shared.TableLogOnInfo

Dim oConnectInfo As CrystalDecisions.Shared.ConnectionInfo = New CrystalDecisions.Shared.ConnectionInfo()

Try

oConnectInfo.DatabaseName = sCompanyDB

oConnectInfo.ServerName = sServer

oConnectInfo.UserID = sUser

oConnectInfo.Password = sPassWord

For Each oTable As CrystalDecisions.CrystalReports.Engine.Table In oTables

oLogOnInfo = oTable.LogOnInfo

oLogOnInfo.ConnectionInfo = oConnectInfo

oTable.ApplyLogOnInfo(oLogOnInfo)

Next

Dim oSections As CrystalDecisions.CrystalReports.Engine.Sections

Dim oSection As CrystalDecisions.CrystalReports.Engine.Section

Dim oRptObjs As CrystalDecisions.CrystalReports.Engine.ReportObjects

Dim oRptObj As CrystalDecisions.CrystalReports.Engine.ReportObject

Dim oSubRptObj As CrystalDecisions.CrystalReports.Engine.SubreportObject

Dim oSubRpt As CrystalDecisions.CrystalReports.Engine.ReportDocument

oSections = oRpt.ReportDefinition.Sections

For Each oSection In oSections

oRptObjs = oSection.ReportObjects

For Each oRptObj In oRptObjs

If oRptObj.Kind = CrystalDecisions.Shared.ReportObjectKind.SubreportObject Then

oSubRptObj = CType(oRptObj, CrystalDecisions.CrystalReports.Engine.SubreportObject)

oSubRpt = oSubRptObj.OpenSubreport(oSubRptObj.SubreportName)

oDB = oSubRpt.Database

oTables = oDB.Tables

For Each oTable As CrystalDecisions.CrystalReports.Engine.Table In oTables

oLogOnInfo = oTable.LogOnInfo

oLogOnInfo.ConnectionInfo = oConnectInfo

oTable.ApplyLogOnInfo(oLogOnInfo)

Next

End If

Next

Next

Catch Ex As Exception

Throw Ex

End Try

End Sub

Public Shared Sub SetCrystalParams(ByVal sFieldName As String, ByVal iDataType As ParamType, ByVal sVal As String, ByVal oRpt As CrystalDecisions.CrystalReports.Engine.ReportDocument)

Dim oFieldDefs As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions

Dim oFieldDef As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition

Dim oParamVals As CrystalDecisions.Shared.ParameterValues

Dim oDiscreteVal As CrystalDecisions.Shared.ParameterDiscreteValue

Try

oFieldDefs = oRpt.DataDefinition.ParameterFields

oFieldDef = oFieldDefs(sFieldName)

oParamVals = oFieldDef.CurrentValues

oParamVals.Clear()

oDiscreteVal = New CrystalDecisions.Shared.ParameterDiscreteValue()

Select Case iDataType

Case ParamType.Int

oDiscreteVal.Value = System.Convert.ToInt32(sVal)

Case ParamType.Text

oDiscreteVal.Value = sVal

End Select

oParamVals.Add(oDiscreteVal)

oFieldDef.ApplyCurrentValues(oParamVals)

Catch ex As Exception

Throw ex

End Try

End Sub

End Class

In my addon print button click ia have called this function:

Private Sub LoadReport(ByVal ReportName As String)

Dim RptCrystal As New CrystalDecisions.CrystalReports.Engine.ReportDocument

Dim sPath As String

Try

sPath = System.IO.Directory.GetParent(Application.StartupPath).ToString()

RptCrystal.Load(sPath & "\Forms\" & ReportName)

ReportFunctions.SetCrystalLogin("sa", "sapb1@sql", Company.Server, Company.CompanyDB, RptCrystal)

Catch Ex As Exception

Throw Ex

End Try

End Sub

Ther is no error in my code.But the report is not loading.How to solve this problem.

Thanx in advance

Mohana