在ssrs中查找不在tablix中显示值。

时间:2013-02-01 12:21:57

标签: ssrs-2008 reporting-services ssrs-tablix sharepoint-list

工作环境是sharepoint2010。 我们已经将sharepoint list datasource连接到vs2008中的报表项目。可以使用Tablix在单个数据集中显示数据。 我们有2个数据集 1)salesMain 2)顾客

在salesMain中,我们有SalesID,CustomerID,saleDate,TotalAmount,taxAmt,netAmount等字段

在客户中我们拥有 的customerID,客户名称,地址

我需要显示数据 SalesID,客户名称,地址,netAmount,TaxAmt,总金额

我们已将SalesMain数据集分配给Tablix,Tablix按原样显示数据。 问题是显示的一些数据是Forniegn键值,如CustomerID。 我们需要使用foriegn键值(CustomerID)获取“customername”之类的值。 我们接下来做的是使用占位符而不是customerID字段,我们使用Lookup设置了一个表达式,但是该字段显示为空白。 查找方法有点像lookup。 SalesMain数据集是Tablix table1的源(datasetname)。 我们使用的查找功能是 =查询(字段!CustomerID.Value,Fields!customerID.Value,Fields!CustomerName.Value,“Customer”)

其中第一个参数是查找的键(foriegnkey),第二个参数是匹配的键(Customer的主键),第三个参数是要检索的值(在tablix单元格中显示)和第四个参数报告中的数据集(客户)

任何人都可以建议为什么Lookup服务wrk。 在sharepointlist中,我们没有使用任何查找(在某种意义上没有设置表关系。)

4 个答案:

答案 0 :(得分:3)

我在使用Sharepoint数据集和lookupset函数时遇到了同样的问题,我注意到在Sharepoint源定义中,外键字段是Lookup类型,所以我在SSRS中修改了这个字段,如下所示:

=Lookup(**CInt(Fields!CustomerID.Value)**, Fields!customerID.Value, Fields!CustomerName.Value, "Customer")

答案 1 :(得分:1)

很抱歉让您失望但一张桌子(Tablix)只能处理一个数据集。

答案 2 :(得分:1)

Jijeshan009,你是对的,Lookup应该为你做的伎俩。

注意:
- 在Business Intelligence Development Studio中预览报表时,打开错误列表并检查警告。查找错误可能在该列表上(例如转换失败) - 有时所有代码看起来都正确,但#error将显示在使用查找的列中。关闭BIDS,重新启动机器等将无法正常工作。 可以工作的是使用不同的参数执行报告(如果有的话)。您将获得新数据而不是缓存数据,查找可能会起作用 - dataset1和dataset2的列必须属于同一类型。您甚至可以将Oracle中的数据集与SQL Server中的数据集混合使用:例如varchar2列和varchar列 - @Gil Peretz,Lookup将适用于每一行,而不仅仅是第一行。我认为数据是缓存的,因为我没有性能问题(甚至使用多列)。

答案 3 :(得分:0)

稍微偏离主题,但在使用Lookup函数时也会出现此错误,其中外键(第一个参数)的值为NULL。至少这是我在尝试使用Lookup连接两个数据集时发现的,这两个数据集都是SharePoint列表。