I changed the title from: Error In File Temp: Operation illegal on linked parameter
To: Passing Parameters in Crystal report
I Think I know how to pass parameters from main report to subreport, I did something like this:
I can now check through crystal reports preview how my reports look like, and everything is OK.
However, when I need to call the report to VB.Net, I use this code.
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data.SqlClient
Imports System.Data
Public Class rptXbar
Private Sub rptXbar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadXbar(PartNoRep, DimItmRep)
End Sub
Sub LoadXbar(ByVal PartNo As String, ByVal DimItem As String)
Dim sqlcom As New SqlCommand
Dim dt As New DataTable
Dim dta As New SqlDataAdapter
Dim crConnectionInfo As New ConnectionInfo
Dim crtableLogoninfo As New TableLogOnInfo
Dim repX As New XbarRchart
Try
repX.Load(System.AppDomain.CurrentDomain.BaseDirectory() & "XbarRchart.rpt")
With sqlcom
Me.Cursor = Cursors.WaitCursor
conn.Open()
.Connection = conn
.CommandTimeout = 100
.CommandType = CommandType.StoredProcedure
.CommandText = "dbo.XBarRChart"
.Parameters.AddWithValue("@PartNo", PartNo)
.Parameters.AddWithValue("@DimItem", DimItem)
.ExecuteNonQuery()
End With
dt.Clear()
dta = New SqlDataAdapter(sqlcom)
dta.Fill(dt)
repX.SetDatabaseLogon(userid, password, dtsrc, initcat)
repX.SetParameterValue("@PartNo", PartNo)
repX.SetParameterValue("@DimItem", DimItem)
repX.SetParameterValue("@PartNo", PartNo, "MIPIRHeader.rpt")
repX.SetParameterValue("@DimItem", DimItem, "MIPIRHeader.rpt")
repX.SetParameterValue("@PartNo", PartNo, "MIPIRDetails.rpt")
repX.SetParameterValue("@DimItem", DimItem, "MIPIRDetails.rpt")
repX.SetDataSource(dt)
Me.CrystalReportViewer1.ReportSource = repX
Me.CrystalReportViewer1.Refresh()
Catch ex As Exception
MsgBox(ex.Message)
Finally
Me.Cursor = Cursors.Default
End Try
conn.Close()
End Sub
End Class
A error would pop up, it would say:
If I remove the links, the parameters would ask for input, If I remove this code
repX.SetParameterValue("@PartNo", PartNo, "MIPIRHeader.rpt")
repX.SetParameterValue("@DimItem", DimItem, "MIPIRHeader.rpt")
repX.SetParameterValue("@PartNo", PartNo, "MIPIRDetails.rpt")
repX.SetParameterValue("@DimItem", DimItem, "MIPIRDetails.rpt")
It would also ask for parameters, is there any suggestions on how I could fix this problem?