Vb.net Crystal报表不加载

Vb.net Crystal报表不加载,vb.net,crystal-reports,Vb.net,Crystal Reports,我的Crystal报告无法加载 这是我的代码: Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Public Class bincard Private Sub bincard_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Clic

我的Crystal报告无法加载

这是我的代码:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class bincard
    Private Sub bincard_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs)
        Dim cryRpt As New ReportDocument

        cryRpt.Load(Application.StartupPath + "bincard1.rpt")

        Dim crParameterFieldDefinitions As ParameterFieldDefinitions
        Dim crParameterFieldDefinition As ParameterFieldDefinition
        Dim crParameterValues As New ParameterValues
        Dim crParameterDiscreteValue As New ParameterDiscreteValue

        crParameterDiscreteValue.Value = TextBox1.Text
        crParameterFieldDefinitions =
            cryRpt.DataDefinition.ParameterFields
        crParameterFieldDefinition =
            crParameterFieldDefinitions.Item("itemid")
        crParameterValues = crParameterFieldDefinition.CurrentValues

        crParameterValues.Clear()
        crParameterValues.Add(crParameterDiscreteValue)
        crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)

        CrystalReportViewer1.ReportSource = cryRpt
        CrystalReportViewer1.Refresh()
    End Sub
End Class
发件人:

致:


cryRpt.Load()
中的路径错误。从目前的情况看,它将是这样的:

C:\Program Files\Application Namebincard1.rpt

请注意,
“应用程序名称”
“bincard1.rpt”
之间是如何不存在任何差异的。这将使路径无效。这是因为您正在使用
+
连接路径,这将导致一些问题

相反,请考虑使用将
应用程序.StartupPath
bincard1.rpt
连接在一起:

cryRpt.Load(Path.Combine(Application.StartupPath, "bincard1.rpt"))
这将为您提供类似以下内容的路径:

C:\Program Files\Application Name\bincard1.rpt

我改变了:

致:

然后将报表设计设置为“复制输出目录”=如果较新,则复制并编译为内容

cryRpt.Load(Application.StartupPath + "\\bincard1.rpt")
cryRpt.Load(Path.Combine(Application.StartupPath, "bincard1.rpt"))
cryRpt.Load(Application.StartupPath + "bincard1.rpt")
cryRpt.Load(Application.StartupPath & "bincard1.rpt")