gpt4 book ai didi

asp.net - 使用数据集时无法正确绑定(bind) Crystal 报表,显示参数缺失

转载 作者:行者123 更新时间:2023-12-03 15:00:45 25 4
gpt4 key购买 nike

我有 Crystal 报告,当我使用 DSN 时工作正常作为数据源。
问题是我现在正在使用数据集。数据集包含我需要的所有表,我正在使用存储过程从数据库中填充数据。
但是,以这种方式,它会引发错误:“Missing Parameters”。

我正在做如下:
第一步 : 创建 Dataset1.xsd并使用 data connections插入所有必需的 tables从里面的数据库。
第二步 :给data source使用 database expert 报告如Dataset1.xsd 第三步 : 使用数据集中的存储过程填充数据,然后创建 Dataset1 的实例并将数据集中的数据合并到 Dataset 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 作为数据源
enter image description here

最佳答案

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

关于asp.net - 使用数据集时无法正确绑定(bind) Crystal 报表,显示参数缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31046759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com