gpt4 book ai didi

vb.net - 如何在存储过程上构建 Crystal Report?

转载 作者:行者123 更新时间:2023-12-05 00:01:04 24 4
gpt4 key购买 nike

我有几十个遗留报表,其中许多使用 SQL Server 存储过程作为数据源。我正在尝试在使用 VB.NET 2010CR for Visual Studio 2010 version 13.0.2 构建的应用程序中使用它们。

当我运行基于存储过程的报告时,我收到一条错误消息,内容类似

The table 'REPORT_SCHEDULEB' could not be found

报告中的表定义如下所示:

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 字段的定义方式存在一些问题,但是

  1. 当我尝试更改 Overridden Qualified Table Name 时报告编辑器不会接受更改,并且
  2. 我真的宁愿找到一个程序化的解决方案,也不愿手动编辑数十份报告。

因此,我尝试在我的代码中设置 table.Location 值,但这会引发 COM 异常——我猜它在某种程度上是只读的。

我也考虑过设置某种QualifiedName 属性的可能性,但还没有找到实现它的方法。

有什么想法吗?

TIA

最佳答案

我通过使用从存储过程创建的数据表在运行时设置报表数据源,在 VB 中实现了一个解决方案。这样,所有连接详细信息只需在应用程序中存储一次,而不是针对每个报告。

(大致)

Dim SourceDatabase as datatable = GetDatatableFromSP(SPName)
Dim DocumentToShow as New ReportDocument

DocumentToShow.Load(DocumentPath)
DocumentToShow.SetDataSource(SourceDatabase)

ReportViewer.ViewerCore.ReportSource = DocumentToShow

关于vb.net - 如何在存储过程上构建 Crystal Report?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10918677/

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