gpt4 book ai didi

c# - 如何检索 Crystal Report 中使用的 SQL SELECT 语句?

转载 作者:太空狗 更新时间:2023-10-29 20:28:40 25 4
gpt4 key购买 nike

我目前正在开发一个 C# 程序,它允许我们的用户运行、查看和导出一批 Crystal Reports。这些报告是使用 Crystal Reports 2008 GUI 制作的。这样做的主要原因之一是允许我们在将 Crystal Report 导出为 PDF 时保留超链接。我的程序通过导出为 rtf,然后将 rtf 转换为 pdf 来执行此操作。如果有人知道在转换为 PDF 时保留超链接的不那么复杂的方法,我很想听听,但这不是我当前的问题。

我做了很多关于如何优化我的程序以使导出花费尽可能少的时间的测试。据我所知,让应用程序查询数据,然后将结果集绑定(bind)到 Crystal Report 是迄今为止最快的方法。我的问题是我无法将查询硬编码到程序中,它们需要从 Crystal Report 本身中检索。

在 Crystal Reports 2008 中,数据库菜单下有一个名为“显示 SQL 查询”的选项。这将打开一个窗口,其中包含用于给定报告的 SQL 查询。这正是我需要从我的应用程序中获得的。我加载了一份 Crystal 报表,并在调试时遍历了 ReportDocument 对象,试图找到查询,但没有成功。

所以,我的问题是;是否有任何可用的方法可以让我提取给定 Crystal Report 使用的查询?

最佳答案

我意识到这是一个非常古老的问题,但我想我会为那些偶然发现这个问题但需要 3.5 的框架目标(动态在 3.5 中不可用)的人提供一个替代方案。

要使此解决方案正常工作,您需要以下引用资料。

using CrystalDecisions.ReportAppServer.DataDefModel;
using CrystalDecisions.CrystalReports.Engine;

然后只需使用以下命令访问 ClientDoc 界面并返回命令文本字符串列表。

    private static List<string> GetCommandText(CrystalDecisions.CrystalReports.Engine.ReportDocument report)
{
var rptClientDoc = report.ReportClientDocument;
return rptClientDoc.DatabaseController.Database.Tables.OfType<CommandTable>()
.Select(cmdTbl => cmdTbl.CommandText).ToList();
}

关于c# - 如何检索 Crystal Report 中使用的 SQL SELECT 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140665/

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