Dưới đây là một ví dụ điển Net mã mà grabs Bộ Tư lệnh Sql từ tất cả các báo cáo Crystal trong một thư mục nhất định. Nó đòi hỏi Crystal 2008 Net SDK được cài đặt (bạn có thể tải về dùng thử từ 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
}
}
}
Để có được SQL như pha lê sẽ xây dựng nó khi chạy một báo cáo, xem liên kết này: SAP Note 1280515 - How to extract SQL query from Crystal reports using RAS sdk.
Tôi tin rằng để làm điều này, bạn cần cung cấp các giá trị tham số báo cáo để Crystal có thể kết nối với cơ sở dữ liệu để xây dựng SQL. Trong ví dụ này, khi một điều khiển Report Viewer được sử dụng, Crystal có thể nhắc nhở người dùng về các tham số.
Tôi rất tiếc vì tôi có một phiếu bầu để cung cấp cho bạn. – quillbreaker