Рассматривая вопрос и ответ Томалака, я предполагаю, что сервер отчетов сможет обращаться к папкам, хранящимся в БД:
Во-первых, настройте запрос, чтобы получить обратно набор результатов путей - я полагаю, у вас не возникнет проблем с этой частью. Затем вам нужно добавить пользовательскую функцию кода в ваш отчет: 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