2017-05-22 76 views
0

我從改了稱呼: 錯誤在文件溫度:運行非法的連接參數傳遞參數與關聯參數

要:在Crystal報表 傳遞參數

我想我知道如何通過從主報表參數子報表,我做了這樣的事情:

enter image description here

我現在可以檢查通過水晶報表預覽如何米y報告看起來像,而且一切都很好。

但是,當我需要將報告調用到VB.Net時,我使用此代碼。

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 

一個錯誤會彈出,它會說:

enter image description here

如果我刪除了鏈接,參數會要求輸入,如果我刪除此代碼

 repX.SetParameterValue("@PartNo", PartNo, "MIPIRHeader.rpt") 
     repX.SetParameterValue("@DimItem", DimItem, "MIPIRHeader.rpt") 

     repX.SetParameterValue("@PartNo", PartNo, "MIPIRDetails.rpt") 
     repX.SetParameterValue("@DimItem", DimItem, "MIPIRDetails.rpt") 

它也會詢問參數,有沒有關於如何解決這個問題的建議?

回答

0

我終於找到了答案!

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 

這是我填充我的主報告的數據與子報表,如果你會發現repX.SetDataSource(dt)是我填充子報表的代碼下面的代碼,我改變了代碼爲以下:

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) 
      'New Location 
      repX.SetDataSource(dt) 
      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") 


      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 

而我的代碼工作!因此,在將您的命令放入VB.net時請注意,您可能會將它放在某處錯誤。