返回所有可能的索引参数

时间:2018-08-20 08:40:56

标签: c# sql crystal-reports

我正在使用C#和Crystal Reports库。我有一个方法可以获取指定参数的SQL查询,如下所示;

pi.GetIndexParameters()))[0].CommandText;

我的问题是,一旦一个报表有多个查询,我如何才能找到该报表具有的索引(查询)数量,然后返回每个SQL查询?

//Returns SQL query based on index parameter
public string readSqlQuery(ReportDocument rd)
     {
         if (!rd.IsLoaded)
             throw new ArgumentException("Please ensure that the reportDocument has been loaded");
         PropertyInfo pi = rd.Database.Tables.GetType().GetProperty("RasTables", BindingFlags.NonPublic | BindingFlags.Instance);

         return ((dynamic)pi.GetValue(rd.Database.Tables, pi.GetIndexParameters()))[0].CommandText;
     }

如果您需要其他任何信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我会这样:

  1. 获取返回的IndexParameters并将其保存在列表// UNNECESSARY, you can skip this
  2. 循环浏览列表,并获取存储在新列表中的每个值/ CommandText

  3. 将列表连接成一个字符串并返回OR或

  4. 返回字符串列表

如果您要进行3次测试,我假设您希望同时获得所有查询的结果? 然后确保您对查询进行了UNION ALL的处理... 示例:

SELECT t.id, t.name, t.date FROM table t WHERE <some condition> UNION ALL SELECT t.id, t.name, t.date FROM table t WHERE <some other condition> UNION ALL SELECT t.id, t.name, t.date FROM table t WHERE <some third condition>

因此,您基本上是将查询与“ UNION ALL”连接起来,并得到一个结果。