diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs index 5288803e..64401d9a 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs @@ -164,11 +164,10 @@ namespace VEPROMS.CSLA.Library // B2023-093 This method is called before editing or printing a Word section and will convert it the Word .DOCX format if needed. // Note that the core logic was taken from frmSectionProperties.cs and modified to convert both .RTF and .DOC files // The conversion to DOCX is needs to be done only one time per Word section + // B2023-109 Moved the setting of docInfo in the try block to handle if itmInfo, MyContent, MyEntry, MyDocument is null + // Also modified the error log statements in the Catch to put the ItemID and the section number and title out to the error log public static void ConvertWordSectionToDOCX(ItemInfo itmInfo) { - // check the Word file extension that is saved in the tblDocuments SQL database table - DocumentInfo docInfo = itmInfo.MyContent.MyEntry.MyDocument; - if (docInfo.FileExtension.ToUpper() == ".DOCX") return; // already a DOCX - no need to convert FrmPopupStatusMessage pmsg = null; DSOFile myfile = null; LBWordLibrary.LBApplicationClass ap = null; @@ -180,9 +179,13 @@ namespace VEPROMS.CSLA.Library SectionInfo msi = null; Section sec = null; SectionConfig cfg = null; - + DocumentInfo docInfo = null; try { + // check the Word file extension that is saved in the tblDocuments SQL database table + docInfo = itmInfo.MyContent.MyEntry.MyDocument; + if (docInfo.FileExtension.ToUpper() == ".DOCX") return; // already a DOCX - no need to convert + // show user a status window of the Word section being converted to DOCX // use the section number (DisplayNumber) unless the length is zero, then use the section title (DisplayText) string statMsg = itmInfo.DisplayNumber; @@ -236,19 +239,25 @@ namespace VEPROMS.CSLA.Library cfg.MySection.MyContent.MyEntry.MyDocument.MarkDirty(); cfg.MySection.MyContent.MyEntry.Save(); - _MyLog.InfoFormat("Converted Word Section to DOCX - Old ID {0} - New ID {1} - {2}", docInfo.DocID, myDoc.DocID, statMsg); // record in log file (aka error log) that conversion was done - // delete the temporary files + // record in log file (aka error log) that conversion was done + _MyLog.InfoFormat("Converted Word Section to DOCX - Old ID {0} - New ID {1} - {2}", docInfo.DocID, myDoc.DocID, statMsg); + FileInfo orgFile = new FileInfo(orgFilename); orgFile.Delete();// delete the old temporary Word file (.DOC or .RTF) } catch (Exception ex) { _MyLog.ErrorFormat("Error converting Word section to DOCX - {0}", ex.Message); - _MyLog.ErrorFormat("Error converting Word section to DOCX - ConvertWordSetionToDOXX: ItemID ={0} DOCID={1} LibTitle = {2}", itmInfo, docInfo.DocID, docInfo.LibTitle); + if (docInfo == null) + { + _MyLog.ErrorFormat("Error converting Word section to DOCX - ConvertWordSetionToDOXX: ItemID ={0} {1} {2}", itmInfo.ItemID, itmInfo.MyContent.Number, itmInfo.MyContent.Text); + } + else + _MyLog.ErrorFormat("Error converting Word section to DOCX - ConvertWordSetionToDOXX: ItemID ={0} {1} {2} DOCID={3} LibTitle = {4}", itmInfo.ItemID, itmInfo.MyContent.Number, itmInfo.MyContent.Text, docInfo.DocID, docInfo.LibTitle); } finally { - if (pmsg != null) + if (pmsg != null) pmsg.Close();// close the statue message if (ap != null) ap.Quit(); // close the Word app