Reporting Services 2008:从实体问题手动删除属性

时间:2009-08-03 12:31:53

标签: reporting-services ssrs-2008

我在Visual Studio(2008)中修改了我的报表模型。 如果我刷新我的dsv文件(在更改底层数据库之后),然后在smdl文件中手动反映相同的更改,似乎每当我从实体中删除一个属性时它会以某种方式破坏ReportModel项目。

删除属性会从smdl文件的<IdentifyingAttributes><DefaultDetailAttributes>部分删除以下内容:

<AttributeReference>
  <!--My Attribute-->
  <AttributeID>G30ea3652-7f92-41d0-a25a-500c82317288</AttributeID>
</AttributeReference>

并且还删除了属性本身:

<Attribute ID="G30ea3652-7f92-41d0-a25a-500c82317288">
  <Name>My Attribute Name</Name>
  <DataType>Integer</DataType>
  <Nullable>true</Nullable>
  <SortDirection>Descending</SortDirection>
  <Width>4</Width>
  <Format>g</Format>
  <EnableDrillthrough>true</EnableDrillthrough>
  <ContextualName>Merge</ContextualName>
  <ValueSelection>Dropdown</ValueSelection>
  <Column Name="Blah" />
</Attribute>

我看不出这会弄乱smdl文件。

无论如何,我的问题是:还有其他人有同样的问题吗? 如果是这样,有没有办法围绕它(除了自动生成smdl)。

另外,是否有理由自动生成? (我被一位同事告知不要,但不明白这背后的动机)..

先谢谢你的帮助, 皮特。

2 个答案:

答案 0 :(得分:1)

好的,我可以在这里回答我自己的问题。 似乎存在与隐藏字段相关的问题。如果您尝试删除的属性或角色是从另一个角色的隐藏字段集合中引用的,那么当您删除它(属性或角色)时,集合中保存的引用将被孤立。 看起来Visual Studio不够聪明,不能这样做 - 呸!

当您在保存后尝试重新打开报表模型项目时,您会收到一条可爱的,富有表现力的错误消息:“对象引用未设置为对象的实例。”

当我收到“对象引用...”错误时,我能看到解决此问题的唯一方法是在记事本(或类似)中打开smdl文件并搜索要删除的内容的GUID引用。注意,在角色的情况下,它可能发生在关系的任何一端 - 源或目标。

答案 1 :(得分:0)

为了扩展答案,隐藏字段看起来像这样(在SMDL中):

<!-- NameOfEntity -->
<FieldFolderItemId>G3a4a8c45-c900-4286-afdd-d31deb70be41</FieldFolderItemID>

手动删除整个条目 有点狡猾,但它有效...