firstDataSet 有一个简单的查询,它返回应在 secondaryDataSet 的 where 子句中传递的数据。布局中有 2 个表(与每个数据集绑定),彼此独立。以下是我所做的步骤,
第一个数据集
第二个数据集
两个数据集中定义的 SQL 查询都在执行,但是 beforeOpen 中定义的替换不起作用。请注意,我无法将数据集合并到布局中的 1 个表中(这可以工作,但不符合要求)
我猜你的意思是主从报告,在某些工具中也称为子报告。 例如,从示例数据库中获取两个表 PRODUCTLINES 和 PRODUCTS。 您想要显示一种按产品线分组的“产品目录”。 对于每个产品线,您希望显示该产品线的描述和图像,然后列出该产品线的产品,依此类推。
至少有 3 种不同的方法可以实现此目的,但与您所描述的相对应的一种方法如下。
您需要两个数据集,一个用于产品线,一个用于产品。 相应地命名它们。
第二个可能看起来像这样:
select * from PRODUCTS where PRODUCTLINE = ?
注意问号。这称为绑定变量。
向此查询添加一个数据集参数(输入,字符串类型),其目的是在执行查询时为绑定变量提供具体值。给它一个有用的名称,例如
param_PRODUCTLINE
。
如果有多个绑定变量:您需要的数据集参数与 SQL 中的问号一样多。
在您的布局中,使用列表项并将其绑定到产品线。 将“产品系列”和“描述”列拖到列表的详细信息区域中。
接下来,将数据集“products”拖到详细信息区域。 这将创建一个表项。 相应地命名它,然后打开表属性中的“绑定”选项卡。单击“参数绑定”按钮。 在这里,编辑数据集参数
param_PRODUCTLINE
的绑定,然后在表达式编辑器中输入 row["PRODUCTLINE"]
(您也可以在可用列绑定列表中双击它)。
这样,对于每个 PRODUCTLINE 记录,其 PRODUCTLINE 列的值将被分配给绑定变量 param_PRODUCTLINE。
出于安全原因(避免 SQL 注入!)和性能原因,您应该始终更喜欢绑定变量,而不是在运行时操作 SQL 查询文本。