代码之家  ›  专栏  ›  技术社区  ›  Pete Morgan

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

  •  0
  • Pete Morgan  · 技术社区  · 15 年前

    我正在Visual Studio(2008)中修改报表模型。 如果刷新DSV文件(在对基础数据库进行更改之后),然后手动反映smdl文件中的相同更改,则似乎每次从实体中删除属性时,都会以某种方式损坏ReportModel项目。

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

    <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之外)。

    还有,有什么理由 Autogenerating? (一位同事告诉我不要这样做,但我不明白这背后的动机)。

    事先谢谢你的帮助, Pete。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Pete Morgan    15 年前

    好的,我可以在这里回答我自己的问题。 似乎有一个问题与 隐藏字段 .如果试图删除的属性或角色是从另一个角色的隐藏字段集合中引用的,则在删除该属性或角色(该属性或角色)时,集合中保留的引用将被孤立。 看起来,Visual Studio还不够聪明,无法做到这一点-呸!

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

    当我得到“object reference…”错误时,唯一能解决这个问题的方法是在记事本中打开smdl文件(或类似文件),并搜索要删除的内容的guid引用。注意,在角色的情况下,它可能发生在关系的源端或目标端。

        2
  •  0
  •   Blachshma naturom    12 年前

    只需扩展答案,隐藏字段将如下所示(在 SMDL ):

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

    只需手动删除整个条目。
    有点狡猾,但它奏效了…