2008-10-02 67 views

回答

1

望着問題和託默勒格的反應,和我假設報告服務器將能夠達到在DB舉行的文件夾:

首先建立了查詢,讓你回結果集的路徑 - 我假設你不會遇到這部分問題。接下來,您需要爲報告添加自定義代碼功能:http://msdn.microsoft.com/en-us/library/ms155798.aspx - 此功能將文件夾路徑作爲參數,並返回文件夾的大小。你必須在VB.Net寫的,如果你要嵌入的代碼在報告中,或者你可以編寫一個DLL,並把該英寸

一個例子VB.Net代碼塊(記住,你可能需要。與System.IO現在http://www.freevbcode.com/ShowCode.asp?ID=4287

Public Shared Function GetFolderSize(ByVal DirPath As String, _ 
    Optional IncludeSubFolders as Boolean = True) As Long 

    Dim lngDirSize As Long 
    Dim objFileInfo As FileInfo 
    Dim objDir As DirectoryInfo = New DirectoryInfo(DirPath) 
    Dim objSubFolder As DirectoryInfo 

Try 

'add length of each file 
    For Each objFileInfo In objDir.GetFiles() 
    lngDirSize += objFileInfo.Length 
    Next 

    'call recursively to get sub folders 
    'if you don't want this set optional 
    'parameter to false 
If IncludeSubFolders then 
    For Each objSubFolder In objDir.GetDirectories() 
    lngDirSize += GetFolderSize(objSubFolder.FullName) 
    Next 
End if 

Catch Ex As Exception 


End Try 

    Return lngDirSize 
End Function 

前綴的對象),在報告中,您的表,你必須爲顯示文件夾大小的表情有點像細胞:

=Code.GetFolderSize(Fields!FolderPath.Value) 

我懷疑這種方法對於手動查看的報告是有效的,但你可能會這樣做爲小結果集擺脫它,還是通過電子郵件發送預定報告?

哦,這塊建議你「可以」碰到使用System.IO從RS內的權限問題:http://blogs.sqlxml.org/bryantlikes/pages/824.aspx

0

你能否澄清誰應該在你的情況怎麼辦?你想讓SQL Server獲得信息,還是想讓Reporting Server做到這一點?

究竟你的「文件夾大小」是什麼意思?是「一個文件夾,總結每個文件」足夠還是需要遞歸?無論哪種方式,我會去使用一個自定義的.NET函數,它使用System.IO.Directory和它的親戚。

+0

Tomalak, 我希望能夠在SSRS報告中顯示文件夾的大小。該文件夾的路徑存儲在SQL Server數據庫中。 如果「System.IO.Directory」是正確的方向,有人可以舉例說明如何在SSRS中對其進行編碼。謝謝。 – MarlonRibunal 2008-10-08 18:29:56

0

我會考慮這個分裂成兩個部分,也許Windows服務來掃描目錄和將數據聚合到數據庫中,然後像往常一樣使用SSRS來報告數據庫。

我建議這樣做的原因是使用master..xp_filesize,並且它是啓動SQL Server服務的帳戶需要訪問要掃描的路徑。一旦這變成訪問其他機器上的路徑,我會不太舒服的安全影響。

希望這有助於

0

在SSRS你可以用自定義數據擴展的幫助下做到這一點。 ü需要給出的數據源爲您的文件夾名的路徑,它會擷取您的文件及其相關信息並顯示

更多參考和自定義DLL使用 http://www.devx.com/dbzone/Article/31336/0/page/4

我已經做了這點。

注意:您必須對報表設計器和報表管理器配置文件進行相關更改。