加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 使用数据集时无法正确绑定晶体报告,显示缺少参数

发布时间:2020-12-16 07:41:44 所属栏目:asp.Net 来源:网络整理
导读:当我使用DSN作为数据源时,我有水晶报告正常工作. 问题是我现在正在使用数据集.数据集包含我需要的所有表,并使用存储过程从数据库填充数据. 但是,通过这种方式,它会抛出一个错误:“缺少参数”. 我这样做: 步骤1:创建Dataset1.xsd并使用数据连接从其中插入
当我使用DSN作为数据源时,我有水晶报告正常工作.
问题是我现在正在使用数据集.数据集包含我需要的所有表,并使用存储过程从数据库填充数据.
但是,通过这种方式,它会抛出一个错误:“缺少参数”.

我这样做:
步骤1:创建Dataset1.xsd并使用数据连接从其中插入数据库中的所有必需表.
步骤2:使用数据库专家作为Dataset1.xsd提供数据源报告
步骤3:使用数据集中的存储过程填充数据,然后创建数据集1的实例并将数据从数据集合并到数据集1实例.

我的代码从数据库中获取数据然后将其合并到Dataset1实例并将其作为源文件提供给crystal报告如下:

Private Sub ReportByDataset(ByVal rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument)

    'new code

    Dim myConnection As New SqlClient.SqlConnection()
    'myConnection.ConnectionString = "server= (local)NetSDK;database=pubs;Trusted_Connection=yes"
    Dim ds As New DataSet1

    myConnection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("HighriseContractingWebConnectionString").ConnectionString
    myConnection.Open()
    Dim MyCommand As New SqlClient.SqlCommand()
    MyCommand.Connection = myConnection

    MyCommand.CommandText = "SP_Web_GetReportTables"
    MyCommand.CommandType = CommandType.StoredProcedure
    Dim MyDA As New SqlClient.SqlDataAdapter()
    MyDA.SelectCommand = MyCommand
    Dim myDS As New DataSet

    MyDA.Fill(myDS)
    myConnection.Close()


    ds.Tables("RABill_RPT").Merge(myDS.Tables(0),MissingSchemaAction.Ignore)
    myDS.Tables(0).Reset()
    ds.Tables("RA_bills").Merge(myDS.Tables(1),MissingSchemaAction.Ignore)
    ds.Tables("Work_Completion").Merge(myDS.Tables(2),MissingSchemaAction.Ignore)
    ds.Tables("contractor").Merge(myDS.Tables(3),MissingSchemaAction.Ignore)
    ds.Tables("WO_Header").Merge(myDS.Tables(4),MissingSchemaAction.Ignore)
    ds.Tables("Project").Merge(myDS.Tables(5),MissingSchemaAction.Ignore)
    ds.Tables("contractor_1").Merge(myDS.Tables(6),MissingSchemaAction.Ignore)
    ds.Tables("Users").Merge(myDS.Tables(7),MissingSchemaAction.Ignore)
    ds.Tables("Users_Approved").Merge(myDS.Tables(8),MissingSchemaAction.Ignore)
    ds.Tables("voucher").Merge(myDS.Tables(9),MissingSchemaAction.Ignore)
    ds.Tables("Employee_Approve").Merge(myDS.Tables(10),MissingSchemaAction.Ignore)
    ds.Tables("Employee").Merge(myDS.Tables(11),MissingSchemaAction.Ignore)
    ds.Tables("Account").Merge(myDS.Tables(12),MissingSchemaAction.Ignore)
    ds.Tables("TDS").Merge(myDS.Tables(13),MissingSchemaAction.Ignore)
    ds.Tables("WO_Detail").Merge(myDS.Tables(14),MissingSchemaAction.Ignore)
    ds.Tables("V_WO_BlockTaskNo").Merge(myDS.Tables(15),MissingSchemaAction.Ignore)
    ds.Tables("TASK").Merge(myDS.Tables(16),MissingSchemaAction.Ignore)
    ds.Tables("Cont_Voucher").Merge(myDS.Tables(17),MissingSchemaAction.Ignore)
    ds.Tables("Cont_Voucher_1").Merge(myDS.Tables(17),MissingSchemaAction.Ignore)
    ds.Tables("Cont_Voucher_2").Merge(myDS.Tables(17),MissingSchemaAction.Ignore)
    ds.Tables("Company").Merge(myDS.Tables(18),MissingSchemaAction.Ignore)


    ''new code ends


    rptDoc.SetDataSource(ds)
    CRReport.HasCrystalLogo = False
    CRReport.HasToggleGroupTreeButton = False
    CRReport.ReportSource = rptDoc
    CRReport.DataBind()

End Sub

但它不起作用,我错过了什么.使用DSN同样工作正常它不是参数的问题,同样是其他方式正常工作.
注意:我知道上面的代码不是内存优化的,但我现在关心的是以某种方式使它工作,我可以稍后优化它

下图显示了Dataset1作为数据源

解决方法

两种可能性 – 你在哪里得到参数丢失错误抛出?如果它位于存储过程SP_Web_GetReportTables上,则不会在MyCommand上为该sproc添加任何参数.如果它位于报告本身上,请检查报告本身侧面的字段资源管理器,并查看是否有任何已定义的参数,这些参数是使用DSN遗留的.由于您现在直接传入数据集,因此无需传入任何参数.最后,如果使用Crystal Report Viewer,只需设置ReportSource即可显示它,我不确定DataBind正在做什么您.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读