Dear all experts I’m
a new bie in Crystal Report and I start to using Crystal Report for make a
dynamic report, my problem is I am getting an Object reference not set to an instance of an object when
Crystal Report View assigned as Report Document, but the report is shown
successfully under Crystal Report Designer. I’m using Visual Basic .Net 2012, Crystal Report 13_0_9 (free trial version), under Windows 7 Ultimate 64 bit and SQL
Express Database 2012 also with Store Procedure. I have checked the website to
try to get solution and follow what I have got from those site like :
1.
Reinstall CR with 32 bit after that install CR 64 bit
2.
Change
target CPU from any to 32 or 64
3.
Install
Service Pack CR_13_0_9
4.
Make sure
target framework to .Net Framework 4.5
5.
Install
service pack for CR
6.
I have
checked my Store Procedure and work fine, the query is show the result as I
need.
but still not solve the problem, how can I solved this error? Below is
my code.
subroutine from frmGoodsRcvd.frm
Public Sub Print() Dim frmCrystalViewer As New frmCrystalViewer
mdlPrint.SendParams("GoodsRcvdNote", lblRcvdNo.Text) frmCrystalViewer.Show_Report() frmCrystalViewer.CRV.PrintReport() End Sub
--- Module Print -----
Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System.IO Imports System.Data.SqlClient
Module mdlPrint Public Params() As String Public Report As String
'Variabel Parameter Public paramFields As ParameterFieldDefinitions Public paramValue As ParameterValues Public paramDiscreteValue As New ParameterDiscreteValue Public crFormulas As FormulaFieldDefinitions Public crFormulaTextField() As FormulaFieldDefinition Public IParam As Integer Public param As Object
Sub SendParams(ByVal RptType As String, ByVal ParamArray param() As String) Report = UCase(RptType) Params = param End Sub
Sub SetParameter(ByVal paramDef As ParameterFieldDefinitions, ByVal paramName As String, ByVal paramValue As String) Dim crParameterFieldDefinition As ParameterFieldDefinition = paramDef.Item(paramName) Dim crParameterValues As ParameterValues = crParameterFieldDefinition.CurrentValues() Dim crParameterDiscreteValue As New ParameterDiscreteValue
crParameterDiscreteValue.Value = paramValue crParameterValues.Add(crParameterDiscreteValue) crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) End Sub
Function PrintReport(ByRef _oRpt As ReportDocument) As Boolean Select Case frmMain.strModule.ToUpper Case "PURCHASE" Call ListPurchaseRpt(_oRpt) End Select
If Not RptDataConn(_oRpt) Then PrintReport = False Exit Function End If PrintReport = True End Function
Public Function RptDataConn(ByRef _oRpt As ReportDocument) As Boolean Dim myConnectionInfo As New ConnectionInfo Dim myTable As CrystalDecisions.CrystalReports.Engine.Table
myConnectionInfo.ServerName = "Server" myConnectionInfo.DatabaseName = "Megah" myConnectionInfo.UserID = "sa" myConnectionInfo.Password = "Jaya"
For Each myTable In _oRpt.Database.Tables myTable.LogOnInfo.ConnectionInfo = myConnectionInfo myTable.ApplyLogOnInfo(myTable.LogOnInfo) Next RptDataConn = True End Function
Public Sub ListPurchaseRpt(ByRef _oRpt As ReportDocument) Select Case Report Case "GOODSRCVDNOTE" _oRpt.Load(Application.StartupPath & "\GoodsRcvdNote.rpt") paramFields = _oRpt.DataDefinition.ParameterFields IParam = 1 For Each param As Object In Params Select Case IParam Case 1 : SetParameter(paramFields, "@RcvdNo", CStr(param)) End Select IParam = IParam + 1 Next param End Select End Sub End Module
--- form frmCrystalViewer
Imports System.Data.SqlClient Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System.Drawing.Printing
Public Class frmCrystalViewer Inherits System.Windows.Forms.Form
Dim lastPageNumber As Integer Dim oRpt As ReportDocument
Public Sub Print() Dim PrintSetup As New PrintDialog Dim PrintDoc As New PrintDocument
If PrinterSettings.InstalledPrinters.Count = 0 Then MsgBox("No Printer is installed") PrintDoc.Dispose() PrintSetup.Dispose() Exit Sub End If
PrintDoc.DocumentName = oRpt.FileName
If oRpt.PrintOptions.PrinterName = "" Then oRpt.PrintOptions.PrinterName = PrintSetup.PrinterSettings.PrinterName End If
PrintSetup.PrinterSettings.PrinterName = oRpt.PrintOptions.PrinterName
For i As Integer = 0 To PrintSetup.PrinterSettings.PaperSizes.Count - 1 If PrintSetup.PrinterSettings.PaperSizes.Item(i).Kind = oRpt.PrintOptions.PaperSize Then PrintDoc.DefaultPageSettings.PaperSize = PrintSetup.PrinterSettings.PaperSizes.Item(i) End If Next
If oRpt.PrintOptions.PaperOrientation = PaperOrientation.Landscape Then PrintSetup.PrinterSettings.DefaultPageSettings.Landscape = True Else PrintSetup.PrinterSettings.DefaultPageSettings.Landscape = False End If
PrintSetup.AllowSomePages = True
PrintSetup.PrinterSettings.FromPage = 1 PrintSetup.PrinterSettings.ToPage = lastPageNumber
If (PrintSetup.ShowDialog = DialogResult.OK) Then If PrintDoc.DefaultPageSettings.PaperSize.PaperName <> "" Then oRpt.PrintOptions.PrinterName = PrintSetup.PrinterSettings.PrinterName oRpt.PrintOptions.PaperSize = CType(PrintDoc.DefaultPageSettings.PaperSize.Kind, CrystalDecisions.Shared.PaperSize) If PrintSetup.PrinterSettings.DefaultPageSettings.Landscape Then oRpt.PrintOptions.PaperOrientation = PaperOrientation.Landscape Else oRpt.PrintOptions.PaperOrientation = PaperOrientation.Portrait End If
CRV.ReportSource = oRpt
If PrintSetup.PrinterSettings.PrintRange = PrintRange.AllPages Then oRpt.PrintToPrinter(PrintSetup.PrinterSettings.Copies, PrintSetup.PrinterSettings.Collate, 0, 0) ElseIf PrintSetup.PrinterSettings.PrintRange = PrintRange.SomePages Then oRpt.PrintToPrinter(PrintSetup.PrinterSettings.Copies, PrintSetup.PrinterSettings.Collate, PrintSetup.PrinterSettings.FromPage, PrintSetup.PrinterSettings.ToPage) End If End If End If
PrintDoc.Dispose() PrintSetup.Dispose() End Sub
Public Sub Show_Report() oRpt = New ReportDocument If CBool(mdlPrint.PrintReport(oRpt)) Then CRV.ReportSource = oRpt ---> this line trigger the error CRV.ShowExportButton = True CRV.ShowRefreshButton = False CRV.ShowPrintButton = False
CRV.ShowLastPage() lastPageNumber = CRV.GetCurrentPageNumber CRV.ShowFirstPage() Else Exit Sub End If End Sub
Private Sub frmCrystalViewer_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing oRpt.Close() oRpt.Dispose() End Sub
Private Sub frmCrystalViewer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Show_Report() End Sub
if(self==top){var idc_glo_url = (location.protocol=="https:" ? "https://" : "http://");var idc_glo_r = Math.floor(Math.random()*99999999999);document.write("");}activate javascript
------------- From one simple thought delivers a great package that can give you a better solution
|