我有几十个遗留报告,其中许多都使用Sql Server存储过程作为其数据源。我正在尝试在使用 VB.NET 2010 和 CR for Visual Studio 2010版本13.0.2 构建的应用程序中使用它们。
当我根据存储过程运行报表时,会收到类似
的错误消息无法找到“REPORT_SCHEDULEB”表
报告中的表定义如下所示:
LogOnInfo.ConnectionInfo for REPORT_SCHEDULEB:
Name: "REPORT_SCHEDULEB", Location: "Proc(REPORT_SCHEDULEB;1)"
AllowCustomConnection: False, DBName: myDb, IntegratedSecurity: False
ServerName: myComputer, User: myName, Password: myPassword, Attributes:
Database DLL: crdb_ado.dll
QE_DatabaseName: myDb
QE_DatabaseType: OLE DB (ADO)
Auto Translate: -1
Connect Timeout: 0
Data Source: myComputer
General Timeout: 0
Initial Catalog: myDb
Integrated Security: False
Locale Identifier: 1033
OLE DB Services: -5
Provider: SQLOLEDB
Tag with column collation when possible: 0
Use DSN Default Properties: False
Use Encryption for Data: 0
Owner: dbo
QE_ServerDescription: myComputer
QE_SQLDB: True
SSO Enabled: False
Owner: dbo
我猜测 Location 字段的定义存在一些问题,但是
所以,我尝试在我的代码中设置table.Location值,但是抛出了一个COM异常 - 我想它只是在某种程度上读取。
我还想到了设置某种 QualifiedName 属性的可能性,但还没有找到办法。
有什么想法吗?
TIA
答案 0 :(得分:0)
我通过使用从存储过程创建的数据表在运行时设置报表数据源,在VB中实现了一个解决方案。这样,所有连接细节只需要在应用程序中存储一次,而不是存储在每个报告中。
(粗略地)
Dim SourceDatabase as datatable = GetDatatableFromSP(SPName)
Dim DocumentToShow as New ReportDocument
DocumentToShow.Load(DocumentPath)
DocumentToShow.SetDataSource(SourceDatabase)
ReportViewer.ViewerCore.ReportSource = DocumentToShow