我正在使用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;
}
如果您需要其他任何信息,请告诉我。
答案 0 :(得分:0)
我会这样:
// UNNECESSARY, you can skip this
循环浏览列表,并获取存储在新列表中的每个值/ CommandText
将列表连接成一个字符串并返回OR或
如果您要进行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”连接起来,并得到一个结果。