From 8a9bdc2fcdd48801a769a705bd2b5372c702ffed Mon Sep 17 00:00:00 2001 From: SchreiberM Date: Tue, 30 Jan 2024 15:16:27 +0100 Subject: [PATCH] MS 3.1.1.0 --- .../Classes/ClassDOC_SEARCH.vb | 2 +- .../Classes/ClassFileResult.vb | 3 + .../Classes/ClassImport_Windream.vb | 216 +++++++++++------- .../My Project/AssemblyInfo.vb | 2 +- app/DD-Record-Organizer/frmDocRecordLink.vb | 67 +++--- .../frmDocSearchResult.Designer.vb | 5 +- .../frmDocSearchResult.resx | 2 +- app/DD-Record-Organizer/frmDocSearchResult.vb | 110 ++++++--- app/DD-Record-Organizer/frmDoc_Links.vb | 12 +- app/DD-Record-Organizer/frmGlobalSearch.vb | 8 + app/DD-Record-Organizer/frmNodeNavigation.vb | 47 ++-- 11 files changed, 308 insertions(+), 166 deletions(-) diff --git a/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb b/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb index dc75496..1349d7d 100644 --- a/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb +++ b/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb @@ -32,7 +32,7 @@ Public Class ClassDOC_SEARCH OPTION4 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION4_CTRL") OPTION5 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION5_CTRL") End If - LOGGER.Info("DT_RESULTLIST_SEL_VALUES.Rows.Count: " & DT_RESULTLIST_SEL_VALUES.Rows.Count) + For Each oRow As DataRow In DT_RESULTLIST_SEL_VALUES.Rows If oRow.Item("COLUMN_VIEW").ToString = "VALUE1" Then diff --git a/app/DD-Record-Organizer/Classes/ClassFileResult.vb b/app/DD-Record-Organizer/Classes/ClassFileResult.vb index 26f9258..f3ef547 100644 --- a/app/DD-Record-Organizer/Classes/ClassFileResult.vb +++ b/app/DD-Record-Organizer/Classes/ClassFileResult.vb @@ -83,6 +83,9 @@ End Function Public Shared Function Delete_ResultFile(RESULT_DOC_ID, RECORD_ID, DELETE_FILE) Try + If DELETE_FILE = "True" Then + DELETE_FILE = 1 + End If Dim proc = String.Format("EXEC PRPMO_DELETE_RESULTFILE {0},{1},{2}", RESULT_DOC_ID, RECORD_ID, DELETE_FILE) If MYDB_ECM.ExecuteNonQuery(proc) = True Then If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then diff --git a/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb b/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb index a5dc6f3..4321454 100644 --- a/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb +++ b/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb @@ -2,6 +2,7 @@ Imports System.Globalization Imports WINDREAMLib Imports DD_LIB_Standards +Imports DD_Record_Organizer.frmChangeDocType Public Class ClassImport_Windream Public Shared Function Import_File(QuellDatei_Path As String, DOCTYPE_ID As Integer) @@ -24,7 +25,7 @@ Public Class ClassImport_Windream Dim streamresult = clsWD_SET.Stream_File(QuellDatei_Path, Targetpath) If streamresult = True Then Dim sql As String = String.Format("SELECT DocID FROM VWPMO_DOC_SYNC WHERE UPPER(FULL_FILENAME) = UPPER('{0}') AND CONVERT(DATE,Change_DateTime) = CONVERT(DATE,GETDATE())", CURRENT_FILEIN_WD) - CURRENT_DOC_ID = MYDB_ECM.GetScalarValue(SQL) + CURRENT_DOC_ID = MYDB_ECM.GetScalarValue(sql) sql = $"SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = {DOCTYPE_ID} AND ENTITY_ID = {CURRENT_ENTITY_ID}" Dim dt As DataTable = MYDB_ECM.GetDatatable(sql) Dim indexierung_erfolgreich As Boolean = False @@ -146,9 +147,9 @@ Public Class ClassImport_Windream If CREATE_FOLDER_INDEX(oDYNAMIC_FOLDER, DocTypeID) = True And CURRENT_VARIABLE_FOLDER <> "" Then LOGGER.Debug("After CREATE_FOLDER_INDEX - oWMTARGET_FOLDER: " & oWMTARGET_FOLDER) - LOGGER.Debug("After CREATE_FOLDER_INDEX - CURRENT_VARIABLE_FOLDER: " & CURRENT_VARIABLE_FOLDER) + LOGGER.Debug("After CREATE_FOLDER_INDEX - CURRENT_VARIABLE_FOLDER: " & CURRENT_VARIABLE_FOLDER) - If oWMTARGET_FOLDER <> CURRENT_VARIABLE_FOLDER Then + If oWMTARGET_FOLDER <> CURRENT_VARIABLE_FOLDER Then oWMTARGET_FOLDER = oWMTARGET_FOLDER & "\" & CURRENT_VARIABLE_FOLDER.Replace(oWMTARGET_FOLDER, "") Else oWMTARGET_FOLDER = CURRENT_VARIABLE_FOLDER @@ -164,7 +165,7 @@ Public Class ClassImport_Windream End If LOGGER.Debug("oWMTARGET_FOLDER: " & oWMTARGET_FOLDER) - LOGGER.Debug("CURRENT_SUBFOLDER: " & CURRENT_SUBFOLDER) + LOGGER.Debug("CURRENT_SUBFOLDER: " & CURRENT_SUBFOLDER) 'Untsserordner ja oder nein @@ -246,19 +247,22 @@ Public Class ClassImport_Windream For Each element As System.Text.RegularExpressions.Match In elemente LOGGER.Debug("element in RegeX: " & element.Value) + Dim oSubstring = element.Value.Substring(2, 1).ToUpper + '%CTRL + Dim oSubstr = element.Value.Substring(2, 4) Select Case element.Value.Substring(2, 1).ToUpper 'Nur automatische Indizes auswerten Case "A" Dim APattern = element.Value.Substring(3, element.Value.Length - 4) - Dim value As String + Dim oPatternvalue As String Select Case APattern 'Laufzeitvariable Record-ID Case "RECORD_ID" - value = CURRENT_RECORD_ID + oPatternvalue = CURRENT_RECORD_ID Case "DOKART" 'Laufzeitvariable Dokumentartstring - value = CURRENT_DOKARTSTRING + oPatternvalue = CURRENT_DOKARTSTRING Case Else 'Ein Index der nur für die Namenkonvention herangezogen wird If APattern.StartsWith("NC_") And APattern.Contains("#") Then @@ -270,22 +274,22 @@ Public Class ClassImport_Windream Dim sql_AUTOindexresult = MYDB_ECM.GetScalarValue("SELECT SQL_RESULT FROM TBDD_INDEX_AUTOM WHERE GUID = " & INDEX_ID) If IsNothing(sql_AUTOindexresult) Then LOGGER.Debug("unexpected: sql_AUTOindexresult is nothing!!") - value = "" + oPatternvalue = "" Else If IsDBNull(sql_AUTOindexresult) Then - value = "" + oPatternvalue = "" Else sql_AUTOindexresult = sql_AUTOindexresult.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID) Dim AUTOindexresult = MYDB_ECM.GetScalarValue(sql_AUTOindexresult) If IsNothing(AUTOindexresult) Then LOGGER.Warn("ATTENTION: unexpected: AUTOindexresult is nothing!!") LOGGER.Warn("" & sql_AUTOindexresult) - value = "" + oPatternvalue = "" Else If IsDBNull(AUTOindexresult) Then - value = "" + oPatternvalue = "" Else - value = AUTOindexresult + oPatternvalue = AUTOindexresult End If End If @@ -293,90 +297,28 @@ Public Class ClassImport_Windream End If Else LOGGER.Warn("INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & APattern) - value = "" + oPatternvalue = "" End If Else LOGGER.Warn("split.Length <> 2 - APattern: " & APattern) - value = "" + oPatternvalue = "" End If ElseIf APattern.Contains("#") Then LOGGER.Debug("element [" & APattern & "] filled with Record-Data...: ") + Dim split() As String = APattern.Split("#") If split.Length = 2 Then Dim CONTROL_ID = split(1) - If IsNumeric(CONTROL_ID) Then - Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID) - If IsNothing(CONTROLVALUE) Then - Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - Dim DTtype As DataTable = MYDB_ECM.GetDatatable(checktype) - If DTtype.Rows.Count = 1 Then - Dim lblsql = DTtype.Rows(0).Item(1) - lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID) - lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID) - lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_ENTITY_ID) - lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_ENTITY_ID) - LOGGER.Debug("variable sql will be used for convention") - Dim result = MYDB_ECM.GetScalarValue(DTtype.Rows(0).Item(2)) - If Not IsNothing(result) Then - value = result.ToString - Else - LOGGER.Warn("variable sqlresult is nothing - " & lblsql) - value = "" - End If - Else - LOGGER.Warn("!!ATTENTION: NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.") - LOGGER.Warn("SQL-Command: " & CURRENT_LAST_SQL) - value = "" - End If - - Else - If IsDBNull(CONTROLVALUE) Then - LOGGER.Warn("NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.") - LOGGER.Warn("SQL-Command: " & CURRENT_LAST_SQL) - value = "" - Else - Dim sql1 = "SELECT * FROM TBPMO_WD_NAMECONVENTION_FORMAT WHERE ID = (SELECT TOP 1 GUID FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE DOCTYPE_ID = " & DocTypeID & " AND FORMVIEW_ID = " & CURRENT_FORMVIEW_ID & ")" - Dim DT_FORMAT As DataTable = MYDB_ECM.GetDatatable(sql1) - If Not IsNothing(DT_FORMAT) Then - If DT_FORMAT.Rows.Count > 0 Then - Dim result - Try - result = (From FormatRow In DT_FORMAT.AsEnumerable - Select FormatRow Where FormatRow.Item("PATTERN") = APattern).Single() - Catch ex As Exception - - End Try - - If Not IsNothing(result) Then - Dim _rule = result.Item("FORMAT_RULE") - If Not IsNothing(_rule) Then - If IsDate(CONTROLVALUE) Then - Dim _date As Date = CDate(CONTROLVALUE) - 'Dim _date = CDate(Format(CONTROLVALUE, "dd-MM-yyyy")) - _rule = _rule.ToString.Replace("Y", "y") - _rule = _rule.ToString.Replace("D", "d") - _rule = _rule.ToString.Replace("m", "M") - Dim convertedvalue = _date.ToString(_rule, CultureInfo.InvariantCulture) - CONTROLVALUE = convertedvalue - End If - End If - End If - End If - End If - - value = CONTROLVALUE - End If - End If + oPatternvalue = GET_CTRLData(split(1), DocTypeID, APattern) - End If End If End If End Select - If value <> String.Empty Then - oNewWM_Filename = oNewWM_Filename.Replace(element.Value, value) + If oPatternvalue <> String.Empty Then + oNewWM_Filename = oNewWM_Filename.Replace(element.Value, oPatternvalue) _NewFileString = oNewWM_Filename LOGGER.Debug("Actual NEWFILESTRING: " & _NewFileString) ' sql_history_INSERT_INTO = sql_history_INSERT_INTO & ", INDEX" & AnzahlIndexe.ToString @@ -385,6 +327,7 @@ Public Class ClassImport_Windream Else err = True End If + Case "V" Dim datetemp As String Dim _Month As String = My.Computer.Clock.LocalTime.Month @@ -438,14 +381,28 @@ Public Class ClassImport_Windream End If _NewFileString = oNewWM_Filename Case Else - Dim msg As String - msg = "In der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper - If USER_LANGUAGE <> "de-DE" Then - msg = "In nameconvention an element was defined which could not be replaced." & vbNewLine & "elementname: " & element.Value.ToUpper + If element.Value.Substring(2, 4).ToUpper = "CTRL" Then + Dim APattern = element.Value.Substring(3, element.Value.Length - 4) + LOGGER.Debug("element [" & element.Value & "] with Control-Data...: ") + Dim split() As String = APattern.Split("#") + If split.Length = 2 Then + Dim CONTROL_ID = split(1) + Dim oPatternvalue = GET_CTRLData(split(1), DocTypeID, APattern) + oNewWM_Filename = oNewWM_Filename.Replace(element.Value, oPatternvalue) + End If + Else + Dim msg As String + msg = "In der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper + If USER_LANGUAGE <> "de-DE" Then + msg = "In nameconvention an element was defined which could not be replaced." & vbNewLine & "Elementname: " & element.Value.ToUpper + End If + LOGGER.Warn(msg) + MsgBox(msg, MsgBoxStyle.Exclamation, "Error in Name Convention:") End If - LOGGER.Warn(msg) - MsgBox(msg, MsgBoxStyle.Exclamation, "Error in Name Convention:") + + + End Select Next Try @@ -455,6 +412,8 @@ Public Class ClassImport_Windream LOGGER.Info(String.Format("DATEINAME contains /-sign. / will be replaced with _")) oNewWM_Filename = oNewWM_Filename.Replace("/", "_") End If + oNewWM_Filename = oNewWM_Filename.Replace("\\", "\") + Catch ex As Exception LOGGER.Warn(" - Error in Versioning file - Error: " & vbNewLine & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Versioning file:") @@ -483,6 +442,89 @@ Public Class ClassImport_Windream End Try End Function + Private Shared Function GET_CTRLData(pInput As String, pDoctypeID As Integer, pPattern As String) + Try + Dim oReturnValue As String = "" + pInput = pInput.Replace("]", "") + If IsNumeric(pInput) Then + Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(pInput, CURRENT_RECORD_ID) + If IsNothing(CONTROLVALUE) Then + Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE GUID = " & pInput + Dim DTtype As DataTable = MYDB_ECM.GetDatatable(checktype) + If DTtype.Rows.Count = 1 Then + Dim lblsql = DTtype.Rows(0).Item(1) + Dim result + If Len(lblsql) = 0 Or lblsql Is Nothing Then + LOGGER.Warn("TBPMO_CONTROL.SQL is nothing") + oReturnValue = "" + Else + lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID) + lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID) + lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_ENTITY_ID) + lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_ENTITY_ID) + LOGGER.Debug("variable sql will be used for convention") + result = MYDB_ECM.GetScalarValue(DTtype.Rows(0).Item(2)) + End If + + If Not IsNothing(result) Then + oReturnValue = result.ToString + Else + LOGGER.Warn("variable sqlresult is nothing - " & lblsql) + oReturnValue = "" + End If + Else + LOGGER.Warn("!!ATTENTION: NameConvention should be filled with value of Control-ID '" & pInput & "', but result was nothing.") + LOGGER.Warn("SQL-Command: " & CURRENT_LAST_SQL) + oReturnValue = "" + End If + + Else + If IsDBNull(CONTROLVALUE) Then + LOGGER.Warn("NameConvention should be filled with value of Control-ID '" & pInput & "', but result was DBNULL.") + LOGGER.Warn("SQL-Command: " & CURRENT_LAST_SQL) + oReturnValue = "" + Else + Dim sql1 = "SELECT * FROM TBPMO_WD_NAMECONVENTION_FORMAT WHERE ID = (SELECT TOP 1 GUID FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE DOCTYPE_ID = " & pDoctypeID & " AND FORMVIEW_ID = " & CURRENT_FORMVIEW_ID & ")" + Dim DT_FORMAT As DataTable = MYDB_ECM.GetDatatable(sql1) + If Not IsNothing(DT_FORMAT) Then + If DT_FORMAT.Rows.Count > 0 Then + Dim result + Try + result = (From FormatRow In DT_FORMAT.AsEnumerable + Select FormatRow Where FormatRow.Item("PATTERN") = pPattern).Single() + Catch ex As Exception + + End Try + + If Not IsNothing(result) Then + Dim _rule = result.Item("FORMAT_RULE") + If Not IsNothing(_rule) Then + If IsDate(CONTROLVALUE) Then + Dim _date As Date = CDate(CONTROLVALUE) + 'Dim _date = CDate(Format(CONTROLVALUE, "dd-MM-yyyy")) + _rule = _rule.ToString.Replace("Y", "y") + _rule = _rule.ToString.Replace("D", "d") + _rule = _rule.ToString.Replace("m", "M") + Dim convertedvalue = _date.ToString(_rule, CultureInfo.InvariantCulture) + CONTROLVALUE = convertedvalue + End If + End If + End If + End If + End If + + oReturnValue = CONTROLVALUE + End If + End If + + End If + Return oReturnValue + Catch ex As Exception + LOGGER.Warn(" - Unexpected Error in GET_CTRLData: " & vbNewLine & ex.Message) + MsgBox("Unexpected Error in GET_CTRLData: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return "" + End Try + End Function Private Shared Function CREATE_FOLDER_INDEX(FolderConvention As String, DocTypeID As Integer) Try CURRENT_VARIABLE_FOLDER_OVERRIDE = False @@ -509,7 +551,7 @@ Public Class ClassImport_Windream Dim INDEX_ID = split(1) If IsNumeric(INDEX_ID) Then Dim sql = "SELECT SQL_RESULT FROM TBDD_INDEX_AUTOM WHERE GUID = " & INDEX_ID - Dim sql_command = MYDB_ECM.GetScalarValue(SQL) + Dim sql_command = MYDB_ECM.GetScalarValue(sql) If IsNothing(sql_command) Then LOGGER.Warn("unexpected: SQL_RESULT is nothing!!") LOGGER.Warn("" & sql) diff --git a/app/DD-Record-Organizer/My Project/AssemblyInfo.vb b/app/DD-Record-Organizer/My Project/AssemblyInfo.vb index f9e0c9e..bf96daa 100644 --- a/app/DD-Record-Organizer/My Project/AssemblyInfo.vb +++ b/app/DD-Record-Organizer/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmDocRecordLink.vb b/app/DD-Record-Organizer/frmDocRecordLink.vb index 99ab4c9..4f26b86 100644 --- a/app/DD-Record-Organizer/frmDocRecordLink.vb +++ b/app/DD-Record-Organizer/frmDocRecordLink.vb @@ -1,6 +1,8 @@ Imports System.IO Imports System.Text Imports DD_LIB_Standards +Imports DevExpress.XtraGrid.Columns + Public Class frmDocRecordLink Public Property Documents As New List(Of ClassWindreamDocGrid.WindreamDoc) @@ -27,40 +29,49 @@ Public Class frmDocRecordLink Else DT_RECORDS = ENTITY_DATATABLE End If - - - Try - DT_RECORDS.Columns.Add("already linked", Type.GetType("System.Boolean")).SetOrdinal(0) - DT_RECORDS.Columns("already linked").DefaultValue = False + If CURRENT_LINK_ENTITY_ID = 0 Then + CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID + End If + Try + ' DT_RECORDS.Columns.Add("already linked", Type.GetType("System.Boolean")).SetOrdinal(0) + ' DT_RECORDS.Columns("already linked").DefaultValue = False Catch ex As Exception End Try + 'Try + ' For Each row As DataRow In CURRENT_DT_SELECTED_FILES.Rows + ' Dim DOC_ID = row.Item("DOC_ID") + + ' Dim sel = String.Format("select T.RECORD_ID FROM TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0} AND T.DOC_ID = {1}", CURRENT_LINK_ENTITY_ID, DOC_ID) + ' Dim DTRECS_LINKED As DataTable = MYDB_ECM.GetDatatable(sel) + ' For Each recrow As DataRow In DTRECS_LINKED.Rows + ' For Each rowrecsdisplay As DataRow In DT_RECORDS.Rows + ' If rowrecsdisplay.Item("Record-ID") = recrow.Item("RECORD_ID") Then + ' rowrecsdisplay.Item("already linked") = True + ' Else + ' rowrecsdisplay.Item("already linked") = False + ' End If + ' Next + ' Next + ' Next + 'Catch ex As Exception + ' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in displaying already linked", ex.Message, ex.StackTrace) + 'End Try Try - For Each row As DataRow In CURRENT_DT_SELECTED_FILES.Rows - Dim DOC_ID = row.Item("DOC_ID") - Dim sel = String.Format("select T.RECORD_ID FROM TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0} AND T.DOC_ID = {1}", CURRENT_LINK_ENTITY_ID, DOC_ID) - Dim DTRECS_LINKED As DataTable = MYDB_ECM.GetDatatable(sel) - For Each recrow As DataRow In DTRECS_LINKED.Rows - For Each rowrecsdisplay As DataRow In DT_RECORDS.Rows - If rowrecsdisplay.Item("Record-ID") = recrow.Item("RECORD_ID") Then - rowrecsdisplay.Item("already linked") = True - Else - rowrecsdisplay.Item("already linked") = False - End If - Next - Next - Next + grvwGrid.Columns.Clear() + dgEntityRecords.DataSource = DT_RECORDS + ' grvwGrid.Columns.Item("already linked").Fixed = True + grvwGrid.PopulateColumns() + dgEntityRecords.RefreshDataSource() + grvwGrid.OptionsView.ColumnAutoWidth = False + grvwGrid.Columns(0).Fixed = FixedStyle.Left + grvwGrid.BestFitColumns() + Catch ex As Exception - ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in displaying already linked", ex.Message, ex.StackTrace) + ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in format grid", ex.Message, ex.StackTrace) End Try - grvwGrid.Columns.Clear() - dgEntityRecords.DataSource = DT_RECORDS - grvwGrid.Columns.Item("already linked").Fixed = True - grvwGrid.PopulateColumns() - dgEntityRecords.RefreshDataSource() - grvwGrid.OptionsView.ColumnAutoWidth = False - grvwGrid.BestFitColumns() + End Sub Private Sub frmDocRecordLink_Load(sender As Object, e As EventArgs) Handles Me.Load ' OLD WAY @@ -326,7 +337,7 @@ Public Class frmDocRecordLink End If Next bsiInfo.Caption = $"[{oLinkCount}] records successfully linked - {Now.ToShortTimeString}" - + Refresh_Grid_Data(True, Nothing) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Linking Record to file", ex.Message, ex.StackTrace) End Try diff --git a/app/DD-Record-Organizer/frmDocSearchResult.Designer.vb b/app/DD-Record-Organizer/frmDocSearchResult.Designer.vb index 9dcd6b3..72c7a92 100644 --- a/app/DD-Record-Organizer/frmDocSearchResult.Designer.vb +++ b/app/DD-Record-Organizer/frmDocSearchResult.Designer.vb @@ -71,7 +71,7 @@ Partial Class frmDocSearchResult Me.GridControlDocSearch.Location = New System.Drawing.Point(0, 0) Me.GridControlDocSearch.MainView = Me.GridViewDoc_Search Me.GridControlDocSearch.Name = "GridControlDocSearch" - Me.GridControlDocSearch.Size = New System.Drawing.Size(698, 465) + Me.GridControlDocSearch.Size = New System.Drawing.Size(1073, 465) Me.GridControlDocSearch.TabIndex = 8 Me.GridControlDocSearch.TabStop = False Me.GridControlDocSearch.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewDoc_Search}) @@ -247,6 +247,7 @@ Partial Class frmDocSearchResult ' 'SplitContainerControl1 ' + Me.SplitContainerControl1.Collapsed = True Me.SplitContainerControl1.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2 Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 158) @@ -271,7 +272,7 @@ Partial Class frmDocSearchResult Me.DocumentViewer1.FileLoaded = False Me.DocumentViewer1.Location = New System.Drawing.Point(0, 0) Me.DocumentViewer1.Name = "DocumentViewer1" - Me.DocumentViewer1.Size = New System.Drawing.Size(375, 465) + Me.DocumentViewer1.Size = New System.Drawing.Size(0, 0) Me.DocumentViewer1.TabIndex = 0 ' 'frmDocSearchResult diff --git a/app/DD-Record-Organizer/frmDocSearchResult.resx b/app/DD-Record-Organizer/frmDocSearchResult.resx index 8c5ee56..38f6e0d 100644 --- a/app/DD-Record-Organizer/frmDocSearchResult.resx +++ b/app/DD-Record-Organizer/frmDocSearchResult.resx @@ -124,7 +124,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vwAADr8BOAVTJAAAAINJREFUOE9jQAbfvn37TwyGKscEIEknJye8mH4GfHj/EQWTbAAuPIRcgAsPRwO+ + vgAADr4B6kKxwAAAAINJREFUOE9jQAbfvn37TwyGKscEIEknJye8mH4GfHj/EQWTbAAuPIRcgAsPRwO+ f/+eABLEhX19ffEbABR4n5KSAlcA0rB582YwDRIHacAbjQ8ePABLgDSdPHny/5w5c8Ds5cuXg8VBYjDN WA2AuQDZZphimAvwGkAoDLBhqFYgYGAAAFMd0furxZnJAAAAAElFTkSuQmCC diff --git a/app/DD-Record-Organizer/frmDocSearchResult.vb b/app/DD-Record-Organizer/frmDocSearchResult.vb index 1dc52ab..aa1316b 100644 --- a/app/DD-Record-Organizer/frmDocSearchResult.vb +++ b/app/DD-Record-Organizer/frmDocSearchResult.vb @@ -1,4 +1,5 @@ Imports System.IO +Imports System.Runtime.InteropServices 'Imports System.Runtime.InteropServices 'Imports System.Text Imports DevExpress.XtraGrid.Views.Base @@ -6,12 +7,39 @@ Imports DevExpress.XtraPrinting Imports DigitalData.Modules.Database Public Class frmDocSearchResult + Inherits DevExpress.XtraBars.Ribbon.RibbonForm + + Public Shared Function ShellExecuteEx(ByRef lpExecInfo As SHELLEXECUTEINFO) As Boolean + End Function + Public Structure SHELLEXECUTEINFO + Public cbSize As Integer + Public fMask As Integer + Public hwnd As IntPtr + Public lpVerb As String + Public lpFile As String + Public lpParameters As String + Public lpDirectory As String + Dim nShow As Integer + Dim hInstApp As IntPtr + Dim lpIDList As IntPtr + Public lpClass As String + Public hkeyClass As IntPtr + Public dwHotKey As Integer + Public hIcon As IntPtr + Public hProcess As IntPtr + End Structure + Private Const SEE_MASK_INVOKEIDLIST = &HC + Private Const SEE_MASK_NOCLOSEPROCESS = &H40 + Private Const SEE_MASK_FLAG_NO_UI = &H400 + Public Const SW_SHOW As Short = 5 + Private _Helper As ClassHelper Private DT_RESULT As DataTable Private SelectedDocID As Int64 Private SelectedFULL_FILEPATH As String Private Sub frmDocSearchResult_Load(sender As Object, e As EventArgs) Handles Me.Load LoadDocSearch(False) + _Helper = New ClassHelper Text = CURRENT_DOCSEARCH_CAPTION Dim oGDPictureLicenseKey = MYDB_ECM.GetScalarValue(Queries.DD_ECM.ThirdPartyModules.GdPictureLicense) @@ -57,10 +85,15 @@ Public Class frmDocSearchResult Private Sub GridViewDoc_Search_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) Handles GridViewDoc_Search.FocusedRowChanged If GridViewDoc_Search.RowCount > 0 Then - GetDocID() - Refresh_DocID() - - DocumentViewer1.LoadFile(SelectedFULL_FILEPATH) + LoadFile2Viewer() + End If + End Sub + Sub LoadFile2Viewer() + GetDocID() + Refresh_DocID() + If SplitContainerControl1.Collapsed = False Then + Dim OFilePath = ClassHelper.FORMAT_WM_PATH(SelectedFULL_FILEPATH) + DocumentViewer1.LoadFile(OFilePath) End If End Sub Sub Refresh_DocID() @@ -156,38 +189,54 @@ Public Class frmDocSearchResult Exit Sub End If - Dim frm As New frmDoc_Links - frm.Show() - frm.BringToFront() + Try + For Each row In GridViewDoc_Search.GetSelectedRows + Dim SELECTED_DOC_ID = GridViewDoc_Search.GetRowCellValue(row, "DocID") + If IsNothing(SELECTED_DOC_ID) Then + MsgBox("Could not Get a selected DocID!", MsgBoxStyle.Exclamation) + Exit Sub + End If + CURRENT_DOC_ID = SELECTED_DOC_ID + Dim frm As New frmDoc_Links + frm.Show() + frm.BringToFront() + Next + Catch ex As Exception + MsgBox("Unexpected Error in Showing DocLinks: " & ex.Message, MsgBoxStyle.Critical) + End Try Catch ex As Exception MsgBox("Unexpected Error in Showing DocLinks: " & ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub docCM_PropertiesFile_Click(sender As Object, e As EventArgs) Handles docCM_PropertiesFile.Click - 'Show_File_Properties() + Show_File_Properties() + End Sub + Sub Show_File_Properties() + Try + For Each row In GridViewDoc_Search.GetSelectedRows + Dim SELECTED_DOC_PATH = _Helper.FORMAT_WM_PATH(GridViewDoc_Search.GetRowCellValue(row, "FULL_FILENAME")) + Dim SELECTED_DOC_ID = GridViewDoc_Search.GetRowCellValue(row, "DocID") + + Cursor = Cursors.WaitCursor + Dim sei As New SHELLEXECUTEINFO + sei.cbSize = Marshal.SizeOf(sei) + sei.lpVerb = "properties" + sei.lpFile = SELECTED_DOC_PATH + sei.nShow = SW_SHOW + sei.fMask = SEE_MASK_INVOKEIDLIST + If Not ShellExecuteEx(sei) Then + Dim ex As New System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error()) + ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Open file propertys:", ex.Message) + End If + Next + + Catch ex As Exception + LOGGER.Error(ex) + MsgBox(ex.Message, MsgBoxStyle.Critical) + End Try + End Sub - 'Sub Show_File_Properties() - ' If IsNothing(SelectedFULL_FILEPATH) Then - ' MsgBox("Could not read File Parameters(4)!", MsgBoxStyle.Exclamation) - ' Exit Sub - ' End If - ' If SelectedFULL_FILEPATH <> "" Then - ' Cursor = Cursors.WaitCursor - ' Dim sei As New SHELLEXECUTEINFO - ' sei.cbSize = Marshal.SizeOf(sei) - ' sei.lpVerb = "properties" - ' sei.lpFile = SelectedFULL_FILEPATH - ' sei.nShow = SW_SHOW - ' sei.fMask = SEE_MASK_INVOKEIDLIST - ' If Not ShellExecuteEx(sei) Then - ' Dim ex As New System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error()) - ' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Open file properties:", ex.Message) - ' End If - ' End If - ' Cursor = Cursors.Default - - 'End Sub Sub Save_DocGrid_Layout() @@ -285,5 +334,8 @@ Public Class frmDocSearchResult Private Sub bchlitmPreview_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bchlitmPreview.CheckedChanged SplitContainerControl1.Collapsed = Not bchlitmPreview.Checked + If SplitContainerControl1.Collapsed = False Then + LoadFile2Viewer() + End If End Sub End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmDoc_Links.vb b/app/DD-Record-Organizer/frmDoc_Links.vb index 9b168a9..7848cef 100644 --- a/app/DD-Record-Organizer/frmDoc_Links.vb +++ b/app/DD-Record-Organizer/frmDoc_Links.vb @@ -1,5 +1,6 @@ Imports System.IO Imports DD_LIB_Standards +Imports DevExpress.XtraGrid.Columns Imports DevExpress.XtraPrinting Imports Microsoft.Office.Interop.Outlook @@ -86,6 +87,7 @@ Public Class frmDoc_Links End Try grvwGrid.OptionsView.ColumnAutoWidth = False grvwGrid.BestFitColumns() + grvwGrid.Columns(0).Fixed = FixedStyle.Left Catch ex As System.Exception LOGGER.Error(ex) End Try @@ -199,8 +201,12 @@ Public Class frmDoc_Links Private Sub OrdnerÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OrdnerÖffnenToolStripMenuItem.Click Dim oPAth = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("FULL_FILENAME")) Dim oDocID = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("DocID")) - For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows - ClassHelper.Open_Folder(oPAth, oDocID) - Next + If Not IsNothing(oPAth) Then + If Not IsNothing(oDocID) Then + ClassHelper.Open_Folder(oPAth, oDocID) + End If + + End If + End Sub End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmGlobalSearch.vb b/app/DD-Record-Organizer/frmGlobalSearch.vb index 40b8f12..096966d 100644 --- a/app/DD-Record-Organizer/frmGlobalSearch.vb +++ b/app/DD-Record-Organizer/frmGlobalSearch.vb @@ -150,6 +150,14 @@ Public Class frmGlobalSearch GridViewFiles.Columns("ChangedWhen").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss" Catch ex As Exception + End Try + Try + GridViewFiles.Columns("ErstelltWann").DisplayFormat.FormatType = FormatType.DateTime + GridViewFiles.Columns("ErstelltWann").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss" + GridViewFiles.Columns("GeändertWann").DisplayFormat.FormatType = FormatType.DateTime + GridViewFiles.Columns("GeändertWann").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss" + Catch ex As Exception + End Try ' FormID und RecordID immer ausblenden ' GridViewFiles.Columns.Item("FULL_FILENAME").Visible = False diff --git a/app/DD-Record-Organizer/frmNodeNavigation.vb b/app/DD-Record-Organizer/frmNodeNavigation.vb index 43253db..5594971 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.vb +++ b/app/DD-Record-Organizer/frmNodeNavigation.vb @@ -1605,8 +1605,7 @@ LOGGER.Error(ex) If USER_LANGUAGE <> "de-De" Then oText = $"The entity-wide search will be started in background. The result will be displayed when ready." End If - MsgBox(oText, vbOKOnly, "Information") - + Update_Status_Label(True, oText, EditState.Insert) CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", _EntityId) CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_LANGUAGE", USER_LANGUAGE) @@ -3039,6 +3038,11 @@ LOGGER.Error(ex) Refresh_Selected_Table() Dim oDocuments = DocList.SelectedDocuments + Dim oDocId As Integer = oDocuments.First.DocId + If oDocId = 0 Then + MsgBox("Sorry no document has been selected! Please try again!", MsgBoxStyle.Exclamation) + Exit Sub + End If Dim msg = "Sind Sie sicher, dass Sie die Datei(en) endgültig löschen wollen?" If USER_LANGUAGE <> "de-DE" Then msg = "Are You sure You want to permanently delete this file(s)?" @@ -3046,36 +3050,51 @@ LOGGER.Error(ex) Dim result1 As MsgBoxResult result1 = MessageBox.Show(msg, CAPTION_CONFIRMATION, MessageBoxButtons.YesNo, MessageBoxIcon.Question) If result1 = MsgBoxResult.Yes Then - For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows - If row.Item("DOC_PATH") <> "" Then + For Each oDoc As ClassWindreamDocGrid.WindreamDoc In ClassWindreamDocGrid.GetSelectedDocuments(GridViewDoc_Search) + If oDoc.DocPath <> "" Then Try - If Not IsNothing(row.Item("DOC_ID")) Then - Dim Count As Integer = MYDB_ECM.GetScalarValue("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & row.Item("DOC_ID")) - If Count > 1 And CURRENT_SEARCH_TYPE = "RECORD" Then + LOGGER.Info($"DocID {oDoc.DocPath} shall be deleted. User committed Delete-Start...") + Dim oDElWMFile As Boolean = False + Dim oCountLinks As Integer + If Not IsNothing(oDoc.DocId) Then + oCountLinks = MYDB_ECM.GetScalarValue("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & oDoc.DocId) + If oCountLinks > 1 And CURRENT_SEARCH_TYPE = "RECORD" Then msg = "Diese Datei ist noch mit anderen Datensätzen verknüpft! Wollen Sie diese Verknüpfungen ebenfalls löschen?" If USER_LANGUAGE <> "de-DE" Then msg = "This file is also linked to other records! Would You like to delete these links also?" End If Dim result2 As MsgBoxResult result2 = MessageBox.Show(msg, CAPTION_CONFIRMATION, MessageBoxButtons.YesNo, MessageBoxIcon.Question) - Dim oDElWMFile As Boolean = False + If result2 = MsgBoxResult.Yes Then + LOGGER.Info($">> File has other Record-Links. User committed to delete all!") oDElWMFile = True + Else + oDElWMFile = False + LOGGER.Info($">> File has other Record-Links. links shall be kept!") End If + Else + oDElWMFile = True + End If + If ClassFileResult.Delete_ResultFile(oDoc.DocId, CURRENT_RECORD_ID, oDElWMFile) = True Then - If ClassFileResult.Delete_ResultFile(row.Item("DOC_ID"), CURRENT_RECORD_ID, oDElWMFile) = True Then - If oDElWMFile = True Then - ClassHelper.InsertEssential_Log(row.Item("DOC_ID"), "DOC-ID", "FILE DELETED BY USER") - Else - ClassHelper.InsertEssential_Log(row.Item("DOC_ID"), "DOC-ID", "FILE LINK DELETED BY USER") + If oDElWMFile = True Then + If clsWD_SET.Delete_WDFile(oDoc.DocPath) Then + Update_Status_Label(True, Now.ToLongTimeString & " - File successfully deleted", EditState.Insert) + ClassHelper.InsertEssential_Log(oDoc.DocId, "DOC-ID", "FILE DELETED BY USER") End If + Else + ClassHelper.InsertEssential_Log(oDoc.DocId, "DOC-ID", "FILE LINK DELETED BY USER") + Update_Status_Label(True, Now.ToLongTimeString & " - File-links successfully deleted", EditState.Insert) End If + Else + Update_Status_Label(True, Now.ToLongTimeString & " - Error deleting file - Check log", EditState.Delete) End If End If If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then - Dim proc = String.Format("EXEC PRPROXY_DOC_CHECK_DELETE {0}", row.Item("DOC_ID")) + Dim proc = String.Format("EXEC PRPROXY_DOC_CHECK_DELETE {0}", oDoc.DocId) MYDB_ECM.ExecuteNonQuery(proc) End If Catch ex As Exception