C2026-058 Check all Tables for if Acc Page Id Prefix is Used More than Once
This commit is contained in:
1 parent
ae9fb0eb67
commit
82f11fa696
10 files changed
+717
-133
No files matched your search
@@ -25035,6 +25035,162 @@ IF (@@Error = 0) PRINT 'Trigger Alteration: tr_Contents_Delete Succeeded'
|
||||
ELSE PRINT 'Trigger Alteration: tr_Contents_Delete Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: View [dbo].[vwDupAccIDs] ***********************/
|
||||
If Exists(SELECT * FROM sys.objects Where name = 'vwDupAccIDs' AND type in (N'V'))
|
||||
DROP VIEW [dbo].[vwDupAccIDs]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 10/7/2026
|
||||
Description: View for Duplicate Accessory Page IDs in ROs in PROMS
|
||||
Usage: Select * FROM dbo.vwDupAccIDs Order by RofstID, AccPageID, GroupTitle
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE View [dbo].[vwDupAccIDs]
|
||||
AS
|
||||
SELECT rochild.AccPageID, NUMAccPageIDs,
|
||||
AccPageIDPrefix = dbiAP, GroupTitle = dbiTitle,
|
||||
title, value, roid, rochild.RofstID
|
||||
FROM
|
||||
vwRofstData_RofstChildren rochild
|
||||
INNER JOIN
|
||||
(SELECT ROFstID = Max(ROFstID)
|
||||
FROM ROFsts
|
||||
Group by RODbID) latestfsts
|
||||
ON latestfsts.ROFstID = rochild.RofstID
|
||||
INNER JOIN
|
||||
(SELECT NUMAccPageIDs=COunt(*), RoFstID, AccPageID FROM
|
||||
vwRofstData_RofstChildren
|
||||
WHERE AccPageID IS NOT NULL
|
||||
Group by RoFstID, AccPageID
|
||||
Having Count(*) > 1
|
||||
) dupAcc
|
||||
ON latestfsts.ROFstID = dupAcc.RofstID
|
||||
AND dupAcc.AccPageID = rochild.AccPageID
|
||||
|
||||
go
|
||||
|
||||
IF (@@Error = 0) PRINT 'View [vwDupAccIDs] Succeeded'
|
||||
ELSE PRINT 'View [vwDupAccIDs] Error on Creation'
|
||||
go
|
||||
|
||||
/****** Object: StoredProcedure [getDupAccIDs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDupAccIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getDupAccIDs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 10/7/2026
|
||||
Description: Procedure for Duplicate Accessory Page IDs in ROs in PROMS
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[getDupAccIDs]
|
||||
AS
|
||||
BEGIN
|
||||
Select * FROM dbo.vwDupAccIDs Order by RofstID, AccPageID, GroupTitle
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getDupAccIDs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getDupAccIDs Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: StoredProcedure [getDupAccPrefixes] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDupAccPrefixes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getDupAccPrefixes];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 10/7/2026
|
||||
Description: Procedure for Duplicate Accessory Page Prefixes in ROs in PROMS
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[getDupAccPrefixes]
|
||||
AS
|
||||
BEGIN
|
||||
SELECT AccPageIDPrefix = dbiAP, GroupTitle = dbiTitle
|
||||
FROM
|
||||
RofstDatabase
|
||||
INNER JOIN
|
||||
(SELECT ROFstID = Max(ROFstID)
|
||||
FROM ROFsts
|
||||
Group by RODbID) latestfsts
|
||||
ON latestfsts.ROFstID = RofstDatabase.RofstID
|
||||
INNER JOIN
|
||||
(SELECT RoFstID, APPrefix = dbiAP FROM
|
||||
RofstDatabase
|
||||
Group by RoFstID, dbiAP
|
||||
Having Count(*) > 1
|
||||
) dupAcc
|
||||
ON latestfsts.ROFstID = dupAcc.RofstID AND APPrefix = dbiAP
|
||||
Order by dbiAP, dbiTitle
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getDupAccPrefixes Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getDupAccPrefixes Error on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [getDocsDupAccIDs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocsDupAccIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getDocsDupAccIDs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 10/7/2026
|
||||
Description: Get PROMS Documents containing Duplicate Accessory Page IDs
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[getDocsDupAccIDs]
|
||||
AS
|
||||
BEGIN
|
||||
Select Path = CASE WHEN VN.ParentName = VN.GrandParentName THEN ''
|
||||
ELSE VN.GrandParentName + '->' END +
|
||||
VN.ParentName + '->' + VN.FolderName + '->' + Pth.Path + '`' + Text,
|
||||
AccPageID, DupAcc.roid, Contents.ContentID
|
||||
FROM dbo.vwDupAccIDs DupAcc
|
||||
INNER JOIN DROUsages with (NoLock) ON LEFT(DROUsages.ROID,12) = LEFT(DupAcc.roid,12)
|
||||
INNER JOIN Entries with (NoLock) on DROUsages.DocID = Entries.DocID
|
||||
INNER JOIN Contents with (NoLock) on Contents.ContentID = Entries.ContentID
|
||||
INNER JOIN Items with (NoLock) on Contents.ContentID = Items.ContentID
|
||||
INNER JOIN vefn_getversionItems('') vi on Contents.contentID = vi.contentID
|
||||
INNER JOIN VEFN_GetVersionNames() VN ON vi.VersionID = VN.VersionID
|
||||
OUTER APPLY
|
||||
(Select Path = REPLACE(dbo.ve_GetPath(Items.ItemID), '\u8209?', '-')) Pth
|
||||
Order by GrandParentName, ParentName, FolderName, Path, Text, AccPageID
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getDocsDupAccIDs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getDocsDupAccIDs Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
| ADD New Code Before this Block |
|
||||
@@ -25068,8 +25224,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '07/16/2026 8:30 AM'
|
||||
set @RevDescription = 'Reworked ve_GetParentItem for Performance improvement'
|
||||
set @RevDate = '10/7/2026 9:30 AM'
|
||||
set @RevDescription = 'Added Reports for Duplicate Acc Page IDs in ROs'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
@@ -263,7 +263,7 @@ WITH EXECUTE AS OWNER
|
||||
AS
|
||||
SELECT COUNT (RecID)
|
||||
FROM [ROALL]
|
||||
WHERE [ROTable]=@ROTable AND AccPageID=@AccPageID
|
||||
WHERE [ROTable]=@ROTable AND AccPageID=@AccPageID
|
||||
GO
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getCountRecidByAccid Succeeded'
|
||||
@@ -827,4 +827,34 @@ IF (@@Error = 0) PRINT 'Table Creation: ROALL Succeeded'
|
||||
ELSE PRINT 'Table Creation: DeleteLog ROALL on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[checkAccPagePrefixUsed] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[checkAccPagePrefixUsed]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [checkAccPagePrefixUsed];
|
||||
GO
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2026 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE PROCEDURE [dbo].[checkAccPagePrefixUsed]
|
||||
(
|
||||
@Prefix char(32),
|
||||
@ROTable char(8)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
SELECT COUNT(*)
|
||||
FROM
|
||||
(
|
||||
SELECT ROTable, cast(info as xml) xinfo
|
||||
FROM [ROALL]
|
||||
WHERE Info LIKE '%AccPageIDPrefix%' AND ROTable <> @ROTable
|
||||
) TBL
|
||||
cross apply
|
||||
xinfo.nodes('vlnGroup') t1(r1)
|
||||
WHERE r1.value('@AccPageIDPrefix','varchar(max)') = @Prefix
|
||||
|
||||
GO
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: checkAccPagePrefixUsed Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: checkAccPagePrefixUsed Error on Creation'
|
||||
GO
|
||||
@@ -380,6 +380,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmGenTools.resx">
|
||||
<DependentUpon>frmGenTools.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmPDFStatusForm.resx">
|
||||
<DependentUpon>frmPDFStatusForm.cs</DependentUpon>
|
||||
|
||||
@@ -441,69 +441,240 @@ namespace VEPROMS
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText("Generating User Access Control Report");
|
||||
|
||||
using (DataTable dt = UserReports.GetUserAccessControlData())
|
||||
{
|
||||
// Start Excel and get Application object.
|
||||
xls.Application excel = new xls.Application
|
||||
{
|
||||
// Make Excel invisible and disable alerts.
|
||||
Visible = false,
|
||||
DisplayAlerts = false
|
||||
};
|
||||
//Get data and Create excel file from it
|
||||
Create_ExcelFile(UserReports.GetUserAccessControlData(), "UAC Report", filename);
|
||||
|
||||
// Create a new Workbook.
|
||||
xls.Workbook excelworkBook = excel.Workbooks.Add();
|
||||
|
||||
// Create a Worksheet.
|
||||
var workSheet = (xls.Worksheet)excelworkBook.ActiveSheet;
|
||||
workSheet.Name = "UAC Report";
|
||||
|
||||
// column headings
|
||||
for (var i = 0; i < dt.Columns.Count; i++)
|
||||
{
|
||||
workSheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
|
||||
}
|
||||
|
||||
// rows
|
||||
for (var i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
for (var j = 0; j < dt.Columns.Count; j++)
|
||||
{
|
||||
workSheet.Cells[i + 2, j + 1] = dt.Rows[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
//resize the columns to match the data
|
||||
workSheet.Columns.AutoFit();
|
||||
|
||||
//freeze the top row, and highlight those cells
|
||||
workSheet.Application.ActiveWindow.SplitRow = 1;
|
||||
workSheet.Application.ActiveWindow.FreezePanes = true;
|
||||
workSheet.Cells.Range[workSheet.Cells[1, 1], workSheet.Cells[1, dt.Columns.Count]].Interior.Color = xls.XlRgbColor.rgbLightBlue;
|
||||
|
||||
//save the excel file
|
||||
excelworkBook.SaveAs(filename);
|
||||
excelworkBook.Close();
|
||||
excel.Quit();
|
||||
|
||||
//release any in use com objects
|
||||
releaseObject(workSheet);
|
||||
releaseObject(excelworkBook);
|
||||
releaseObject(excel);
|
||||
|
||||
}
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Generate User Access Control Report Completed", "User Access Control Report");
|
||||
|
||||
}
|
||||
|
||||
//C2025-009 Report for tracking PROMS Users / security
|
||||
//for releasing any Excel com objects still in memory
|
||||
private void releaseObject(object obj)
|
||||
#region Duplicate Accessory Page IDs
|
||||
|
||||
//C2026-058 Report for tracking Duplicate Accessory Page IDs in ROs in PROMS
|
||||
|
||||
//hold the filename for cases when scheduled for later
|
||||
private string DupAccIDsfilename;
|
||||
private void btnDupAccIDs_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DupAccIDsfilename))
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "Excel XLS (*.xlsx)|*.xlsx",
|
||||
FileName = "DupAccIDsReport.xlsx"
|
||||
};
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
DupAccIDsfilename = sfd.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
txtProcess.Clear();
|
||||
txtResults.Clear();
|
||||
|
||||
if (!string.IsNullOrEmpty(DupAccIDsfilename))
|
||||
{
|
||||
Generate_DupAccIDs_Report(DupAccIDsfilename);
|
||||
}
|
||||
|
||||
DupAccIDsfilename = null;
|
||||
}
|
||||
|
||||
private void Generate_DupAccIDs_Report(string filename)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Generate Duplicate Accessory Page IDs Report in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText("Generating Duplicate Accessory Page IDs Report");
|
||||
|
||||
//Get data and Create excel file from it
|
||||
Create_ExcelFile(UserReports.GetDupAccIDsData(), "Dup Acc IDs", filename);
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Generate Duplicate Accessory Page IDs Report Completed", "Duplicate Accessory Page IDs Report");
|
||||
}
|
||||
|
||||
//C2026-058 Report for tracking Duplicate Accessory Page Prefixes in ROs in PROMS
|
||||
|
||||
//hold the filename for cases when scheduled for later
|
||||
private string DupAccPrefixesfilename;
|
||||
private void btnDupAccPrefixes_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DupAccPrefixesfilename))
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "Excel XLS (*.xlsx)|*.xlsx",
|
||||
FileName = "DupAccPrefixesReport.xlsx"
|
||||
};
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
DupAccPrefixesfilename = sfd.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
txtProcess.Clear();
|
||||
txtResults.Clear();
|
||||
|
||||
if (!string.IsNullOrEmpty(DupAccPrefixesfilename))
|
||||
{
|
||||
Generate_DupAccPrefixes_Report(DupAccPrefixesfilename);
|
||||
}
|
||||
|
||||
DupAccPrefixesfilename = null;
|
||||
}
|
||||
|
||||
private void Generate_DupAccPrefixes_Report(string filename)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Generate Duplicate Accessory Page Prefixes Report in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText("Generating Duplicate Accessory Page Prefixes Report");
|
||||
|
||||
//Get data and Create excel file from it
|
||||
Create_ExcelFile(UserReports.GetDupAccPrefixesData(), "Dup Acc Prefixes", filename);
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Generate Duplicate Accessory Page Prefixes Report Completed", "Duplicate Accessory Page Prefixes Report");
|
||||
}
|
||||
|
||||
//C2026-058 Report for tracking Word Sections/Documents containing Duplicate Accessory Page IDs
|
||||
|
||||
//hold the filename for cases when scheduled for later
|
||||
private string WordDocsDupAccIDsfilename;
|
||||
private void btnWordDocsDupAccIDs_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(WordDocsDupAccIDsfilename))
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "Excel XLS (*.xlsx)|*.xlsx",
|
||||
FileName = "WordDocsDupAccIDsReport.xlsx"
|
||||
};
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
WordDocsDupAccIDsfilename = sfd.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
txtProcess.Clear();
|
||||
txtResults.Clear();
|
||||
|
||||
if (!string.IsNullOrEmpty(WordDocsDupAccIDsfilename))
|
||||
{
|
||||
Generate_WordDocsDupAccIDs_Report(WordDocsDupAccIDsfilename);
|
||||
}
|
||||
|
||||
WordDocsDupAccIDsfilename = null;
|
||||
}
|
||||
|
||||
|
||||
private void Generate_WordDocsDupAccIDs_Report(string filename)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Generate Word Sections Containing Duplicate Accessory Page IDs Report in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText("Generating Word Sections Containing Duplicate Accessory Page IDs Report");
|
||||
|
||||
//Get data and Create excel file from it
|
||||
Create_ExcelFile(UserReports.GetDocsDupAccIDsData(), "Word Dup AccIDs", filename);
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Generate Word Sections Containing Duplicate Accessory Page IDs Report Completed", "Word Sections Containing Duplicate Accessory Page IDs Report");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//C2026-058 Check all Tables for if Acc Page Id Prefix is Used More than Once
|
||||
//Create an excel file made up of data table dt,
|
||||
//with worksheet named (name) and file name (filename)
|
||||
private void Create_ExcelFile(DataTable dt, string name, string filename)
|
||||
{
|
||||
// Start Excel and get Application object.
|
||||
xls.Application excel = new xls.Application
|
||||
{
|
||||
// Make Excel invisible and disable alerts.
|
||||
Visible = false,
|
||||
DisplayAlerts = false
|
||||
};
|
||||
|
||||
// Create a new Workbook.
|
||||
xls.Workbook excelworkBook = excel.Workbooks.Add();
|
||||
|
||||
// Create a Worksheet.
|
||||
var workSheet = (xls.Worksheet)excelworkBook.ActiveSheet;
|
||||
workSheet.Name = name;
|
||||
|
||||
// column headings
|
||||
for (var i = 0; i < dt.Columns.Count; i++)
|
||||
{
|
||||
workSheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
|
||||
}
|
||||
|
||||
// rows
|
||||
for (var i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
for (var j = 0; j < dt.Columns.Count; j++)
|
||||
{
|
||||
workSheet.Cells[i + 2, j + 1] = dt.Rows[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
//resize the columns to match the data
|
||||
workSheet.Columns.AutoFit();
|
||||
|
||||
//freeze the top row, and highlight those cells
|
||||
workSheet.Application.ActiveWindow.SplitRow = 1;
|
||||
workSheet.Application.ActiveWindow.FreezePanes = true;
|
||||
workSheet.Cells.Range[workSheet.Cells[1, 1], workSheet.Cells[1, dt.Columns.Count]].Interior.Color = xls.XlRgbColor.rgbLightBlue;
|
||||
|
||||
//save the excel file
|
||||
excelworkBook.SaveAs(filename);
|
||||
excelworkBook.Close();
|
||||
excel.Quit();
|
||||
|
||||
//release any in use com objects
|
||||
releaseObject(workSheet);
|
||||
releaseObject(excelworkBook);
|
||||
releaseObject(excel);
|
||||
}
|
||||
|
||||
//C2025-009 Report for tracking PROMS Users / security
|
||||
//for releasing any Excel com objects still in memory
|
||||
private void releaseObject(object obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
+77
-13
@@ -52,6 +52,9 @@
|
||||
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.sideNav1 = new DevComponents.DotNetBar.Controls.SideNav();
|
||||
this.sideNavPanel6 = new DevComponents.DotNetBar.Controls.SideNavPanel();
|
||||
this.btnWrdDupAcc = new DevComponents.DotNetBar.ButtonX();
|
||||
this.line2 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.btnUAC = new DevComponents.DotNetBar.ButtonX();
|
||||
this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel();
|
||||
this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX();
|
||||
this.sideNavPanel1 = new DevComponents.DotNetBar.Controls.SideNavPanel();
|
||||
@@ -80,7 +83,8 @@
|
||||
this.lblAdmToolProgressType = new DevComponents.DotNetBar.LabelX();
|
||||
this.buttonItem1 = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
|
||||
this.btnUAC = new DevComponents.DotNetBar.ButtonX();
|
||||
this.btnDupAccPrefix = new DevComponents.DotNetBar.ButtonX();
|
||||
this.btnDupAccIDs = new DevComponents.DotNetBar.ButtonX();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
@@ -442,6 +446,10 @@
|
||||
//
|
||||
// sideNavPanel6
|
||||
//
|
||||
this.sideNavPanel6.Controls.Add(this.btnDupAccIDs);
|
||||
this.sideNavPanel6.Controls.Add(this.btnDupAccPrefix);
|
||||
this.sideNavPanel6.Controls.Add(this.btnWrdDupAcc);
|
||||
this.sideNavPanel6.Controls.Add(this.line2);
|
||||
this.sideNavPanel6.Controls.Add(this.btnUAC);
|
||||
this.sideNavPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.sideNavPanel6.Location = new System.Drawing.Point(88, 31);
|
||||
@@ -449,6 +457,44 @@
|
||||
this.sideNavPanel6.Size = new System.Drawing.Size(292, 493);
|
||||
this.sideNavPanel6.TabIndex = 14;
|
||||
//
|
||||
// btnWrdDupAcc
|
||||
//
|
||||
this.btnWrdDupAcc.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnWrdDupAcc.Checked = true;
|
||||
this.btnWrdDupAcc.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnWrdDupAcc.Location = new System.Drawing.Point(26, 94);
|
||||
this.btnWrdDupAcc.Name = "btnWrdDupAcc";
|
||||
this.btnWrdDupAcc.Size = new System.Drawing.Size(211, 39);
|
||||
this.btnWrdDupAcc.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnWrdDupAcc, new DevComponents.DotNetBar.SuperTooltipInfo("Word Sections Containing Duplicate Accessory Page IDs Report", "", resources.GetString("btnWrdDupAcc.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnWrdDupAcc.TabIndex = 31;
|
||||
this.btnWrdDupAcc.Text = "Run Word Sections Containing Duplicate Accessory Page IDs Report";
|
||||
this.btnWrdDupAcc.Click += new System.EventHandler(this.btnWordDocsDupAccIDs_Click);
|
||||
//
|
||||
// line2
|
||||
//
|
||||
this.line2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.line2.Location = new System.Drawing.Point(5, 71);
|
||||
this.line2.Name = "line2";
|
||||
this.line2.Size = new System.Drawing.Size(285, 12);
|
||||
this.line2.TabIndex = 30;
|
||||
this.line2.Text = "line2";
|
||||
//
|
||||
// btnUAC
|
||||
//
|
||||
this.btnUAC.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnUAC.Checked = true;
|
||||
this.btnUAC.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnUAC.Location = new System.Drawing.Point(35, 30);
|
||||
this.btnUAC.Name = "btnUAC";
|
||||
this.btnUAC.Size = new System.Drawing.Size(187, 23);
|
||||
this.btnUAC.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnUAC, new DevComponents.DotNetBar.SuperTooltipInfo("UAC Report", "", "This will return a report containing info on when users were added to PROMS and w" +
|
||||
"hen users were added to specific PROMS security groups.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnUAC.TabIndex = 0;
|
||||
this.btnUAC.Text = "Run User Access Control Report";
|
||||
this.btnUAC.Click += new System.EventHandler(this.btnUAC_Click);
|
||||
//
|
||||
// sideNavPanel5
|
||||
//
|
||||
this.sideNavPanel5.Controls.Add(this.btn_ShowUsers);
|
||||
@@ -785,19 +831,33 @@
|
||||
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
|
||||
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
|
||||
//
|
||||
// btnUAC
|
||||
// btnDupAccPrefix
|
||||
//
|
||||
this.btnUAC.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnUAC.Checked = true;
|
||||
this.btnUAC.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnUAC.Location = new System.Drawing.Point(35, 30);
|
||||
this.btnUAC.Name = "btnUAC";
|
||||
this.btnUAC.Size = new System.Drawing.Size(187, 23);
|
||||
this.btnUAC.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnUAC.TabIndex = 0;
|
||||
this.btnUAC.Text = "Run User Access Control Report";
|
||||
this.superTooltip1.SetSuperTooltip(this.btnUAC, new DevComponents.DotNetBar.SuperTooltipInfo("UAC Report", "", "This will return a report containing info on when users were added to PROMS and when users were added to specific PROMS security groups.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnUAC.Click += new System.EventHandler(this.btnUAC_Click);
|
||||
this.btnDupAccPrefix.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnDupAccPrefix.Checked = true;
|
||||
this.btnDupAccPrefix.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnDupAccPrefix.Location = new System.Drawing.Point(26, 156);
|
||||
this.btnDupAccPrefix.Name = "btnDupAccPrefix";
|
||||
this.btnDupAccPrefix.Size = new System.Drawing.Size(211, 39);
|
||||
this.btnDupAccPrefix.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnDupAccPrefix, new DevComponents.DotNetBar.SuperTooltipInfo("Word Sections Containing Duplicate Accessory Page IDs Report", "", resources.GetString("btnDupAccPrefix.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnDupAccPrefix.TabIndex = 32;
|
||||
this.btnDupAccPrefix.Text = "Run Duplicate Accessory Page Prefixes Report";
|
||||
this.btnDupAccPrefix.Click += new System.EventHandler(this.btnDupAccPrefixes_Click);
|
||||
//
|
||||
// btnDupAccIDs
|
||||
//
|
||||
this.btnDupAccIDs.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnDupAccIDs.Checked = true;
|
||||
this.btnDupAccIDs.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnDupAccIDs.Location = new System.Drawing.Point(26, 220);
|
||||
this.btnDupAccIDs.Name = "btnDupAccIDs";
|
||||
this.btnDupAccIDs.Size = new System.Drawing.Size(211, 39);
|
||||
this.btnDupAccIDs.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnDupAccIDs, new DevComponents.DotNetBar.SuperTooltipInfo("Word Sections Containing Duplicate Accessory Page IDs Report", "", resources.GetString("btnDupAccIDs.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnDupAccIDs.TabIndex = 33;
|
||||
this.btnDupAccIDs.Text = "Run Duplicate Accessory Page IDs Report";
|
||||
this.btnDupAccIDs.Click += new System.EventHandler(this.btnDupAccIDs_Click);
|
||||
//
|
||||
// frmGenTools
|
||||
//
|
||||
@@ -889,6 +949,10 @@
|
||||
private DevComponents.DotNetBar.Controls.WarningBox warningBox3;
|
||||
private DevComponents.DotNetBar.ButtonItem buttonItem1;
|
||||
private DevComponents.DotNetBar.ButtonX btnUAC;
|
||||
private DevComponents.DotNetBar.ButtonX btnWrdDupAcc;
|
||||
private DevComponents.DotNetBar.Controls.Line line2;
|
||||
private DevComponents.DotNetBar.ButtonX btnDupAccIDs;
|
||||
private DevComponents.DotNetBar.ButtonX btnDupAccPrefix;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -117,10 +117,25 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>17, 17</value>
|
||||
</data>
|
||||
<data name="btnDupAccIDs.SuperTooltip" xml:space="preserve">
|
||||
<value>If multiple ROs contain the same Accessory Page IDs, then users could inadvertently use the wrong RO in word documents since those print and save by Accessory Page ID).
|
||||
|
||||
This will return a report containing info on ROs that have Duplicate Accessory Page IDs. This can be reviewed and used in conjunction with the other Supplicate Accessory Page ID/Prefix Reports to ensure that ROs and RO Groups are properly set up. Common reasons for Duplicate Accessory Page IDs Include: RO Groups unintentionally set up with duplicate prefixes, fields in ROs that Accessory Page Access uses that have the same text but are upper vs lower case, and some duplicates may be RO Groups that were never intended to be used in PROMS (these may be only used as a group heading).</value>
|
||||
</data>
|
||||
<data name="btnDupAccPrefix.SuperTooltip" xml:space="preserve">
|
||||
<value>If multiple ROs contain the same Accessory Page IDs, then users could inadvertently use the wrong RO in word documents since those print and save by Accessory Page ID.
|
||||
|
||||
This will return a report containing info on which RO Groups have duplicate Accessory Page Prefixes. This can be run and used to clean up RO Groups so that they have unique Accessory Page Prefixes.</value>
|
||||
</data>
|
||||
<data name="btnWrdDupAcc.SuperTooltip" xml:space="preserve">
|
||||
<value>If multiple ROs contain the same Accessory Page IDs, then users could inadvertently use the wrong RO in word documents since those print and save by Accessory Page ID.
|
||||
|
||||
This will return a report containing info on which Word Sections Contain ROs that have Duplicate Accessory Page IDs. This can be run before cleaning up Duplicates and then utilized after to identify which Word Sections may need edited to the newly updated Accessory Page IDs.</value>
|
||||
</data>
|
||||
<data name="warningBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
|
||||
@@ -138,9 +153,6 @@
|
||||
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="swCkObsoleteROData.SuperTooltip" xml:space="preserve">
|
||||
<value>Referenced Objects databases are associated with a procedure set (such as Working Draft).
|
||||
|
||||
@@ -189,7 +201,8 @@ Should an item become orphaned (disconnected) from the rest of the data, it will
|
||||
This tool may take an extended period of time to execute.
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>46</value>
|
||||
</metadata>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.TrayHeight" type="System.Int32, mscorlib">
|
||||
<value>49</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in new issue
Block a user