gpt4 book ai didi

vb.net - 使用命令行跨子文件夹删除多个 SSRS 报告?

转载 作者:行者123 更新时间:2023-12-02 04:27:15 25 4
gpt4 key购买 nike

我是 SSRS 部署的新手,我一直在四处搜索,但找不到适合我的情况的确切场景。我在 SSRS 2012 中的不同子文件夹中部署了多个报告。例如:

  • 销售/销售报告1
  • 销售/销售报告2
  • 财务/finReport1
  • 财务/finReport2
  • 杂项/miscReport1
  • 杂项/miscReport2

由于有时 SSRS 不喜欢覆盖报告文件,我想在部署任何新报告之前删除实例中的所有报告文件。我可以通过使用 rs.exe 调用此脚本成功删除文件夹及其内容:

Public Sub Main()  

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

Dim bh As New BatchHeader()

bh.BatchID = rs.CreateBatch()

rs.BatchHeaderValue = bh

'Delete all reports from Main Folder and sub folders.Note:The Folders will be deleted also.
'If do not want to delete the folder, we could use rs.CreateFolder(“Folder name”, “/Main Folder”, “nothing”) to create a new one with nothing.

rs.DeleteItem("/Sales")
rs.DeleteItem("/Finance")
rs.DeleteItem("/Misc")

'Delete all reports from a sub folder, and delete the sub folder
'rs.DeleteItem("/Main Folder/Sub Folder ")

rs.BatchHeaderValue = bh

' Delete folders using batch header.

Try

rs.ExecuteBatch()
Console.WriteLine("Folders deleted successfully.")

Catch e As SoapException
Console.WriteLine(e.Detail.InnerXml.ToString())

Finally
rs.BatchHeaderValue = Nothing

End Try

End Sub 'Main

问题在于,如果这些文件夹中的任何一个不存在,脚本将停止。我正在尝试确定处理此问题的最佳方法。最好的方法是清空文件夹并将它们留在那里,还是找到一种方法来忽略错误并继续?

根据答案,我将如何在此脚本中调用它?

最佳答案

您可以通过运行父文件夹中的项目并查找具有预期名称的任何子文件夹来检查该文件夹是否存在。然后,仅当该文件夹存在时,才尝试删除该文件夹。

这应该可以解决您的问题,即您只有在知道它存在时才将其删除。

您的代码可能类似于:

Public Sub Main()

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

DeleteFolder("Sales")
DeleteFolder("Finance")

End Sub

Public Sub DeleteFolder(ByVal folderName As String)

Dim items() as CatalogItem
Dim item As CatalogItem
Dim folderExists As Boolean = False

items = rs.ListChildren("/", False)

For Each item In items

If item.TypeName = "Folder" And item.Name.Equals(folderName)

folderExists = True

End If

Next

If folderExists

Try

rs.DeleteItem("/" + folderName)
Console.WriteLine("Deleted folder {0}", folderName)

Catch e As Exception

Console.WriteLine(e.Message)

End Try

Else

Console.WriteLine("Folder {0} does not exist", folderName)

End If

End Sub

这仅检查 / 文件夹 - 您可能需要进行调整以匹配您的设置。

关于vb.net - 使用命令行跨子文件夹删除多个 SSRS 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com