在 SSRS 2008 中的同一数据集中查找
Lookup within the same Dataset in SSRS 2008
我正在尝试在同一数据集中的 SSRS 2008 中进行查找。
场景如下:
ID Postcode Name
123456 A12 345 Customer1
234567 B12 456 Customer2
345678 C12 789 Customer3
D12 345 D12 345 City1
A12 345 A12 345 City2
这是我要实现的目标(添加一个额外的位置列):
ID Postcode Name Location
123456 A12 345 Customer1 City2
234567 B12 456 Customer2 City3
345678 D12 345 Customer3 City1
D12 345 D12 345 City1 City1
A12 345 A12 345 City2 City2
我试过以下表达式:
=Lookup(Fields!Postcode.Value,Fields!ID.Value,Fields!Name.Value,"Location")
这是错误消息:
文本框 'TextBox45' 的值表达式具有对查找函数无效的范围参数。范围参数必须设置为字符串常量,即数据集的名称。
我知道数据集首先是不正确的,并且像这样构建数据是一种糟糕的做法。但是,这些是我得到的 'cards',我无法更改。
此外,我知道我可以创建一个单独的查询来从 ID 字段中提取邮政编码并将其用于查找,但我只是在徘徊是否可以在没有额外数据集的情况下获得相同的结果?
抱歉,如果这首先是一个有缺陷的问题。
非常感谢任何意见。
谢谢@StevenWhite,您的提示就是答案。
问题不在问题的逻辑上,而是在表达上。
由于我缺乏 SSRS-2008 经验,我不确定表达式的最后一点是什么意思。
修复方法如下:
=Lookup(Fields!Postcode.Value,Fields!ID.Value,Fields!Name.Value,<b>"DataSet1"</b>)
这可能对任何人都没有帮助,但它确实帮助了我。我试图在 SSRS 的一行中找到下一个值,类似于 Previous() SSRS 函数,但方向相反。
没有 Next() SSRS 函数,但我发现了一些关于使用 Lookup() SSRS 函数以及使用 ROW_NUMBER() SQL 函数的信息。 ROW_NUMBER() 对我不起作用,但 DENSE_RANK() 对我有用。
建议的 Lookup() 函数类似于:
=查找(字段!RowNumber.Value+1,字段!RowNumber.Value,字段!PFCode.Value,“主要”)
除了它不太管用。理论上应该,但没有。
然后我想,如果我只是添加我的原始“Main”的第二个重复数据集,将其命名为“Main2”,然后使用 Lookup() 函数来对抗它会怎么样。它奏效了!也许这不是对资源的“有效”利用,但在花了两天的大部分时间之后,我不在乎了。 :-)
希望这对那里的人有所帮助。
我正在尝试在同一数据集中的 SSRS 2008 中进行查找。
场景如下:
ID Postcode Name 123456 A12 345 Customer1 234567 B12 456 Customer2 345678 C12 789 Customer3 D12 345 D12 345 City1 A12 345 A12 345 City2
这是我要实现的目标(添加一个额外的位置列):
ID Postcode Name Location 123456 A12 345 Customer1 City2 234567 B12 456 Customer2 City3 345678 D12 345 Customer3 City1 D12 345 D12 345 City1 City1 A12 345 A12 345 City2 City2
我试过以下表达式:
=Lookup(Fields!Postcode.Value,Fields!ID.Value,Fields!Name.Value,"Location")
这是错误消息:
文本框 'TextBox45' 的值表达式具有对查找函数无效的范围参数。范围参数必须设置为字符串常量,即数据集的名称。
我知道数据集首先是不正确的,并且像这样构建数据是一种糟糕的做法。但是,这些是我得到的 'cards',我无法更改。
此外,我知道我可以创建一个单独的查询来从 ID 字段中提取邮政编码并将其用于查找,但我只是在徘徊是否可以在没有额外数据集的情况下获得相同的结果?
抱歉,如果这首先是一个有缺陷的问题。
非常感谢任何意见。
谢谢@StevenWhite,您的提示就是答案。
问题不在问题的逻辑上,而是在表达上。
由于我缺乏 SSRS-2008 经验,我不确定表达式的最后一点是什么意思。
修复方法如下:
=Lookup(Fields!Postcode.Value,Fields!ID.Value,Fields!Name.Value,<b>"DataSet1"</b>)
这可能对任何人都没有帮助,但它确实帮助了我。我试图在 SSRS 的一行中找到下一个值,类似于 Previous() SSRS 函数,但方向相反。
没有 Next() SSRS 函数,但我发现了一些关于使用 Lookup() SSRS 函数以及使用 ROW_NUMBER() SQL 函数的信息。 ROW_NUMBER() 对我不起作用,但 DENSE_RANK() 对我有用。
建议的 Lookup() 函数类似于: =查找(字段!RowNumber.Value+1,字段!RowNumber.Value,字段!PFCode.Value,“主要”) 除了它不太管用。理论上应该,但没有。
然后我想,如果我只是添加我的原始“Main”的第二个重复数据集,将其命名为“Main2”,然后使用 Lookup() 函数来对抗它会怎么样。它奏效了!也许这不是对资源的“有效”利用,但在花了两天的大部分时间之后,我不在乎了。 :-)
希望这对那里的人有所帮助。