Ste*_*man 15 sql report crystal-reports
我想从Crystal Report .rpt文件中提取SQL查询,有没有办法做到这一点?
我没有任何Crystal Reports产品,只有.rpt文件.
Jos*_*shL 14
这是一个.Net示例代码,它从给定目录中的所有Crystal Reports中获取Command Sql.它需要安装Crystal 2008 .Net SDK(您可以从SAP下载试用版):
foreach (string file in Directory.GetFiles("c:\\projects\\Reports", "*.rpt"))
{
Console.WriteLine(String.Format("Processing {0}...", file));
var doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
doc.Load(file);
foreach (dynamic table in doc.ReportClientDocument.DatabaseController.Database.Tables)
{
if (table.ClassName == "CrystalReports.CommandTable")
{
string commandSql = table.CommandText;
//TODO: do something with commandSql
}
}
}
Run Code Online (Sandbox Code Playgroud)
要在运行报表时将Crystal构建为SQL,请参阅以下链接:SAP Note 1280515 - 如何使用RAS sdk从Crystal报表中提取SQL查询.
我相信这样做,您需要提供报告参数值,以便Crystal可以连接到数据库以构建SQL.在该示例中,由于使用了Report Viewer控件,Crystal可以提示用户输入参数.
Ed *_*per -1
我的经验是使用旧版本的 Crystal (8,9) - 我不知道更新版本的文件格式是什么样的。但是,为了以防万一,值得在文本编辑器中打开文件,但对于我见过的文件格式,无法通过这种方式访问查询文本。
如果我没记错的话,某些版本的 Visual Studio 2003 附带了用于操作 Crystal .rpt 文件的工具(但我想这对您来说没有多大用处,因为如果您已经有了这个,您就不会问了!)。
这不是一个很有想象力的建议,但也许您最快的方法是下载当前 Crystal Reports 的 30 天试用版,然后看看是否可以打开文件。