我一直在到处寻找这个问题的答案,但我找不到任何好的答案;
我有一个 .net 应用程序,它具有删除人员(系统中的中心实体)的功能。用户可以通过各种方式过滤可删除的人员集合,然后将符合过滤条件的人员显示在网格中;然后,用户可以选择/取消选择该网格中要删除的个人;
在此之后,但在实际删除这些人之前,我们需要出示这些人的报告,以供审计;
因此,虽然报表将打印人员表中的数据,但我们需要将人员表中存在的预定义人员子集传递到报表中,以便报表显示正确的数据子集。
此处定义的问题仅是指示性的——作为第一个正在处理的此类报告,但任何数量的系统报告都需要能够打印预定义的数据子集。此外,由于系统允许无限用户,因此多个用户有足够的空间同时报告相同的数据,因此在表行上设置标志以指示应选择哪些行不是可行的解决方案。
到目前为止,我能想到的唯一解决方案是动态生成一个 sql 语句来表示在 WHERE 子句中使用“AND Person.ID IN (list)”打印的数据,并将该 sql 语句保存为一系列 8k 块永久表格中的文本;通过 url 将该表行的 ID 传递到报表中,并使报表的数据源成为存储过程,该存储过程使用传递的 ID 作为参数:存储过程使用 ID 查找表中包含所需 sql 的行生成报表的数据,并使用一堆 varchar(8000) 变量整理 sql,执行 sql,并将所需的数据返回给报表。
然而,这很糟糕......如何更干净地完成?