首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用c#以编程方式检查报表服务器上是否存在文件夹

如何使用c#以编程方式检查报表服务器上是否存在文件夹
EN

Stack Overflow用户
提问于 2014-12-05 17:02:39
回答 5查看 3.2K关注 0票数 4

我花了好几个小时寻找,但没有成功。

我正在编程地创建SSRS中报表的快照,使用创建报表文件夹的c#。报告是在这些文件夹中创建的,但是为了防止出现错误,我将删除整个文件夹结构,然后重新创建报告,以防止SSRS抛出异常。

我正在使用ReportingService2010。

代码语言:javascript
复制
ReportingService2010.DeleteItem(deleteFolderPath);

代码语言:javascript
复制
ReportingService2010.CreateFolder(folder, parentFolder, null);

-这是我需要检查文件夹和报告是否存在的行

代码语言:javascript
复制
var ret = CheckExist(linkedReportName, newParent);

var param = GetReportParameters(existingReportPath);

ReportingService2010.SetItemParameters(existingReportPath, param);

--如果不删除文件夹结构,则会在try/Catch之后抛出错误

代码语言:javascript
复制
ReportingService2010.CreateLinkedItem(linkedReportName, newParent, existingReportPath, props);

我需要添加一个方法来查看报表和报表文件夹是否已经创建。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-12-08 23:03:16

另一种可能的选择是直接使用报表服务器数据库中Catalog表的path、type和parentid字段。如果您打开Server并查看该表,您应该非常清楚需要做什么。

可以使用C#运行SQL命令,如

代码语言:javascript
复制
SELECT COUNT(*) FROM CATALOG WHERE PATH LIKE '%TheFolderNameImLookingFor%'

如果计数大于零,则文件夹存在。

您可以根据您的需要更改此选项。文件夹项的类型为1;报表项的类型为2,因此可以使用此类型来区分报表和文件夹。

票数 0
EN

Stack Overflow用户

发布于 2015-10-22 08:00:04

我认为最好的方法是ReportService2010.GetItemType()方法。这将返回一个字符串(ReportingService2010.ListItemTypes()方法),包括不存在(而不是抛出异常)的可能值"Unknown"或文件夹的"Folder"

票数 2
EN

Stack Overflow用户

发布于 2015-07-30 10:24:34

如何删除文件夹,如果它们存在使用ListChildren

代码语言:javascript
复制
        var items = ReportingService2010.ListChildren(parentFolder, false);
        if (items.Where(x => x.TypeName == "Folder").Any(x => x.Name == folder))
        {
            ReportingService2010.DeleteItem(folder, parentFolder, null);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档