Return 所有可能的索引参数
Return all possible index parameters
我正在使用 C# 和 Crystal 报告库。我有一个方法获取指定参数的 SQL 查询,如下所示;
pi.GetIndexParameters()))[0].CommandText;
我的问题是,一旦一份报告有多个查询 - 我如何才能找到该报告所具有的索引(查询)数量以及 return 每个 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;
}
如果您需要任何进一步的信息,请告诉我。
我会这样做:
- 获取 returned IndexParameters 并将其保存在列表中
// UNNECESSARY, you can skip this
遍历列表并获取每个 value/CommandText,存储在新列表中
要么将列表连接成一个字符串,然后 return 要么
- return 字符串列表
如果您要选择 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" 连接起来并得到一个结果。
我正在使用 C# 和 Crystal 报告库。我有一个方法获取指定参数的 SQL 查询,如下所示;
pi.GetIndexParameters()))[0].CommandText;
我的问题是,一旦一份报告有多个查询 - 我如何才能找到该报告所具有的索引(查询)数量以及 return 每个 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;
}
如果您需要任何进一步的信息,请告诉我。
我会这样做:
- 获取 returned IndexParameters 并将其保存在列表中
// UNNECESSARY, you can skip this
遍历列表并获取每个 value/CommandText,存储在新列表中
要么将列表连接成一个字符串,然后 return 要么
- return 字符串列表
如果您要选择 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" 连接起来并得到一个结果。