在运行时使用C#从报表中获取SQL查询

2020-09-09 00:39发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想让Report SQL查询适用于我的数据集并应用更多过滤器。

目前,我已经报告了类似SQL查询(可以从Visual Studio中显示->显示SQL查询)
我有两个CSV,其中内部联接应用于数据集。

选择DISTINCT`my_csv`.`RUNDE`,`my_csv`.`JAHR`,`my_csv`.`PRUEFUNGSORT` from`eteiln.csv``my_csv`内连接`esp.csv``anotehr_csv` ON(`  my_csv`.JAHR` =`anotehr_csv`.JAHR`)和(`my_csv`.RUNDE` =`anotehr_csv`.RUNDE`)
  在哪里my_csv,祖拉松='J和my_csv,RUECKTRITT为空且my_csv为bachelor_jn = n
  订购`my_csv`.PRUEFUNGSORT`
 


除了上述查询,我​​还使用WPF应用程序自定义了" WHERE"条件。

我从报表中得到的查询部分很少。" myReportDocument.DataDefinition.RecordSelectionFormula"

有什么方法可以获取完整的SQL查询,我还可以通过解析查询字符串来在条件中添加/编辑条件?

我已经尝试过 rptClientDoc.RowsetController.GetSQLStatement

,但会抛出错误,甚至 rptClientDoc.DatabaseController.CanExecuteSQL()返回false。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想让Report SQL查询适用于我的数据集并应用更多过滤器。

目前,我已经报告了类似SQL查询(可以从Visual Studio中显示->显示SQL查询)
我有两个CSV,其中内部联接应用于数据集。

选择DISTINCT`my_csv`.`RUNDE`,`my_csv`.`JAHR`,`my_csv`.`PRUEFUNGSORT` from`eteiln.csv``my_csv`内连接`esp.csv``anotehr_csv` ON(`  my_csv`.JAHR` =`anotehr_csv`.JAHR`)和(`my_csv`.RUNDE` =`anotehr_csv`.RUNDE`)
  在哪里my_csv,祖拉松='J和my_csv,RUECKTRITT为空且my_csv为bachelor_jn = n
  订购`my_csv`.PRUEFUNGSORT`
 


除了上述查询,我​​还使用WPF应用程序自定义了" WHERE"条件。

我从报表中得到的查询部分很少。" myReportDocument.DataDefinition.RecordSelectionFormula"

有什么方法可以获取完整的SQL查询,我还可以通过解析查询字符串来在条件中添加/编辑条件?

我已经尝试过 rptClientDoc.RowsetController.GetSQLStatement

,但会抛出错误,甚至 rptClientDoc.DatabaseController.CanExecuteSQL()返回false。

付费偷看设置
发送
1条回答
梦想连接
1楼 · 2020-09-09 01:03.采纳回答

您使用的是什么SDK?

您无法编辑SQL CR生成的内容,唯一的方法是使用Command然后可以对其进行编辑。

您可以通过这种方式获取它 :

//检查报告是否基于Command,如果显示,则显示SQL。 这会导致巨大的延迟报告
 btnReportObjects.AppendText("");
 dtStart = DateTime.Now;
 int dbConCount = rptClientDoc.DatabaseController.GetConnectionInfos()。Count;


 字符串DBDriver ="";
 为(int x = 0; x  

使用以下方法进行设置:

静态void testSetSQLCommandTable_CRPE(CrystalDecisions.CrystalReports.Engine.ReportDocument rpt)
 {
    //CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
    //ISCDReportClientDocument rcd;

    //rcd = rpt.ReportClientDocument;

     CrystalDecisions.Shared.ConnectionInfo crConnInfo =新的CrystalDecisions.Shared.ConnectionInfo();
     CrystalDecisions.ReportAppServer.Controllers.DatabaseController databaseController = rpt.ReportClientDocument.DatabaseController;
     CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfos connectionInfos = databaseController.GetConnectionInfos(null);
     CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo oldConnectionInfo = connectionInfos [0];
     CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo newConnectionInfo = CreateConnectionInfo();
     databaseController.ReplaceConnection(oldConnectionInfo,newConnectionInfo,null,CrDBOptionsEnum.crDBOptionMapFieldByRowsetPosition);

     ISCRTable oldTable =(ISCRTable)databaseController.Database.Tables [0];
     CommandTable newTable =新的CommandTable();
     newTable.Alias ="命令";
     newTable.Name ="命令";
     newTable.QualifiedName ="命令";
     newTable.ConnectionInfo = newConnectionInfo;
     newTable.CommandText = @" SELECT'Customer'。'Contact Last Name'FROM'xtreme'。'dbo'。'Customer''Customer'";
    //newTable.CommandText = @" SELECT'Checks'。'CheckID','Checks'。'LoopType','Checks'。'RunType'FROM'astellastest'。'dbo'。'Checks''Checks'WHERE'Checks  '.'CheckID'<100";

     databaseController.SetTableLocation(oldTable,newTable);
    //IsRpt = false;
 } 

一周热门 更多>