如何使用自訂組件或報告服務 」 中的內嵌程式碼

文章翻譯 文章翻譯
文章編號: 920769 - 檢視此文章適用的產品。
SQL Server 語音支援專欄

如何使用自訂組件或報告服務 」 中的內嵌程式碼

若要自訂這個資料行,您的需求,我們會想要邀請您送出您的想法,關於您問題,以及您要查看感興趣的主題討論在未來知識庫文件和 Support Voice 資料欄。您可以送出您的想法和意見反應的使用 要求 表單。此外,還有該表格底部本篇文章中的連結。
全部展開 | 全部摺疊

在此頁中

歡迎回來 !我是 Microsoft SQL Server 內容小組的 Sandy Yakob。我是您的 SQL Server Support Voice 專欄的主持人。簡略介紹我自己: 我已經向 Microsoft 14 年。過去三年來,我曾使用 SQL Server 內容小組。

本月的專欄中,John Sirmon 可讓您使用自訂組件或內嵌的程式碼,在 SQL Server 2000年報告服務和 SQL Server 2005 報告服務的步驟。這份文件被設計來提供您的基本的步驟,可協助您和自訂組件以執行 Reporting Services 中。約翰是支援工程師,與 microsoft SQL 開發人員支援小組和以來,曾 microsoft 自 2001 年 3 月。他曾與 SQL Server 超過 10 年的學位,有大量的開發與 Microsoft Visual Studio 會發生。John 擁有企要塞從 B S 度。此外,他也會保留 Microsoft 認證解決方案開發人員 (MCSD) 憑證及 Microsoft 認證資料庫管理員 (MCDBA) 認證。我希望您喜歡這個專欄,很有幫助。

建立自訂組件

若要建立自訂組件,請依照下列步驟執行:
  1. 建立 Visual Studio 的類別庫。在上 檔案 功能表指向 指向 專案然後按一下 類別庫.
  2. 指定名稱和位置。比方說,我會使用 SimpleClassLibrary 和 C:\Documents 與 Settings\user1\My Documents\Visual 製作公司 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。本範例中,在這個步驟會建立我,SimpleClassLibrary.dll,在組件我的 Documents\Visual Studio 2005\Projects\SimpleClassLibrary\bin\Debug] 資料夾中。

將自訂組件複製到 SQL Reporting Services 資料夾

您的組件可以提供給報表設計師和報表伺服器 Reporting Services 中。若要這樣做,您必須對報表設計師資料夾和報表伺服器資料夾,複製您的.dll。

附註路徑可能有點不同,取決於您的安裝路徑。
  • 報告服務 2005,請將.dll 複製至下列資料夾:
    • 程式必要的 Visual Studio 8\Common7\IDE\PrivateAssemblies
    • 設計程式的必要 SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
  • 報告服務 2000,請將.dll 複製至下列資料夾:
    • 必要 SQL Server\80\Tools\Report 設計工具程式
    • 設計程式的必要 SQL Server\MSSQL\Reporting Services\ReportServer\bin
附註您只需要這個每當您變更程式碼,因為它可以是有點繁瑣。許多軟體工程師建立批次檔來處理這項工作。以下是您可以使用的範例批次檔。
@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"
我通常會藉由建立自訂的建置後事件,在專案中處理這項工作。若要這樣做,請在專案的屬性。接下來,按一下 編譯 索引標籤,然後再按一下 建置事件.如此會開啟 建置事件 對話方塊。選擇 建置後事件命令列然後輸入下列:
複製"$ (目標路徑)"」 必要 Visual Studio 時,C:\Program 8\Common7\IDE\PrivateAssemblies\ 」
複製"$ (目標路徑)""C:\Program 必要 SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\ 」
若要指定 [我的組件位置,這就會使用建置後巨集。如需有關如何建立建置後事件的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx

Reporting Services 中加入自訂組件的參考

若要加入自訂組件的參考,請在報表設計工具中開啟 Reporting Services 報表。若要這樣做,請遵循下列步驟:
  1. 開啟報表會參照自訂組件。
  2. 在上 報表 功能表中,按一下 報表屬性.
  3. 報表屬性 對話方塊中,按一下 參考 索引標籤。
  4. 在下 參考按一下省略 (...),就是下一步] 按鈕 組件名稱 資料行行首。

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

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

如果自訂組件需要比預設執行層級的使用權限的權限,您必須變更某些程式碼存取安全性。如果程式碼存取安全性權限問題發生時,最有可能看"#error"來自您自訂的組件,而不是預期的結果。如幾個簡單的步驟,以判斷是否發生此問題,可以執行和有關如何授予其他權限給自訂組件的詳細指示,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
842419 如何將權限授與自訂組件所參考的 Reporting Services 中的報表
附註下列方法是為了判斷程式碼存取安全性的問題發生的測試。我們不建議使用下列方法,因為它所授與完全信任使用權限自訂組件。

建立新程式碼群組為自訂組件,然後再授予完全信任權限。若要這樣做,請開啟程式的必要 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>
我們建議您建立更明確的使用權限,而不是指派使用權限集合給程式碼群組集合。這份文件已預定要您馬上動身飛往並執行與自訂組件,而且這需要更多詳細資料。

附註自訂組件通常會在報表設計工具正常運作。不過,您會發現當您部署,然後試著在報表伺服器中執行的自訂組件時,預設執行層級的使用權限仍不足。其原因是,預設情況下,報表設計師 」 會執行自訂組件具有 「 完全信任 」 權限。不過,當您部署到報表伺服器的報表,報表伺服器中被授與的預設使用權限設定為執行層級。如果發生這個問題,您很可能會看到報表控制項,而非預期的結果從自訂組件中的"#Error"。

內嵌程式碼

內嵌程式碼中,會是所撰寫的程式碼 程式碼 區段 報表屬性 對話方塊。內嵌的程式碼是很好的選擇,如程式碼,就會在報表內呼叫多次。如果您想要重複使用程式碼用於多份報表,將自訂組件可能是較佳的選擇。若要建立內嵌的函數,請依照下列步驟執行:
  1. 在上 報表 功能表中,按一下 報表屬性.
  2. 報表屬性 對話方塊中,按一下 程式碼 索引標籤
  3. 新增下列函式,然後再按 [確定].
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. 在報表中,加入新的文字方塊。
  5. 將下的面指令來新增 屬性。
    =code.EmbeddedFunction
我要感謝他辛苦的工作,此發行項名字。他有深入的 SQL Server 和數個 Microsoft 開發語言的使用經驗以外,而與客戶合作,及解決困難的問題。希望大家喜歡這個月的主題!感謝您的閱讀 !以往,我們編寫哪一方面送出主題的意見,您想要在將來解決資料行或使用知識庫 要求 表單。

屬性

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

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com