From be61beee0472edcc15d6f37da34215f8e1763123 Mon Sep 17 00:00:00 2001 From: Alex Talarico <3521183+getalex@users.noreply.github.com> Date: Tue, 23 May 2023 21:36:52 -0400 Subject: [PATCH] Update ssrs_migration.rss with more robust features Added function to create folder if target does not contain folder. Added helper function to use relative path for linking data source which is helpful in scenarios where data source does not live in the same directory as report file. --- .../ssrs-migration-rss/ssrs_migration.rss | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss b/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss index 5c100cb2..49cb0d63 100644 --- a/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss +++ b/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss @@ -223,7 +223,16 @@ Sub Main() Console.ReadLine() - + ' Create destination folder if not present + Try + RsSnk.CreateFolder(SnkFolder.Substring(1), "/", Nothing) + Catch ex As Exception + If (ex.Message.Contains("Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException")) + Console.WriteLine("Folder already exists.") + Else + Console.WriteLine(ex.Message + Environment.NewLine) + End If + End Try Try 'Roles & Policies @@ -604,7 +613,7 @@ Sub RelinkItemReferences(snkItem As CatalogItem, srcItem As CatalogItem) Dim type As String = RsSrc.GetItemType(srcRef.Reference) Dim snkRef As ItemReference = New ItemReference snkRef.Name = srcRef.Name - snkRef.Reference = GetSnkFilename(GetSnkPath(srcRef.Reference), type) + snkRef.Reference = GetSnkFilename(GetSnkPathRef(srcRef.Reference), type) snkReferences.Add(snkRef) Next @@ -923,6 +932,12 @@ End Sub '''''''''''''' Helper Functions ''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''' +'Helper function to link snk reference with relative paths +Function GetSnkPathRef(srcPath As String) As String + Dim snkPath = srcPath.Remove(0, srcSiteUrl.LastIndexOf("/")) + Return snkPath +End Function + 'Helper function to construct correctly formatted path Function GetSnkPath(srcPath As String) As String If Not SrcIsNative Then