2009-08-03 71 views
0

我正在修改Visual Studio(2008)中的報表模型。 如果我刷新我的dsv文件(更改底層數據庫之後),然後手動反映smdl文件中的相同更改,似乎任何時候我從實體中刪除屬性都會以某種方式破壞ReportModel項目。Reporting Services 2008:手動刪除實體問題的屬性

刪除屬性刪除就像從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)。

另外,有沒有原因不是自動生成? (我被告知不是由同事,但不明白這背後的動機)..

在此先感謝您的幫助, 皮特。

回答

1

好的,我可以在這裏回答我自己的問題。 看來有一個問題涉及隱藏字段。如果您嘗試刪除的屬性或角色是從另一個角色的隱藏字段集合中引用的,那麼當您刪除它(屬性或角色)時,集合中的引用將被孤立。 它看起來好像Visual Studio不夠聰明來做到這一點 - 唉!

當您在保存後嘗試重新打開報表模型項目時,您會看到可愛的表達性錯誤消息:「對象引用未設置爲對象的實例」。

當我收到「Object Reference ...」錯誤時,我可以看到解決此問題的唯一方法是在記事本(或類似的)中打開smdl文件並搜索您所關注的東西的GUID引用刪除。注意在角色的情況下,它可能發生在關係的任何一端 - 源或目標。

0

只是爲了擴大對答案,隱藏字段將看起來像這樣(在SMDL):

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

只需手動刪除整個條目。
位狡猾,但它的作品...

相關問題