Jycjmf 发表于 2022-7-12 16:40:04

.net core 3.1根据Query参数动态生成SQL

我现在项目采用.Net Core 3.1运行时,我希望通过链接中不同的Query参数动态生成SQL,从而实现不同用户打开页面显示不同报表内容的效果。我在Controller中加入了Id参数:
[HttpGet("/{file}")]
public object Resource([FromRoute] string file, [FromQuery] string id)//我需要传递的query参数Id
{   ........}
我希望根据不同的Id,生成不同的SQL,并且使用这个SQL查询报表内容。
select * from user Where Id=12345所以我在Configure方法中添加了如下代码:app.UseReporting(settings =>
{
    settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType()));
    settings.UseCompression = true;
    settings.LocateDataSource = args =>
    {
      var res = QueryItems("select * from user where Id=12345");//我不知道怎么传递query参数(id)到这边
      return res;
    };
});
private static DataTableCollection QueryItems(string sql)
{
    var conn = new MySqlConnection(
      "Server=127.0.0.1; Port=3306;Stmt=; Database=demodb; Uid=demo; Pwd=demo;");
    var daCountry = new MySqlDataAdapter(sql, conn);
    var dsCountry = new DataSet();
    daCountry.Fill(dsCountry, "User");
    var dataSet = dsCountry.Tables["User"?.DataSet;
    return dataSet?.Tables;
}这样做虽然手动编写了SQL,但问题是我不知道怎么传递Route中的参数到UseReporting的 settings.LocateDataSource中,而且这个方法只会在程序自动的时候运行一次,并不能实现每一个http请求调用一次,请问下有没有什么解决方案?

wengMQ 发表于 2022-7-12 19:45:26

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=138284&extra=这是一种方式

wengMQ 发表于 2022-7-12 19:45:48

可以加我QQ546962925

wengMQ 发表于 2022-7-12 19:46:24

【新提醒】Web端在线设计器项目实际分享 - ActiveReports专区 - 专题教程 - 葡萄城产品技术社区https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=144262&extra=page%3D1

James.Lv 发表于 2022-7-12 21:40:56

一种实现方式就是URL上传递参数,然后您自己在代码去处理来实现报表sql根据参数进行过滤

还有一种实现方式,就是利用报表参数,然后把SQL语句跟参数关联动态传递这部分由报表来去完成
可以参考教程:
SQL语句使用参数技巧
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=97162&fromuid=57091
(出处: 葡萄城产品技术社区)


Jycjmf 发表于 2022-7-13 09:04:04

James.Lv 发表于 2022-7-12 21:40
一种实现方式就是URL上传递参数,然后您自己在代码去处理来实现报表sql根据参数进行过滤

还有一种实现方 ...

你好,请问下“URL上传递参数“的方式有例子吗?我现在不知道怎么样才能在用户每次访问报表URL时动态获取Query参数并且合并到SQL语句中

Bella.Yuan 发表于 2022-7-13 10:33:37

Jycjmf 发表于 2022-7-13 09:04
你好,请问下“URL上传递参数“的方式有例子吗?我现在不知道怎么样才能在用户每次访问报表URL时动态获取 ...

您好,您现在的是问题是不知道如何在startup中获取controller的参数,帮您找了一个链接,您可以参考一下。
https://blog.csdn.net/davy57345/article/details/102300535

Jycjmf 发表于 2022-7-13 15:40:41

wengMQ 发表于 2022-7-12 19:45
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=138284&extra=这是一种方式

非常感谢!解决了

Bella.Yuan 发表于 2022-7-13 16:07:57

Jycjmf 发表于 2022-7-13 15:40
非常感谢!解决了

解决了就好{:5_117:}有问题欢迎另开新贴

wengMQ 发表于 2022-7-13 23:50:13

Jycjmf 发表于 2022-7-13 15:40
非常感谢!解决了

有问题欢迎加QQ546962925沟通:handshake
页: [1] 2
查看完整版本: .net core 3.1根据Query参数动态生成SQL