文章編號: 920769 - 上次校閱: 2007年1月26日 - 版次: 1.0

如何使用自訂組件] 或 [報表服務中的內嵌程式碼

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
SQL Server 支援語音資料行

如何使用自訂組件] 或 [報表服務中的內嵌程式碼

若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It (http://support.microsoft.com:80/common/survey.aspx?scid=sw;en;1301&p0=&p1=&p2=&p3=&p4=) 表單的意見反應。另外還有連結至表單底部的 這個資料行。

在此頁中

全部展開 | 全部摺疊
歡迎回來 !我沙石 Yakob 與 Microsoft SQL Server 內容的小組。我是 SQL Server 支援語音資料行您 hostess。關於我的快速附註: 我曾經與 Microsoft 14 年。過去三年來我已工作與 SQL Server 內容的小組。

本月的資料行 John Sirmon 會提供您步驟使用 「 自訂組件或在 SQL Server 2000 報表服務和 SQL Server 2005 報表服務的內嵌程式碼。 這篇文章被為了提供您以取得您最多的基本步驟,執行與自訂組件中報告服務而設計的。 John 是與 SQL 開發 o 人 h 員 ? 工 u 具 ? 支援小組在 Microsoft 的支援擴大工程師,而且已自 2001 年三月 Microsoft 的工作。他有超過 10 年的 SQL Server 使用過,而且有廣泛的開發體驗 Microsoft Visual Studio。 John 中從 「 要塞商務管理持有 B.S。 程度。他也保留 Microsoft 認證方案開發 o 人 h 員 ? 工 u 具 ? (MCSD) 憑證與 Microsoft 認證資料庫系統管理員 (MCDBA) 憑證。我希望您喜歡資料行,並發現,很有幫助。

建立自訂組件

若要建立自訂組件,請依照下列步驟執行:
  1. 建立 Visual Studio 類別庫。 在 [檔案] 功能表上指向 [新增],指向 [專案],然後再按一下 [類別庫]。
  2. 指定名稱和位置。 比方說,我使用 SimpleClassLibrary 和 C:\Documents 和 Settings\user1\My Documents\Visual Studio 2005\projects。
  3. 開啟類別檔案 (在我情況,Class1.vb),然後建立您想要在報表服務中使用的函式。 在我的情況下我只是建立一個簡單的共用函式。

    附註因為這是共用函式 (C# 中靜態),我們沒有使用執行個體化的物件的存取。 因為這對我們參考我們在本文稍後的組件的方式,請記住這點。
    Public Class Class1
    
        Public Shared Function DoSomething() As String
            Return "string data returned from custom assembly"
        End Function
    
    End Class
    
  4. 一旦您完成新增所有程式碼時,請按一下 [建置] 功能表上的 [建置 SimpleClassLibrary]。 這個步驟會在各自的 bin 資料夾中建立組件或受管理的.dll。 在我的範例這個步驟會建立我的組件在我 Documents\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug 資料夾中的 SimpleClassLibrary.dll。

將自訂組件複製到 SQL 報表服務] 資料夾

讓您的組件使用報表設計師和報表伺服器報告服務 」 中。 如果要執行這項操作,您必須複製您.dll 對報表設計工具] 資料夾和 「 報表伺服器資料夾。

附註路徑可能會有點不同,取決於您的安裝路徑。
  • 報告服務 2005 年的將.dll 複製到下列的資料夾:
    • 程式 Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • 程式 Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
  • 報告服務 2000 將.dll 複製到下列的資料夾:
    • 程式 Files\Microsoft SQL Server\80\Tools\Report 設計工具
    • 程式 Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
附註因為您必須進行此每次您變更程式碼,可能會有點繁瑣。 許多開發人員建立批次檔,以處理這項工作。 這裡是範例批次檔可以 use.
@ECHO OFF
REM   Name: SRSDeploy.bat
REM
REM   This batch files copies my custom assembly to my Reporting Services folders.
REM   Run this from the directory where the customer assembly was compiled.
REM   Be sure to close any applications that have your custom assembly open. 
REM
REM   This is the SQL Server 2005 version:
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"  
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin" 
REM This is the SQL Server 2000 version:
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer"
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin"
我通常是藉由在我的專案中建立自訂的建置後事件處理這項工作。 若要執行此動作請移至您的專案的屬性。 接下來,按一下 [編譯] 索引標籤,然後再按一下 [建置事件。這樣會開啟 [建置事件] 對話方塊。 選擇 Post-build 事件命令列,然後鍵入 [下列:
複製"$ (TargetPath)""C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\"
複製"$ (TargetPath)""C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"
這會使用建置後的巨集來指定我組件的位置。 如需有關建立建置後事件的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx (http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx)

報告服務 」 中將參考加入自訂組件

若要加入自訂組件的參考,請在報表設計工具中開啟報表服務報表。要這麼做,請您執行下列步驟:
  1. 開啟會參考自訂組件的報表。
  2. 按一下 [報表] 功能表 報表屬性
  3. 在 [報表屬性] 對話方塊按一下 [參考] 索引標籤。
  4. 參考,] 下按一下省略符號 (...) 按鈕旁 組件名稱 的資料行行首的。

    附註[類別] 區段只是執行個體成員。不為靜態成員中。(也稱為 「 共用 」 在某些我們報告服務 」 文件) 的靜態表示成員是類別的每個執行個體可以使用,而且每個執行個體使用相同的儲存位置。藉由共用的關鍵字 Microsoft Visual Basic 和 C# 中的 static 關鍵字宣告靜態成員。 這可以是有點令人困惑。 這表示是如果您的自訂組件中包含您需要存取的執行個體成員您將必須在 [類別] 區段中指定類別名稱和執行個體名稱。 因為我將從報表服務被呼叫的方法定義為靜態,在 Visual Basic 中使用共用的關鍵字,我會使用 < 參考 > 一節 (而非 類別 區段。
  5. 在 [加入參考] 對話方塊中,按一下 [瀏覽]。(在 SQL Server 2005 中按一下 [瀏覽] 索引標籤])。
  6. 找出並按一下自訂組件。按一下 [開啟舊檔]。(在 SQL Server 2005 中按一下 [新增 代替 開啟舊檔])。
  7. 在 [加入參考] 對話方塊中,按一下 [確定]
  8. 在 [報表屬性] 對話方塊中,按一下 [確定]
現在,我們已經準備好使用中報表服務的自訂組件。
  1. 在 [報表設計工具中開啟報表 (.rdl 檔案)。
  2. 若要示範如何使用自訂組件中報告服務,新增文字方塊。在報表執行此動作請從工具箱拖曳空白的文字方塊。
  3. [文字] 方塊內容中按一下 [] 屬性,然後使用下列語法,以呼叫函式]。
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    在我的範例我指定下列。
    =SimpleClassLibrary.Class1.DoSomething()
    其他的格式用來參照報表服務的程式碼。 比方說使用下列格式如果您呼叫內嵌程式碼
    =Code.MethodName()
    如果您呼叫一個非靜態,或執行個體為基礎方法從藉由使用執行個體的自訂組件內,使用下列格式。
    =Code.InstanceName.Method
    附註您會設定您的參考以不同方式如果您想要使用執行個體為基礎的方法。 若要執行此動作您會需要移至 報表內容,按一下 [參考] 索引標籤然後再指定類別名稱和執行個體名稱在 [類別] 區段中。

如果自訂組件需要額外的權限程式碼存取安全性

如果自訂組件需要更多的權限比預設執行層級的權限,您必須讓某些程式碼存取安全性變更。 以程式碼存取安全性權限問題發生您很可能會看到 「 # 錯誤 」 從您的自訂組件而非預期的結果。您可以執行決定是否發生這個問題的幾個快速步驟,並如需有關如何以額外的權限授與自訂組件的詳細指示,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項在下列文件:
842419? (http://support.microsoft.com/kb/842419/ ) 如何報告服務中的某一報表中參考的自訂組件授與權限
附註下列的方法是測試來協助您決定如果發生程式碼存取安全性問題。我們不建議使用下列方法,因為它對您的自訂組件授與完全信任權限。

為自訂的組件建立新的 CodeGroup 並再授與完全信任權限。若要這麼做,開啟程式 Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config] 檔案,然後加入下列程式碼
<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="FullTrust"
   Name="MyCodeGroup"
   Description="Code group for my data processing extension">
      <IMembershipCondition class="UrlMembershipCondition"
         version="1"
         Url="C:\pathtocustomassembly\customassembly.dll"
       />
</CodeGroup>
我們建議您建立更特定的使用權限,將指派這個使用權限集合到您的程式碼群組的集合。 這篇文章是預定取得您最多,而且與自訂組件正在執行,這需要更多詳細資料。

附註自訂組件通常在正常報表設計工具。但是,您可能會發現當您部署,然後試著在報表伺服器中執行自訂組件,預設執行層級的權限是不足。 根據預設,原因是,報表設計師 」 完全信任 」 權限以執行自訂組件。 不過,當您在報表伺服器來部署您的報表時報表伺服器中授與預設權限是設為執行層級。 如果就會發生這個問題就很可能會看到報表控制項,而非預期的結果從自訂組件中的 「 # 錯誤 」。

內嵌的程式碼

內嵌的程式碼是 報表屬性] 對話方塊的 [程式碼] 區段所撰寫的程式碼。 內嵌的程式碼是一個很好的選擇,將會在您的報表內呼叫數次的程式碼。 如果要在多個報表中的程式碼重複使用自訂組件可能是較好的選擇。 若要建立內嵌的函式,請依照下列步驟執行:
  1. 按一下 [報表] 功能表 報表屬性
  2. 在 [報表屬性] 對話方塊按一下 [程式碼] 索引標籤
  3. 新增下列函式,然後按一下 [確定]
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. 在報表中新增一個新的文字方塊。
  5. 將下列程式碼加入至 [] 屬性。
    =code.EmbeddedFunction
我喜歡感謝他辛苦的工作,在這個發行項上的名字在後。 他有深入的經驗,SQL Server 和數個 Microsoft 開發語言中,而且喜歡使用的客戶,並解決困難的問題。願 enjoyed 本月 ’s 主題!感謝您的閱讀! 如往常請隨意送出您想要在將來解決資料行的主題或使用 Ask For It (http://support.microsoft.com:80/common/survey.aspx?scid=sw;en;1301&p0=&p1=&p2=&p3=&p4=) 表單的知識庫中的想法。

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Reporting Services
  • Microsoft SQL Server 2000 Reporting Services
關鍵字:?
kbmt kbhowto KB920769 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:920769? (http://support.microsoft.com/kb/920769/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。