C# Crystal 2008-我可以在运行时以编程方式访问SQL语句吗?

C# Crystal 2008-我可以在运行时以编程方式访问SQL语句吗?,c#,crystal-reports,C#,Crystal Reports,我们已经创建了一个Crystal Report viewer应用程序来存放我们所有的公司报告。它是以这样一种方式构建的:无论何时添加、修改或删除报表,查看器应用程序本身都不需要更改。查看器应用程序完全由一个XML配置文件驱动,该文件告诉它哪些报告可用、它们在哪里、连接信息等。我们也希望保持这种方式。当我们添加一个新的报告时,我们不希望必须更新每个人的查看器应用程序 问题是Crystal直接与DB对话,我们希望它不要这样做。因此,对于每个报表,查看器需要查询数据库以检索每个报表所需的数据。问题是,

我们已经创建了一个Crystal Report viewer应用程序来存放我们所有的公司报告。它是以这样一种方式构建的:无论何时添加、修改或删除报表,查看器应用程序本身都不需要更改。查看器应用程序完全由一个XML配置文件驱动,该文件告诉它哪些报告可用、它们在哪里、连接信息等。我们也希望保持这种方式。当我们添加一个新的报告时,我们不希望必须更新每个人的查看器应用程序

问题是Crystal直接与DB对话,我们希望它不要这样做。因此,对于每个报表,查看器需要查询数据库以检索每个报表所需的数据。问题是,我们的许多报告允许用户输入大量筛选条件。理想情况下,我们希望能够做到的是让Crystal提示用户输入他们的筛选条件,就像它当前所做的那样,然后能够以某种方式获取它将发送到DB的SQL语句,自己将其传递到DB,并告诉Crystal不要这样做。然后,查看器将向报告提供数据

有人知道这是否可以做到吗?我们考虑过的另一种方法是让查看器提示用户输入筛选条件,然后构建SQL语句。但是,每个报告都会成为一个C编码项目,并对查看器进行更新。我们正在努力避免这种情况


谢谢。

有趣的方法。我只做过相反的事

通常,人们喜欢使用Crystal客户端构建自己的报表。报表连接到报表本身中指定的数据源

使用.NET来查询报表需求,设置参数和公式,然后查看报表是小菜一碟

无论如何,我只知道两种方法,一种叫拉法,另一种叫推法。Pull就是我刚才描述的。Push是您所描述的一个您考虑过的解决方案,但它涉及到为每个报告编写代码


恐怕你想做的事以前从未做过。但是,我建议使用pull方法。对于我来说,它在一个拥有数十个用户和数百个报表的客户机上运行得非常好。

因此,一方面,您希望获得SQL语句,它将发送到DB并自己将其传递给DB,但另一方面,您不想编写任何代码来处理它?如果您不打算编写任何代码来处理它,那么获取SQL语句有什么意义呢?