From 3a44abf77bf1e3f753f329fb0021562c8e590652 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Mon, 16 Mar 2026 09:49:12 +0100 Subject: [PATCH] =?UTF-8?q?3.7.2=20Optimierungen=20und=20Button=20Knoten?= =?UTF-8?q?=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Classes/ClassConstructors.vb | 102 +- .../Classes/ClassDOC_SEARCH.vb | 258 +-- .../Classes/ClassDragDrop.vb | 2 + .../Classes/ClassFolderWatcher.vb | 151 -- .../Classes/ClassHelper.vb | 202 +- .../Classes/ClassImport_Windream.vb | 24 +- app/DD-Record-Organizer/Classes/ClassInit.vb | 17 +- .../Classes/ClassNodeNavigation.vb | 18 +- .../NodeNavigation/ClassAsyncNodeBuild.vb | 6 +- .../ModuleRuntimeVariables.vb | 5 +- .../My Project/AssemblyInfo.vb | 4 +- app/DD-Record-Organizer/OrgFlow.vbproj | 13 - .../frmConfig_Basic.Designer.vb | 102 +- app/DD-Record-Organizer/frmConfig_Basic.resx | 1731 +++++------------ app/DD-Record-Organizer/frmConfig_Basic.vb | 134 +- .../frmConstructor_Main.vb | 15 +- app/DD-Record-Organizer/frmMain.resx | 8 +- app/DD-Record-Organizer/frmMain.vb | 75 +- .../frmNodeNavigation.Designer.vb | 36 +- app/DD-Record-Organizer/frmNodeNavigation.vb | 144 +- .../frmScanFiles.Designer.vb | 454 ----- .../frmScanFiles.en-US.resx | 641 ------ app/DD-Record-Organizer/frmScanFiles.resx | 1159 ----------- app/DD-Record-Organizer/frmScanFiles.vb | 227 --- app/DD-Record-Organizer/frmWM_IndexFile.resx | 97 +- app/DD-Record-Organizer/frmWM_IndexFile.vb | 259 ++- 26 files changed, 1087 insertions(+), 4797 deletions(-) delete mode 100644 app/DD-Record-Organizer/Classes/ClassFolderWatcher.vb delete mode 100644 app/DD-Record-Organizer/frmScanFiles.Designer.vb delete mode 100644 app/DD-Record-Organizer/frmScanFiles.en-US.resx delete mode 100644 app/DD-Record-Organizer/frmScanFiles.resx delete mode 100644 app/DD-Record-Organizer/frmScanFiles.vb diff --git a/app/DD-Record-Organizer/Classes/ClassConstructors.vb b/app/DD-Record-Organizer/Classes/ClassConstructors.vb index 2a76bcf..f1c9e5c 100644 --- a/app/DD-Record-Organizer/Classes/ClassConstructors.vb +++ b/app/DD-Record-Organizer/Classes/ClassConstructors.vb @@ -1,67 +1,67 @@ -Public Class ClassConstructors - Public Shared ConstructorsTuple_TreeView As Object - Public Shared Function Init_Tuple() +Public Class ClassConstructorsf + 'Public Shared ConstructorsTuple_TreeView As Object + 'Public Shared Function Init_Tuple() - Dim ConstructTreeViewTuple = New Dictionary(Of Tuple(Of TreeView), Integer)() - Dim sql = String.Format("Select DISTINCT T.GUID, T2.ENTITY_ID FROM TBPMO_FORM_CONSTRUCTOR T, TBPMO_FORM_CONSTRUCTOR_DETAIL T1, " & - "TBPMO_STRUCTURE_NODES_CONFIGURATION T2 WHERE T.GUID = T1.CONSTRUCT_ID And T1.FORM_ID = T2.ENTITY_ID " & - "And T.GUID In (Select CONSTRUCT_ID FROM TBPMO_CONSTRUCTOR_USER WHERE USER_ID = {0})", USER_GUID) - Dim DT As DataTable = MYDB_ECM.GetDatatable(sql) - For Each rowconstruct As DataRow In DT.Rows - Try - Dim sqlnodes = String.Format("select * from VWPMO_STRUCTURE_NODES where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", rowconstruct.Item(0)) - Dim DTNODES As DataTable = MYDB_ECM.GetDatatable(sqlnodes) + ' Dim ConstructTreeViewTuple = New Dictionary(Of Tuple(Of TreeView), Integer)() + ' Dim sql = String.Format("Select DISTINCT T.GUID, T2.ENTITY_ID FROM TBPMO_FORM_CONSTRUCTOR T, TBPMO_FORM_CONSTRUCTOR_DETAIL T1, " & + ' "TBPMO_STRUCTURE_NODES_CONFIGURATION T2 WHERE T.GUID = T1.CONSTRUCT_ID And T1.FORM_ID = T2.ENTITY_ID " & + ' "And T.GUID In (Select CONSTRUCT_ID FROM TBPMO_CONSTRUCTOR_USER WHERE USER_ID = {0})", USER_GUID) + ' Dim DT As DataTable = MYDB_ECM.GetDatatable(sql) + ' For Each rowconstruct As DataRow In DT.Rows + ' Try + ' Dim sqlnodes = String.Format("select * from VWPMO_STRUCTURE_NODES where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", rowconstruct.Item(0)) + ' Dim DTNODES As DataTable = MYDB_ECM.GetDatatable(sqlnodes) - Dim sqlimage = String.Format("select * from TBPMO_STRUCTURE_NODES_CONFIGURATION where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", rowconstruct.Item(0)) - Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(sql) - Dim TREEVIEW_IMAGELIST = New ImageList + ' Dim sqlimage = String.Format("select * from TBPMO_STRUCTURE_NODES_CONFIGURATION where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", rowconstruct.Item(0)) + ' Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(sql) + ' Dim TREEVIEW_IMAGELIST = New ImageList - For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows - Try - Dim bimage = row.Item("NODE_IMAGE") - If Not IsDBNull(bimage) Then - Dim Node_image = ByteArrayToBitmap(bimage) - TREEVIEW_IMAGELIST.Images.Add(row.Item("GUID").ToString, Node_image) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID") - End If - Catch ex As Exception + ' For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows + ' Try + ' Dim bimage = row.Item("NODE_IMAGE") + ' If Not IsDBNull(bimage) Then + ' Dim Node_image = ByteArrayToBitmap(bimage) + ' TREEVIEW_IMAGELIST.Images.Add(row.Item("GUID").ToString, Node_image) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID") + ' End If + ' Catch ex As Exception - End Try + ' End Try - Next + ' Next - 'Dim async As New ClassAsyncNodeBuild(DTNODES, TREEVIEW_IMAGELIST) - 'async.bw.RunWorkerAsync() - 'While async.bw.IsBusy - ' Application.DoEvents() - 'End While - Dim MyTreeview As TreeView = ClassNodeNavigation.CreateTreeViewNodes(DTNODES, TREEVIEW_IMAGELIST) - ConstructTreeViewTuple.Add(Tuple.Create(MyTreeview), rowconstruct.Item(0)) - Catch ex As Exception - ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Adding TreeView to Dictionary: ") - End Try + ' 'Dim async As New ClassAsyncNodeBuild(DTNODES, TREEVIEW_IMAGELIST) + ' 'async.bw.RunWorkerAsync() + ' 'While async.bw.IsBusy + ' ' Application.DoEvents() + ' 'End While + ' Dim MyTreeview As TreeView = ClassNodeNavigation.CreateTreeViewNodes(DTNODES, TREEVIEW_IMAGELIST, DT_CON) + ' ConstructTreeViewTuple.Add(Tuple.Create(MyTreeview), rowconstruct.Item(0)) + ' Catch ex As Exception + ' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Adding TreeView to Dictionary: ") + ' End Try - Next + ' Next - ConstructorsTuple_TreeView = ConstructTreeViewTuple + ' ConstructorsTuple_TreeView = ConstructTreeViewTuple - End Function + 'End Function - Public Shared Function Check_TreeViewLoaded(CONSTRUCTID As Integer) - Try - For Each constrid As Integer In ConstructorsTuple_TreeView.keys - If constrid = CONSTRUCTID Then - Return True - End If - Next - Return False - Catch ex As Exception - LOGGER.Warn("Error in Check_TreeViewLoaded: " & ex.Message) - Return False - End Try - End Function + 'Public Shared Function Check_TreeViewLoaded(CONSTRUCTID As Integer) + ' Try + ' For Each constrid As Integer In ConstructorsTuple_TreeView.keys + ' If constrid = CONSTRUCTID Then + ' Return True + ' End If + ' Next + ' Return False + ' Catch ex As Exception + ' LOGGER.Warn("Error in Check_TreeViewLoaded: " & ex.Message) + ' Return False + ' End Try + 'End Function End Class diff --git a/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb b/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb index 3c07d45..b35a0f7 100644 --- a/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb +++ b/app/DD-Record-Organizer/Classes/ClassDOC_SEARCH.vb @@ -52,24 +52,24 @@ Public Class ClassDOC_SEARCH Dim SQL_DOC_SEARCH If CURRENT_SEARCH_TYPE = "ENTITY" Then - SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine & - "'NO OPTION IN ENTITY-SEARCH' AS OPTION1," & vbNewLine & - "'NO OPTION IN ENTITY-SEARCH' AS OPTION2," & vbNewLine & - "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX1," & vbNewLine & - "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX2," & vbNewLine & - "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX3," & vbNewLine & - "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX4," & vbNewLine & - "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN1," & vbNewLine & - "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN2," & vbNewLine & - "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN3," & vbNewLine & - "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN4" & vbNewLine & - "FROM " & vbNewLine & - "VWPMO_DOC_SEARCH T" & vbNewLine & - "WHERE T.DocID IN (select DISTINCT T.DOC_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0}) " & vbNewLine & + SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbCrLf & + "'NO OPTION IN ENTITY-SEARCH' AS OPTION1," & vbCrLf & + "'NO OPTION IN ENTITY-SEARCH' AS OPTION2," & vbCrLf & + "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX1," & vbCrLf & + "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX2," & vbCrLf & + "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX3," & vbCrLf & + "'NO INDEX IN ENTITY-SEARCH' AS DOCIDX4," & vbCrLf & + "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN1," & vbCrLf & + "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN2," & vbCrLf & + "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN3," & vbCrLf & + "'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN4" & vbCrLf & + "FROM " & vbCrLf & + "VWPMO_DOC_SEARCH T" & vbCrLf & + "WHERE T.DocID IN (select DISTINCT T.DOC_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0}) " & vbCrLf & "AND T.DocID IN (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {2} AND dwObjectID = T.DocID)", ENTITY_ID, USER_LANGUAGE, USERID_FK_INT_ECM, OPTION1, OPTION2) If CURRENT_ENTITYSQL_WHERE <> "" Then Dim where = CURRENT_ENTITYSQL_WHERE.Replace("WHERE [RECORD-ID] IN ", "") - SQL_DOC_SEARCH = SQL_DOC_SEARCH & " " & vbNewLine & String.Format("AND T.DocID IN (SELECT DISTINCT DOC_ID from TBPMO_DOC_RECORD_LINK WHERE RECORD_ID IN ({0}))", where) + SQL_DOC_SEARCH = SQL_DOC_SEARCH & " " & vbCrLf & String.Format("AND T.DocID IN (SELECT DISTINCT DOC_ID from TBPMO_DOC_RECORD_LINK WHERE RECORD_ID IN ({0}))", where) End If If BG = True Then If IsNothing(CURRENT_DT_DOC_ENTITY_SEARCH) Then @@ -106,120 +106,120 @@ Public Class ClassDOC_SEARCH SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@RECORD_ID", RECORD_ID) SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@USERID_FK_INT_ECM", USERID_FK_INT_ECM) - ' SQL_DOC_SEARCH = $"SELECT T.* ," & vbNewLine & - ' $"ISNULL(T1.VALUE,'') AS OPTION1," & vbNewLine & - ' $"ISNULL(T2.VALUE,'') AS OPTION2," & vbNewLine & - ' $"ISNULL(T3.VALUE,'') AS OPTION3," & vbNewLine & - ' $"ISNULL(T4.VALUE,'') AS OPTION4," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine & - ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vbNewLine & - ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID),'') AS VALUE1," & vbNewLine & - ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID),'') AS VALUE2," & vbNewLine & - ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID),'') AS VALUE3," & vbNewLine & - ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID),'') AS VALUE4," & vbNewLine & - '$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC4.GUID),'') AS VALUE5," & vbNewLine & - '$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC5.GUID),'') AS VALUE6," & vbNewLine & - '$"dwAccessRight AS ACCESS_RIGHT" & vbNewLine & - '$"FROM " & vbNewLine & - '$"VWPMO_DOC_SEARCH T " & vbNewLine & - '$"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine & - '$"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine & - ' $"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{USER_LANGUAGE}' AND TRC.GUID = {VALUE_CONF1}" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{USER_LANGUAGE}' AND TRC1.GUID = {VALUE_CONF2}" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{USER_LANGUAGE}' AND TRC2.GUID = {VALUE_CONF3}" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{USER_LANGUAGE}' AND TRC3.GUID = {VALUE_CONF4}" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC4 ON TR.FORM_ID = TRC4.ENTITY_ID AND TRC4.LANGUAGE = '{USER_LANGUAGE}' AND TRC4.GUID = {VALUE_CONF5}" & vbNewLine & - ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC5 ON TR.FORM_ID = TRC5.ENTITY_ID AND TRC5.LANGUAGE = '{USER_LANGUAGE}' AND TRC5.GUID = {VALUE_CONF6}" & vbNewLine & - ' $"LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {OPTION1} " & vbNewLine & - ' $"LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {OPTION2} " & vbNewLine & - ' $"LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {OPTION3} " & vbNewLine & - ' $"LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {OPTION4} " & vbNewLine & + ' SQL_DOC_SEARCH = $"SELECT T.* ," & vBCrlf & + ' $"ISNULL(T1.VALUE,'') AS OPTION1," & vBCrlf & + ' $"ISNULL(T2.VALUE,'') AS OPTION2," & vBCrlf & + ' $"ISNULL(T3.VALUE,'') AS OPTION3," & vBCrlf & + ' $"ISNULL(T4.VALUE,'') AS OPTION4," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vBCrlf & + ' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vBCrlf & + ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID),'') AS VALUE1," & vBCrlf & + ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID),'') AS VALUE2," & vBCrlf & + ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID),'') AS VALUE3," & vBCrlf & + ' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID),'') AS VALUE4," & vBCrlf & + '$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC4.GUID),'') AS VALUE5," & vBCrlf & + '$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC5.GUID),'') AS VALUE6," & vBCrlf & + '$"dwAccessRight AS ACCESS_RIGHT" & vBCrlf & + '$"FROM " & vBCrlf & + '$"VWPMO_DOC_SEARCH T " & vBCrlf & + '$"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vBCrlf & + '$"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vBCrlf & + ' $"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{USER_LANGUAGE}' AND TRC.GUID = {VALUE_CONF1}" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{USER_LANGUAGE}' AND TRC1.GUID = {VALUE_CONF2}" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{USER_LANGUAGE}' AND TRC2.GUID = {VALUE_CONF3}" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{USER_LANGUAGE}' AND TRC3.GUID = {VALUE_CONF4}" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC4 ON TR.FORM_ID = TRC4.ENTITY_ID AND TRC4.LANGUAGE = '{USER_LANGUAGE}' AND TRC4.GUID = {VALUE_CONF5}" & vBCrlf & + ' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC5 ON TR.FORM_ID = TRC5.ENTITY_ID AND TRC5.LANGUAGE = '{USER_LANGUAGE}' AND TRC5.GUID = {VALUE_CONF6}" & vBCrlf & + ' $"LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {OPTION1} " & vBCrlf & + ' $"LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {OPTION2} " & vBCrlf & + ' $"LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {OPTION3} " & vBCrlf & + ' $"LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {OPTION4} " & vBCrlf & ' $"WHERE TRL.RECORD_ID = {RECORD_ID} AND TR.FORM_ID = {ENTITY_ID} AND TRIGHTS.dwUserOrGroupID = {USERID_FK_INT_ECM}" ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT" Then Dim sqlft = SQL_FULLTEXT sqlft = sqlft.Replace("@FULLTEXT", CURRENT_FULLTEXT_PATTERN) - SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine & - "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({3},T.DocID,{0}) AS OPTION1," & vbNewLine & - "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{0}) AS OPTION2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX1') AS DOCIDX1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX2') AS DOCIDX2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX3') AS DOCIDX3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX4') AS DOCIDX4," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN1','{1}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN2','{1}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN3','{1}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN4','{1}',TRL.RECORD_ID) AS DROPDOWN4" & vbNewLine & - "FROM " & vbNewLine & - "VWPMO_DOC_SEARCH T" & vbNewLine & - "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine & - "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine & - "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine & - "LEFT OUTER JOIN TBPMO_CONTROL_VALUE TCTRL ON TR.GUID = TCTRL.RECORD_ID" & vbNewLine & - "WHERE TR.FORM_ID = {0} AND TRIGHTS.dwUserOrGroupID = {2} AND (" & vbNewLine & - "TCTRL.VALUE LIKE '%{6}%' OR" & vbNewLine & - "T.DocID IN ({5}" & vbNewLine & + SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbCrLf & + "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({3},T.DocID,{0}) AS OPTION1," & vbCrLf & + "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{0}) AS OPTION2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX1') AS DOCIDX1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX2') AS DOCIDX2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX3') AS DOCIDX3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX4') AS DOCIDX4," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN1','{1}',TRL.RECORD_ID) AS DROPDOWN1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN2','{1}',TRL.RECORD_ID) AS DROPDOWN2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN3','{1}',TRL.RECORD_ID) AS DROPDOWN3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN4','{1}',TRL.RECORD_ID) AS DROPDOWN4" & vbCrLf & + "FROM " & vbCrLf & + "VWPMO_DOC_SEARCH T" & vbCrLf & + "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf & + "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf & + "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf & + "LEFT OUTER JOIN TBPMO_CONTROL_VALUE TCTRL ON TR.GUID = TCTRL.RECORD_ID" & vbCrLf & + "WHERE TR.FORM_ID = {0} AND TRIGHTS.dwUserOrGroupID = {2} AND (" & vbCrLf & + "TCTRL.VALUE LIKE '%{6}%' OR" & vbCrLf & + "T.DocID IN ({5}" & vbCrLf & "))", ENTITY_ID, USER_LANGUAGE, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft, CURRENT_FULLTEXT_PATTERN) ElseIf CURRENT_SEARCH_TYPE = "NODE_DOWN" Then - SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.* ," & vbNewLine & - "ISNULL(T1.VALUE,'') AS OPTION1," & vbNewLine & - "ISNULL(T2.VALUE,'') AS OPTION2," & vbNewLine & - "ISNULL(T3.VALUE,'') AS OPTION3," & vbNewLine & - "ISNULL(T4.VALUE,'') AS OPTION4," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID) AS VALUE1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID) AS VALUE2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID) AS VALUE3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID) AS VALUE4" & vbNewLine & - "FROM " & vbNewLine & - "VWPMO_DOC_SEARCH T " & vbNewLine & - "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine & - "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine & - "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbNewLine & - "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine & - "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{7}' AND TRC.GUID = {8}" & vbNewLine & - "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{7}' AND TRC1.GUID = {9}" & vbNewLine & - "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{7}' AND TRC2.GUID = {10}" & vbNewLine & - "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{7}' AND TRC3.GUID = {11}" & vbNewLine & - "LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbNewLine & - "LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbNewLine & - "LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbNewLine & - "LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbNewLine & + SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.* ," & vbCrLf & + "ISNULL(T1.VALUE,'') AS OPTION1," & vbCrLf & + "ISNULL(T2.VALUE,'') AS OPTION2," & vbCrLf & + "ISNULL(T3.VALUE,'') AS OPTION3," & vbCrLf & + "ISNULL(T4.VALUE,'') AS OPTION4," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID) AS VALUE1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID) AS VALUE2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID) AS VALUE3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID) AS VALUE4" & vbCrLf & + "FROM " & vbCrLf & + "VWPMO_DOC_SEARCH T " & vbCrLf & + "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf & + "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf & + "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf & + "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf & + "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{7}' AND TRC.GUID = {8}" & vbCrLf & + "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{7}' AND TRC1.GUID = {9}" & vbCrLf & + "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{7}' AND TRC2.GUID = {10}" & vbCrLf & + "LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{7}' AND TRC3.GUID = {11}" & vbCrLf & + "LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbCrLf & + "LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbCrLf & + "LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbCrLf & + "LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbCrLf & "WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {0} AND TRIGHTS.dwUserOrGroupID = {6}", USER_GUID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE, VALUE_CONF1, VALUE_CONF2, VALUE_CONF3, VALUE_CONF4) ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT_SUBNODES" Then Dim sqlft = SQL_FULLTEXT sqlft = sqlft.Replace("@FULLTEXT", CURRENT_FULLTEXT_PATTERN) - SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine & - "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{1}) AS OPTION1," & vbNewLine & - "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({5},T.DocID,{1}) AS OPTION2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{0}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{0}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{0}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine & - "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbNewLine & - "FROM " & vbNewLine & - "VWPMO_DOC_SEARCH T" & vbNewLine & - "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine & - "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine & - "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbNewLine & - "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine & - "WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {2} AND TRIGHTS.dwUserOrGroupID = {3}" & vbNewLine & + SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbCrLf & + "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{1}) AS OPTION1," & vbCrLf & + "[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({5},T.DocID,{1}) AS OPTION2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{0}',TRL.RECORD_ID) AS DROPDOWN1," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{0}',TRL.RECORD_ID) AS DROPDOWN2," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{0}',TRL.RECORD_ID) AS DROPDOWN3," & vbCrLf & + "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbCrLf & + "FROM " & vbCrLf & + "VWPMO_DOC_SEARCH T" & vbCrLf & + "INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf & + "INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf & + "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf & + "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf & + "WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {2} AND TRIGHTS.dwUserOrGroupID = {3}" & vbCrLf & "AND T.DocID IN ({6})", USER_LANGUAGE, ENTITY_ID, USER_GUID, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft) End If LOGGER.Debug("SQL_DOC_SEARCH: " & SQL_DOC_SEARCH) @@ -266,7 +266,7 @@ Public Class ClassDOC_SEARCH Dim DT_FILE_RESULT As DataTable = GET_DOCSEARCH_DATATABLE(BG) CURRENT_DOC_RESULTS = DT_FILE_RESULT If IsNothing(DT_FILE_RESULT) Then - ' MsgBox("ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING" & vbNewLine & "Please inform Your Sysadmin", MsgBoxStyle.Exclamation, "Attention") + ' MsgBox("ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING" & vBCrlf & "Please inform Your Sysadmin", MsgBoxStyle.Exclamation, "Attention") LOGGER.Warn("ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING!!") Return Nothing End If @@ -371,7 +371,7 @@ Public Class ClassDOC_SEARCH End If Catch ex As Exception LOGGER.Warn("Unexpected Error in Construct Datatable: " & ex.Message) - MsgBox("Unexpected Error in Construct Datatable for GridResult: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected Error in Construct Datatable for GridResult: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try sw.Done() @@ -486,7 +486,7 @@ Public Class ClassDOC_SEARCH oNewRow.Item(i) = CInt(rowvalue) End If Else - oNewRow.Item(i) = rowvalue.ToString + oNewRow.Item(i) = rowvalue.ToString End If Catch ex As Exception @@ -508,22 +508,22 @@ Public Class ClassDOC_SEARCH sw.Done() Catch ex As Exception - MsgBox("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & vbCrLf & ex.Message, MsgBoxStyle.Critical) LOGGER.Warn("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & ex.Message) Return Nothing End Try End Function - Public Shared Function CREATE_DOC_RELATED_LINKS(DOC_ID As Integer, RECORD_ID As Integer) + Public Shared Function PROF_DOC_CREATE_UPDATE(pDOC_ID As Integer, pRECORD_ID As Integer, pFILE_HASH As String) Try - Dim execute = String.Format("EXEC PROF_DOC_CREATE_UPDATE {0},{1},'{2}','{3}'", DOC_ID, RECORD_ID, USER_USERNAME, CURRENT_FILE_HASH) + Dim execute = String.Format("EXEC PROF_DOC_CREATE_UPDATE {0},{1},'{2}','{3}'", pDOC_ID, pRECORD_ID, USER_USERNAME, pFILE_HASH) If MYDB_ECM.ExecuteNonQuery(execute) = True Then Return True Else Return False End If Catch ex As Exception - MsgBox("Unexpected Error in CREATE_DOC_RELATED_LINKS: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected Error in PROF_DOC_CREATE_UPDATE: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function @@ -537,9 +537,9 @@ Public Class ClassDOC_SEARCH If ClassWDRights.Init = True Then If ClassWDRights.Doc_Renew_Rights(oWMObject, RESULT_DOCID, RESULT_DOC_PATH, DeleteRightsBefore) Then If ClassWDRights.MSG_RESULT <> "" Then - Dim msg = "Achtung: einige Rechte konnten nicht gesetzt werden: " & vbNewLine & ClassWDRights.MSG_RESULT + Dim msg = "Achtung: einige Rechte konnten nicht gesetzt werden: " & vbCrLf & ClassWDRights.MSG_RESULT If USER_LANGUAGE <> "de-DE" Then - msg = "Attention: some rights could not be set: " & vbNewLine & ClassWDRights.MSG_RESULT + msg = "Attention: some rights could not be set: " & vbCrLf & ClassWDRights.MSG_RESULT End If ClassHelper.MSGBOX_Handler("INFO", "Information:", msg) End If @@ -553,7 +553,7 @@ Public Class ClassDOC_SEARCH End If Catch ex As Exception - MsgBox("Unexpected Error in SET_WD_RIGHTS: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected Error in SET_WD_RIGHTS: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function diff --git a/app/DD-Record-Organizer/Classes/ClassDragDrop.vb b/app/DD-Record-Organizer/Classes/ClassDragDrop.vb index 7b87dfe..f5fc951 100644 --- a/app/DD-Record-Organizer/Classes/ClassDragDrop.vb +++ b/app/DD-Record-Organizer/Classes/ClassDragDrop.vb @@ -8,6 +8,8 @@ Public Class ClassDragDrop Public Shared Function Drop_File(e As DragEventArgs) Try LOGGER.Debug("In Drop_File....") + ClassHelper.DELETE_PMO_FILE_USER_OPEN_FILES() + files_dropped = New String() {} ' WICHTIG: DB-Löschung NICHT im UI-Thread erzwingen. diff --git a/app/DD-Record-Organizer/Classes/ClassFolderWatcher.vb b/app/DD-Record-Organizer/Classes/ClassFolderWatcher.vb deleted file mode 100644 index 0e95d76..0000000 --- a/app/DD-Record-Organizer/Classes/ClassFolderWatcher.vb +++ /dev/null @@ -1,151 +0,0 @@ -Imports System.IO -Imports Independentsoft -Imports System.Threading - - -Public Class ClassFolderWatcher - Public Shared FolderWatcher_SCAN As FileSystemWatcher - Public Shared NEW_FILES As Boolean = True - Public Shared Function Restart_FolderWatchSCAN() - - Try - If FolderWatcher_SCAN.EnableRaisingEvents = True Then - 'Gestartet also Stoppen - FolderWatcher_SCAN.EnableRaisingEvents = False - FWSCAN_started = False - 'FolderWatch neu instanzieren - FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") - LOGGER.Warn("FolderWatchScan neu instanziert") - FolderWatcher_SCAN.IncludeSubdirectories = CURRENT_SCAN_FOLDERWATCH_SD - FolderWatcher_SCAN.EnableRaisingEvents = True - AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated - FWSCAN_started = True - SaveMySettingsValue("FWSCAN_started", "True", "ConfigMain") - - End If - Catch ex As Exception - MsgBox("Error in Restart_FolderWatchSCAN:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - End Try - - End Function - Public Shared Function StartStop_FolderWatchSCAN() - Try - If CURRENT_SCAN_FOLDERWATCH = "" Then - MsgBox("Bitte definieren Sie einen Überwachungsordner für Scan-Eingänge:", MsgBoxStyle.Exclamation) - Return False - End If - If FolderWatcher_SCAN Is Nothing Then - FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") - LOGGER.Info("FolderWatch Scan Gestartet") - FolderWatcher_SCAN.IncludeSubdirectories = CURRENT_SCAN_FOLDERWATCH_SD - FolderWatcher_SCAN.EnableRaisingEvents = True - AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated - FWSCAN_started = True - SaveMySettingsValue("FWSCAN_started", "True", "ConfigMain") - Return 1 - End If - If FolderWatcher_SCAN.EnableRaisingEvents = False Then - ' Dim watcher As New FileSystemWatcher() - ' watcher.Path = CURRENT_FOLDERWATCH - FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") - LOGGER.Info("FolderWatch Scan Gestartet") - FolderWatcher_SCAN.IncludeSubdirectories = CURRENT_SCAN_FOLDERWATCH_SD - FolderWatcher_SCAN.EnableRaisingEvents = True - AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated - FWSCAN_started = True - SaveMySettingsValue("FWSCAN_started", "True", "ConfigMain") - Return 1 - Else - 'Gestartet also Stoppen - FolderWatcher_SCAN.EnableRaisingEvents = False - FWSCAN_started = False - LOGGER.Info("FolderWatch Scan gestoppt") - SaveMySettingsValue("FWSCAN_started", "False", "ConfigMain") - Return 0 - End If - - Catch ex As Exception - MsgBox("Error in StartStop_FolderWatchSCAN:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - Return 99 - End Try - End Function - Private Shared Sub OnCreated(source As Object, e As FileSystemEventArgs) - Try - For Each row As DataRow In DTEXCLUDE_FILES.Rows - Dim content As String = row.Item(0).ToString.ToLower - If e.FullPath.ToLower.Contains(content) Then - Exit Sub - End If - Next - - Dim handleType As String - If e.FullPath.EndsWith(".msg") Then - handleType = "SCAN_OUTLOOK_MESSAGE" - Else - handleType = "SCAN" - End If - 'Die Datei übergeben - LOGGER.Debug("OnCreated-File:" & e.FullPath) - If FileExistsinDropTable(CURRENT_FILENAME) = False Then - If ClassHelper.Insert_USER_File(e.FullPath, handleType) = False Then - Exit Sub - End If - Else - Console.WriteLine("File existiert bereits") - End If - ClassHelper.Create_USER_FILE_TABLE() - NEW_FILES = True - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in folder_watch_Created") - End Try - - End Sub - - Public Shared Function FileExistsinDropTable(Filename As String) - Dim check As String - Try - check = "SELECT COUNT(*) FROM TBPMO_FILES_USER WHERE FILENAME2WORK = '" & Filename & "' AND WORKED = 0" - Dim result = MYDB_ECM.GetScalarValue(check) - Return result - Catch ex As Exception - MsgBox("Error in FileExistsinDropTable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & check, MsgBoxStyle.Critical) - Return Nothing - End Try - - End Function - Public Shared Function DELETE_SCAN_File(filename As String) - Try - Dim filename_only As String = Path.GetFileName(filename) - Dim del As String = String.Format("DELETE FROM TBPMO_FILES_USER WHERE FILENAME2WORK = '{0}'", filename) - Return MYDB_ECM.ExecuteNonQuery(del) - Catch ex As Exception - MsgBox("Unexpected Error in DELETE_SCAN_File: " & ex.Message, MsgBoxStyle.Critical) - Return False - End Try - End Function - Public Shared Function DELETE_SCAN_File_User() - Try - Dim del As String = String.Format("DELETE FROM TBPMO_FILES_USER WHERE USER_WORK = '{0}' AND HANDLE_TYPE = 'SCAN'", USER_USERNAME) - Return MYDB_ECM.ExecuteNonQuery(del) - Catch ex As Exception - MsgBox("Unexpected Error in DELETE_SCAN_File_User: " & ex.Message, MsgBoxStyle.Critical) - Return False - End Try - End Function - - Public Shared Function Check_Scan_Files() - Try - Dim sql As String = String.Format("select * from TBPMO_FILES_USER where HANDLE_TYPE = 'SCAN' and WORKED = 0 AND USER_WORK = '{0}'", USER_USERNAME) - Dim DT As DataTable = MYDB_ECM.GetDatatable(sql) - For Each row As DataRow In DT.Rows - If System.IO.File.Exists(row.Item("FILENAME2WORK")) = False Then - DELETE_SCAN_File(row.Item("FILENAME2WORK")) - End If - Next - CURRENT_SCAN_TABLE = MYDB_ECM.GetDatatable(sql) - Catch ex As Exception - MsgBox("Unexpected Error in DELETE_SCAN_File_User: " & ex.Message, MsgBoxStyle.Critical) - Return Nothing - End Try - End Function -End Class diff --git a/app/DD-Record-Organizer/Classes/ClassHelper.vb b/app/DD-Record-Organizer/Classes/ClassHelper.vb index 8573020..70000fb 100644 --- a/app/DD-Record-Organizer/Classes/ClassHelper.vb +++ b/app/DD-Record-Organizer/Classes/ClassHelper.vb @@ -7,46 +7,37 @@ Public Class ClassHelper Private Shared BW_DocID As Integer Private Shared BW_ParentID As Integer Private Shared BW_Filename As String - Public Shared Function FORMAT_WM_PATH(WMpath As String) + Public Shared Function FORMAT_WM_PATH(WMpath As String) As String Try - If Not IsNothing(WMpath) Then - Dim ochanged As Boolean = False - If WMpath.StartsWith("W:") Then - WMpath = WMpath.Replace("W:", WMPATH_PREFIX) - ochanged = True - ElseIf WMpath.StartsWith("\") Then - If WMpath.StartsWith(WMPATH_PREFIX) = False Then - WMpath = WMPATH_PREFIX & WMpath - ochanged = True - End If - End If - LOGGER.Debug("WMpath is: " & WMpath) - Return WMpath - Else + If IsNothing(WMpath) Then Return Nothing End If + If WMpath.StartsWith("W:") Then + WMpath = WMpath.Replace("W:", WMPATH_PREFIX) + ElseIf WMpath.StartsWith("\") AndAlso Not WMpath.StartsWith(WMPATH_PREFIX) Then + WMpath = WMPATH_PREFIX & WMpath + End If + + LOGGER.Debug("WMpath is: " & WMpath) + Return WMpath Catch ex As Exception Return WMpath End Try - End Function - Public Shared Function GetRelPath(WMpath As String) + Public Shared Function GetRelPath(WMpath As String) As String Try If WMpath.StartsWith("W:") Then WMpath = WMpath.Replace("W:", "") - - ElseIf WMpath.StartsWith("\") Then - If WMpath.StartsWith(WMPATH_PREFIX) = False Then - WMpath = WMpath.Replace("WMPATH_PREFIX:", "") - End If + ElseIf WMpath.StartsWith(WMPATH_PREFIX) Then + WMpath = WMpath.Replace(WMPATH_PREFIX, "") End If + LOGGER.Debug("WMpath is: " & WMpath) Return WMpath Catch ex As Exception Return WMpath End Try - End Function Public Shared Function Format_Currency(value As String, language As String) Try @@ -118,53 +109,28 @@ Public Class ClassHelper End If Return tempName End Function - Public Shared Function CheckFileIsInUse(ByVal filename) As Boolean - Dim fs As Integer = FreeFile() - Dim inuse As Boolean = False - If File.Exists(filename) Then - Try - Using f As New IO.FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None) - ' thisFileInUse = False - End Using - Catch - inuse = True - End Try - - Try - FileOpen(fs, filename, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockReadWrite) - Catch ex As Exception - LOGGER.Warn("File " & filename & " inuse or not able to open - message: " & ex.Message) - inuse = True - Finally - FileClose(fs) - End Try - End If - Return inuse - End Function - Public Shared Function Versionierung_Datei(Dateiname As String) - Dim extension - Dim _NewFileString + Public Shared Function Versionierung_Datei(pDateiname As String) As String Try - Dim version As Integer = 1 - - Dim Stammname As String = Path.GetDirectoryName(Dateiname) & "\" & Path.GetFileNameWithoutExtension(Dateiname) - extension = Path.GetExtension(Dateiname) + pDateiname = FORMAT_WM_PATH(pDateiname) + Dim dir As String = Path.GetDirectoryName(pDateiname) + Dim baseName As String = Path.GetFileNameWithoutExtension(pDateiname) + Dim ext As String = Path.GetExtension(pDateiname) + Dim stammname As String = Path.Combine(dir, baseName) - Dim _neuername As String = Stammname - 'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "") - 'Überprüfen ob File existiert - If File.Exists(_neuername & extension) = False Then - _NewFileString = _neuername - Else - Do While File.Exists(_neuername & extension) - version = version + 1 - _neuername = Stammname & "~" & version - _NewFileString = _neuername - Loop + If Not File.Exists(pDateiname) Then + Return "" End If - Return _NewFileString & extension + + Dim version As Integer = 2 + Dim candidate As String + Do + candidate = stammname & "~" & version & ext + version += 1 + Loop While File.Exists(candidate) + + Return candidate Catch ex As Exception - LOGGER.Warn(" - Error in versioning file - error: " & vbNewLine & ex.Message) + LOGGER.Warn(" - Error in versioning file - error: " & vbCrLf & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in versioning file:") Return "" End Try @@ -209,12 +175,13 @@ Public Class ClassHelper Return True Else MSGBOX_Handler("ERROR", "", "Sorry, but the docpath for doc-id: " & DocID & " is nothing!") - Return False LOGGER.Debug("RESULT_DOC_PATH IS NOTHING") + Return False + End If Catch ex As Exception - MsgBox("Unexpected Error in File_open:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) - LOGGER.Warn("Error in File_open: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) + MsgBox("Unexpected Error in File_open:" & vbCrLf & ex.Message & vbCrLf & RESULT_DOC_PATH & vbCrLf & "DocID: " & DocID, MsgBoxStyle.Critical) + LOGGER.Warn("Error in File_open: " & ex.Message & vbCrLf & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) Return False End Try End Function @@ -228,8 +195,8 @@ Public Class ClassHelper LOGGER.Debug("RESULT_DOC_PATH IS NOTHING") End If Catch ex As Exception - MsgBox("Unexpected Error in Open_Folder:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) - LOGGER.Warn("Error in Open_Folder: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) + MsgBox("Unexpected Error in Open_Folder:" & vbCrLf & ex.Message & vbCrLf & RESULT_DOC_PATH & vbCrLf & "DocID: " & DocID, MsgBoxStyle.Critical) + LOGGER.Warn("Error in Open_Folder: " & ex.Message & vbCrLf & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) End Try End Sub Private Shared Sub File_SYSOPEN(RESULT_DOC_PATH As Object, DocID As String, pParentID As Integer) @@ -247,8 +214,8 @@ Public Class ClassHelper LOGGER.Warn("File_SYSOPEN RESULT_DOC_PATH is nothing") End If Catch ex As Exception - MsgBox("Unexpected Error in File_SYSOPEN:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) - LOGGER.Warn("Error in File_SYSOPEN: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) + MsgBox("Unexpected Error in File_SYSOPEN:" & vbCrLf & ex.Message & vbCrLf & RESULT_DOC_PATH & vbCrLf & "DocID: " & DocID, MsgBoxStyle.Critical) + LOGGER.Warn("Error in File_SYSOPEN: " & ex.Message & vbCrLf & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID) End Try End Sub @@ -313,15 +280,15 @@ Public Class ClassHelper Catch ex As Exception ' Fehler im Prozessstart oder während des Wartens - LOGGER.Warn("Error in Process.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) - MsgBox("Error in OpenFile: " & ex.Message & vbNewLine & - "Path: " & BW_DocPath & vbNewLine & "DocID: " & BW_DocID, + LOGGER.Warn("Error in Process.Start(): " & ex.Message & vbCrLf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) + MsgBox("Error in OpenFile: " & ex.Message & vbCrLf & + "Path: " & BW_DocPath & vbCrLf & "DocID: " & BW_DocID, MsgBoxStyle.Exclamation, "Open File Error") End Try Catch ex As Exception ' Fehler im gesamten Worker (z. B. Path nicht vorhanden) - LOGGER.Warn("General error in BWFileHandler_DoWork: " & ex.Message & vbNewLine & + LOGGER.Warn("General error in BWFileHandler_DoWork: " & ex.Message & vbCrLf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) ' Letzter Versuch: Öffne mit Standardprogramm @@ -329,7 +296,7 @@ Public Class ClassHelper Process.Start(BW_DocPath) LOGGER.Debug("Fallback: Document opened with default application.") Catch ex1 As Exception - LOGGER.Warn("Fallback error in Process.Start(): " & ex1.Message & vbNewLine & + LOGGER.Warn("Fallback error in Process.Start(): " & ex1.Message & vbCrLf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) End Try End Try @@ -382,17 +349,17 @@ Public Class ClassHelper ' End If ' Catch ex As Exception - ' LOGGER.Warn("Error in Process1.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) - ' MsgBox("Error in OpenFile: " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID, MsgBoxStyle.Exclamation) + ' LOGGER.Warn("Error in Process1.Start(): " & ex.Message & vBCrlf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) + ' MsgBox("Error in OpenFile: " & ex.Message & vBCrlf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID, MsgBoxStyle.Exclamation) ' Exit Sub ' End Try ' Catch ex As Exception - ' LOGGER.Warn("Error in Process.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) + ' LOGGER.Warn("Error in Process.Start(): " & ex.Message & vBCrlf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) ' Try ' Process.Start(BW_DocPath) ' Catch ex1 As Exception - ' LOGGER.Warn("Error in Process.Start(1): " & ex1.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) + ' LOGGER.Warn("Error in Process.Start(1): " & ex1.Message & vBCrlf & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID) ' End Try ' End Try 'End Sub @@ -407,14 +374,11 @@ Public Class ClassHelper End If End If Catch ex As Exception - MsgBox("Unexpected Error in FOLDER_OPEN:" & vbNewLine & ex.Message & vbNewLine & PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) - LOGGER.Warn("Error in FOLDER_OPEN: " & ex.Message & vbNewLine & " - Path: " & PATH & " - DocID: " & DocID) + MsgBox("Unexpected Error in FOLDER_OPEN:" & vbCrLf & ex.Message & vbCrLf & PATH & vbCrLf & "DocID: " & DocID, MsgBoxStyle.Critical) + LOGGER.Warn("Error in FOLDER_OPEN: " & ex.Message & vbCrLf & " - Path: " & PATH & " - DocID: " & DocID) End Try End Sub - Shared Function Convert_Date_2_Form_Format(p1 As Date) As Date - Throw New NotImplementedException - End Function Public Shared Function InsertEssential_Log(REFERENCE_KEY As Integer, REFERENCE_STRING As String, COMMENT As String) Try COMMENT = COMMENT.Replace("'", "") @@ -449,7 +413,7 @@ Public Class ClassHelper Public Shared Sub MSGBOX_Handler(type As String, Caption As String, info1 As String, Optional info2 As String = "") Dim msg = info1 If info2 <> "" Then - msg &= vbNewLine & vbNewLine & info2 + msg &= vbCrLf & vbCrLf & info2 End If If type = "ERROR" Then MessageBox.Show(msg, Caption, MessageBoxButtons.OK, MessageBoxIcon.Error) @@ -495,6 +459,18 @@ Public Class ClassHelper Return False End Try End Function + Public Shared Sub REMOVE_OLD_DROP_FILES() + Try + Dim oDEL = String.Format("UPDATE [DD_ECM].[dbo].[TBPMO_FILES_USER] + SET [USER_WORK] = [USER_WORK] + '_TIMEOUT', + WORKED = 1 + WHERE ADDED_WHEN < DATEADD(MINUTE, -5, GETDATE()) + AND WORKED = 0 AND USER_WORK = '{0}' ;", USER_USERNAME) + MYDB_ECM.ExecuteNonQuery(oDEL) + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error while REMOVE_OLD_DROP_FILES") + End Try + End Sub Public Shared Sub Create_USER_FILE_TABLE() Try Dim sql = String.Format("SELECT *, CONVERT(BIT,0) AS DELETE_FILE FROM TBPMO_FILES_USER WHERE (USER_WORK = '{0}') AND WORKED = 0", USER_USERNAME) @@ -512,6 +488,15 @@ Public Class ClassHelper Return False End Try End Function + Public Shared Function DELETE_PMO_FILE_USER_OPEN_FILES() + Try + Dim del As String = String.Format("DELETE FROM TBPMO_FILES_USER WHERE (USER_WORK = '{0}') AND WORKED = 0", USER_USERNAME) + Return MYDB_ECM.ExecuteNonQuery(del) + Catch ex As Exception + MsgBox("Unexpected Error in DELETE_PMO_FILE_USER_OPEN_FILES: " & ex.Message, MsgBoxStyle.Critical) + Return False + End Try + End Function Public Shared Function DecryptString(ciphertext As String, MethodName As String) Dim result As String Dim wrapper As New ClassEncryption("!35452didalog=") @@ -530,7 +515,6 @@ Public Class ClassHelper Dim filteredData As DataTable = BaseDatatable.Clone() 'Einfügevariante BaseDatatable.Select(expression, sortstring).CopyToDataTable(filteredData, LoadOption.PreserveChanges) - Console.WriteLine("Found {0} rows.", filteredData.Rows.Count) 'Dim filteredData = BaseDatatable.Select(expression).CopyToDataTable() Return filteredData Catch ex As Exception @@ -551,27 +535,49 @@ Public Class ClassHelper Public Shared Function Insert_USER_File(pFilename As String, handleType As String) Try Dim filename_only As String = Path.GetFileName(pFilename) - CURRENT_FILE_HASH = "" + Dim CURRENT_FILE_HASH = "" If File.Exists(pFilename) Then + Dim oFileInfo As New FileInfo(pFilename) + LOGGER.Debug($"File exists: [{pFilename}] | Size: {oFileInfo.Length} bytes | Extension: {oFileInfo.Extension}") + If (pFilename.ToUpper.EndsWith(".MSG") Or pFilename.ToUpper.EndsWith(".EML")) And (handleType = "|OUTLOOK_MESSAGE|" Or handleType = "|MSGONLY|") Then CURRENT_FILE_HASH = FILESYSTEM.GetChecksumFromString(pFilename) + LOGGER.Debug($"Hash method: GetChecksumFromString | Hash: [{CURRENT_FILE_HASH}]") Else CURRENT_FILE_HASH = FILESYSTEM.GetChecksum(pFilename) + LOGGER.Debug($"Hash method: GetChecksum | Hash: [{CURRENT_FILE_HASH}]") End If + Else + LOGGER.Warn($"File does not exist: [{pFilename}] - Cannot compute hash.") End If - Dim oSQL = $"SELECT ADDED_WHO, FORMAT(ADDED_WHEN, 'dd-MM-yyyy HH:mm') AS ADDED_WHEN_STRING FROM TBPMO_DOCRESULT_LIST WHERE FILE_HASH = '{CURRENT_FILE_HASH}' ORDER BY ADDED_WHEN DESC" + Dim oSQL = $"SELECT Filename, ADDED_WHO, FORMAT(ADDED_WHEN, 'dd-MM-yyyy HH:mm') AS ADDED_WHEN_STRING FROM TBPMO_DOCRESULT_LIST WHERE FILE_HASH = '{CURRENT_FILE_HASH}' ORDER BY ADDED_WHEN DESC" LOGGER.Debug($"Inserting File - hash is [{CURRENT_FILE_HASH}]") Dim oDTCHECK As DataTable = MYDB_ECM.GetDatatable(oSQL) If Not IsNothing(oDTCHECK) Then If oDTCHECK.Rows.Count >= 1 Then LOGGER.Info($"We got a file with the same hash [{CURRENT_FILE_HASH}]") - Dim oUSER = oDTCHECK.Rows(0).Item(0) - Dim oADDED_WHEN = oDTCHECK.Rows(0).Item(1) - Dim oMSG = $"Achtung:" & vbNewLine & "Die Datei wurde bereits nach orgFLOW importiert. Anzahl: " & oDTCHECK.Rows.Count.ToString & vbNewLine & - $"Importiert wann: {oADDED_WHEN}" & vbNewLine & - $"Importiert wer: {oUSER}" & vbNewLine & - "Wollen Sie die Datei dennoch importieren?" + Dim oFilename = oDTCHECK.Rows(0).Item(0) + Dim oUSER = oDTCHECK.Rows(0).Item(1) + Dim oADDED_WHEN = oDTCHECK.Rows(0).Item(2) + Dim oMSG As String + If USER_LANGUAGE <> "de-DE" Then + oMSG = $"This file has already been imported into orgFLOW!" & vbCrLf & + $"File: [{oFilename}]" & vbCrLf & + $"Imported on: {oADDED_WHEN}" & vbCrLf & + $"Imported by: {oUSER}" & vbCrLf & + $"Total imports with identical content: {oDTCHECK.Rows.Count}" & vbCrLf & vbCrLf & + "Do you want to import this file again?" & vbCrLf & + "NO → Teh complete Import will be cancelled." + Else + oMSG = $"Diese Datei wurde bereits in orgFLOW importiert!" & vbCrLf & + $"Datei: [{oFilename}]" & vbCrLf & + $"Importiert am: {oADDED_WHEN}" & vbCrLf & + $"Importiert von: {oUSER}" & vbCrLf & + $"Anzahl Importe mit identischem Inhalt: {oDTCHECK.Rows.Count}" & vbCrLf & vbCrLf & + "Möchten Sie die Datei dennoch erneut importieren?" & vbCrLf & + "NEIN → Der gesamte Import (alle folgenden) wird abgebrochen." + End If Dim result As MsgBoxResult result = MessageBox.Show(oMSG, CAPTION_CONFIRMATION, MessageBoxButtons.YesNo, MessageBoxIcon.Question) If result = MsgBoxResult.No Then @@ -580,7 +586,7 @@ Public Class ClassHelper End If End If - Dim ins As String = String.Format("INSERT INTO TBPMO_FILES_USER (FILENAME2WORK, USER_WORK,HANDLE_TYPE,FILENAME_ONLY) VALUES ('{0}','{1}','{2}','{3}')", pFilename, USER_USERNAME, handleType, filename_only) + Dim ins As String = String.Format("INSERT INTO TBPMO_FILES_USER (FILENAME2WORK, USER_WORK,HANDLE_TYPE,FILENAME_ONLY,FILE_HASH) VALUES ('{0}','{1}','{2}','{3}','{4}')", pFilename, USER_USERNAME, handleType, filename_only, CURRENT_FILE_HASH) Return MYDB_ECM.ExecuteNonQuery(ins) Catch ex As Exception MsgBox("Unexpected Error in Insert file for user (TBPMO_FILES_USER): " & ex.Message, MsgBoxStyle.Critical) diff --git a/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb b/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb index 3506cf2..aab3239 100644 --- a/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb +++ b/app/DD-Record-Organizer/Classes/ClassImport_Windream.vb @@ -96,7 +96,7 @@ Public Class ClassImport_Windream Catch ex As Exception - MsgBox("Unexpected error in Import_File ClassImport_windream: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected error in Import_File ClassImport_windream: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) Return False End Try @@ -367,9 +367,9 @@ Public Class ClassImport_Windream 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 + msg = "In der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbCrLf & "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 + msg = "In nameconvention an element was defined which could not be replaced." & vbCrLf & "Elementname: " & element.Value.ToUpper End If myLogger.Warn(msg) MsgBox(msg, MsgBoxStyle.Exclamation, "Error in Name Convention:") @@ -390,7 +390,7 @@ Public Class ClassImport_Windream oNewWM_Filename = oNewWM_Filename.Replace("\\", "\") Catch ex As Exception - myLogger.Warn(" - Error in Versioning file - Error: " & vbNewLine & ex.Message) + myLogger.Warn(" - Error in Versioning file - Error: " & vbCrLf & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Versioning file:") err = True End Try @@ -411,8 +411,8 @@ Public Class ClassImport_Windream End If Catch ex As Exception - myLogger.Warn(" - Unexpected Error in FileName-Creating: " & vbNewLine & ex.Message) - MsgBox(" - Unexpected Error in FileName-Creating: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + myLogger.Warn(" - Unexpected Error in FileName-Creating: " & vbCrLf & ex.Message) + MsgBox(" - Unexpected Error in FileName-Creating: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) Return False End Try @@ -495,8 +495,8 @@ Public Class ClassImport_Windream 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) + LOGGER.Warn(" - Unexpected Error in GET_CTRLData: " & vbCrLf & ex.Message) + MsgBox("Unexpected Error in GET_CTRLData: " & vbCrLf & ex.Message, MsgBoxStyle.Critical) Return "" End Try End Function @@ -714,8 +714,8 @@ Public Class ClassImport_Windream Case Else - LOGGER.Warn(" -Undefined pattern found in folderconvention" & vbNewLine & "Elementname: " & element.Value.ToUpper) - MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:") + LOGGER.Warn(" -Undefined pattern found in folderconvention" & vbCrLf & "Elementname: " & element.Value.ToUpper) + MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbCrLf & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:") End Select LOGGER.Debug($"FolderConvention so far is: '{FolderConvention}'") Next @@ -723,7 +723,7 @@ Public Class ClassImport_Windream Return True Catch ex As Exception - MsgBox("Unexpected Error in CreateFolderforIndex-Method:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected Error in CreateFolderforIndex-Method:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) LOGGER.Warn("Fehler in CrFolderForIndex: " & ex.Message, True) Return False End Try @@ -752,7 +752,7 @@ Public Class ClassImport_Windream CURRENT_NEWFILENAME = _NewFileString & extension Return True Catch ex As Exception - LOGGER.Warn(" - Error in versioning file - error: " & vbNewLine & ex.Message) + LOGGER.Warn(" - Error in versioning file - error: " & vbCrLf & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in versioning file:") Return False End Try diff --git a/app/DD-Record-Organizer/Classes/ClassInit.vb b/app/DD-Record-Organizer/Classes/ClassInit.vb index ccedc63..98051b6 100644 --- a/app/DD-Record-Organizer/Classes/ClassInit.vb +++ b/app/DD-Record-Organizer/Classes/ClassInit.vb @@ -513,22 +513,6 @@ Public Class ClassInit oFNSQL = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND MODULE= 'Record-Organizer'" MYDB_ECM.ExecuteNonQuery(oFNSQL) Return False - Else - Try - 'Die FolderWatch starten - Dim sql1 = "SELECT FOLDER_PATH FROM TBPMO_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & USER_GUID - Dim folderwatch_SCAN = MYDB_ECM.GetScalarValue(sql1) - - If Not folderwatch_SCAN Is Nothing Then - CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN - If FWSCAN_started = True Then - ClassFolderWatcher.StartStop_FolderWatchSCAN() - End If - End If - Catch ex As Exception - LOGGER.Warn("Unexpected Error in Init_Folderwatch: " & ex.Message, True) - Return False - End Try End If 'If LICENSE_PROXY = True And clsDatabase.DB_PROXY_INITIALIZED Then @@ -536,6 +520,7 @@ Public Class ClassInit 'End If Dim oSQL = $"SELECT COUNT(GU.GUID) FROM TBDD_GROUPS_USER GU INNER JOIN TBDD_GROUPS G ON GU.GROUP_ID = G.GUID WHERE G.NAME = 'ORGFLOW-Supervisor' AND GU.USER_ID = {USER_GUID}" USER_IS_SUPERVISOR = MYDB_ECM.GetScalarValue(oSQL) + ClassHelper.DELETE_PMO_FILE_USER_OPEN_FILES() Return True Catch ex As Exception LOGGER.Error(ex) diff --git a/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb b/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb index 8d15193..e508113 100644 --- a/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb +++ b/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb @@ -91,7 +91,7 @@ Public Class ClassNodeNavigation ' ParentNode.Nodes.Add(NEW_NODE) ' Next ' 'End Function - Public Shared Sub Check_NODE_CONFIG_ID(ENTITY_ID As Integer, myTreeNode As TreeNode) + Public Shared Sub Check_NODE_CONFIG_ID(ENTITY_ID As Integer, myTreeNode As TreeNode, pDatatable As DataTable) Try If myTreeNode Is Nothing Then Exit Sub @@ -108,9 +108,9 @@ Public Class ClassNodeNavigation Else LOGGER.Debug($"Attention no NODE-TYPE in staticListItems(0) [{staticListItems(0).ToString}]") End If - If NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 And IsNumeric(NODE_ID) Then + If pDatatable.Rows.Count > 0 And IsNumeric(NODE_ID) Then 'Prüfen ob es für dieses Level einen konfigurierbaren Knoten gibt - Dim oTable As DataTable = NODE_CONFIGURABLE_NODES_DT + Dim oTable As DataTable = pDatatable ' Get rows with PARENT_ID = NODE_ID Dim result() As DataRow = oTable.Select("PARENT_NODE = " & NODE_CONFIG_ID) Dim count As Integer @@ -169,7 +169,7 @@ Public Class ClassNodeNavigation Return TagString End Try End Function - Public Shared Function CreateTreeViewNodes(DT_TREEVIEW_NODES As DataTable, TREEVIEW_IMAGELIST As ImageList) + Public Shared Function CreateTreeViewNodes(DT_TREEVIEW_NODES As DataTable, TREEVIEW_IMAGELIST As ImageList, pDT_CONFIGURABLE_NODES As DataTable) Try LOGGER.Debug($"NODES: DT_TREEVIEW_NODES-Count: {DT_TREEVIEW_NODES.Rows.Count}") Dim sw As New SW("CreateTreeViewNodes") @@ -184,7 +184,7 @@ Public Class ClassNodeNavigation For i = 0 To MAIN_NODES.GetUpperBound(0) If ENTITY_ID <> MAIN_NODES(i)("ENTITY_ID") Then ENTITY_ID = MAIN_NODES(i)("ENTITY_ID") - ClassNodeNavigation.Check_NODE_CONFIG_ID(MAIN_NODES(i)("ENTITY_ID"), Nothing) + ClassNodeNavigation.Check_NODE_CONFIG_ID(MAIN_NODES(i)("ENTITY_ID"), Nothing, pDT_CONFIGURABLE_NODES) End If Dim NODE_Tag = CreateNODE_TAG(MAIN_NODES(i)("ENTITY_ID"), MAIN_NODES(i)("GUID"), MAIN_NODES(i)("RECORD_ID"), MAIN_NODES(i)("NODE_CONFIG_ID")) @@ -222,7 +222,7 @@ Public Class ClassNodeNavigation End Try - MAIN_NODE = CheckSubNodes(DT_TREEVIEW_NODES, MAIN_NODES(i)("GUID"), TREEVIEW_IMAGELIST, MAIN_NODE, MAIN_NODES(i)("EXPAND_NODE")) + MAIN_NODE = CheckSubNodes(DT_TREEVIEW_NODES, MAIN_NODES(i)("GUID"), TREEVIEW_IMAGELIST, MAIN_NODE, MAIN_NODES(i)("EXPAND_NODE"), pDT_CONFIGURABLE_NODES) 'Add the node mytrv.Nodes.Add(MAIN_NODE) @@ -235,7 +235,7 @@ Public Class ClassNodeNavigation Return Nothing End Try End Function - Private Shared Function CheckSubNodes(DT_TREEVIEW_NODES As DataTable, PARENT_GUID As Integer, TREEVIEW_IMAGELIST As ImageList, MY_NODE As TreeNode, EXPAND As Boolean) + Private Shared Function CheckSubNodes(DT_TREEVIEW_NODES As DataTable, PARENT_GUID As Integer, TREEVIEW_IMAGELIST As ImageList, MY_NODE As TreeNode, EXPAND As Boolean, pDT_CONFIGURABLE_NODES As DataTable) Dim ENTITY_ID As Integer Dim expression As String expression = "PARENT_GUID = " & PARENT_GUID.ToString @@ -246,7 +246,7 @@ Public Class ClassNodeNavigation For i = 0 To SUB_NODE_ROW.GetUpperBound(0) If ENTITY_ID <> SUB_NODE_ROW(i)("ENTITY_ID") Then ENTITY_ID = SUB_NODE_ROW(i)("ENTITY_ID") - ClassNodeNavigation.Check_NODE_CONFIG_ID(SUB_NODE_ROW(i)("ENTITY_ID"), MY_NODE) + ClassNodeNavigation.Check_NODE_CONFIG_ID(SUB_NODE_ROW(i)("ENTITY_ID"), MY_NODE, pDT_CONFIGURABLE_NODES) End If Dim NODE_Tag = CreateNODE_TAG(SUB_NODE_ROW(i)("ENTITY_ID"), SUB_NODE_ROW(i)("GUID"), SUB_NODE_ROW(i)("RECORD_ID"), SUB_NODE_ROW(i)("NODE_CONFIG_ID")) If SUB_NODE_ROW(i)("NODE_CAPTION").ToString.Contains("Neuer") Then @@ -290,7 +290,7 @@ Public Class ClassNodeNavigation Catch ex As Exception LOGGER.Warn("Unexpected Error in Formatting NodeColor (Subnodes): " & ex.Message) End Try - CheckSubNodes(DT_TREEVIEW_NODES, SUB_NODE_ROW(i)("GUID"), TREEVIEW_IMAGELIST, SUB_NODE, SUB_NODE_ROW(i)("EXPAND_NODE")) + CheckSubNodes(DT_TREEVIEW_NODES, SUB_NODE_ROW(i)("GUID"), TREEVIEW_IMAGELIST, SUB_NODE, SUB_NODE_ROW(i)("EXPAND_NODE"), pDT_CONFIGURABLE_NODES) 'Add the node MY_NODE.Nodes.Add(SUB_NODE) 'If EXPAND = True Then diff --git a/app/DD-Record-Organizer/Classes/NodeNavigation/ClassAsyncNodeBuild.vb b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassAsyncNodeBuild.vb index 51b5a5d..d0f265e 100644 --- a/app/DD-Record-Organizer/Classes/NodeNavigation/ClassAsyncNodeBuild.vb +++ b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassAsyncNodeBuild.vb @@ -1,19 +1,21 @@ Imports System.ComponentModel Public Class ClassAsyncNodeBuild Private DTNODES As DataTable + Private DT_CONFIGURABLE_NODES As DataTable Private ImgList As ImageList Public WithEvents bw As BackgroundWorker Public newTreeview As TreeView - Public Sub New(DT_TREEVIEW_NODES As DataTable, TREEVIEW_IMAGELIST As ImageList) + Public Sub New(DT_TREEVIEW_NODES As DataTable, TREEVIEW_IMAGELIST As ImageList, pDT_CONFIGURABLE_NODES As DataTable) Me.bw = New BackgroundWorker() bw.WorkerReportsProgress = False bw.WorkerSupportsCancellation = False Me.DTNODES = DT_TREEVIEW_NODES Me.ImgList = TREEVIEW_IMAGELIST + DT_CONFIGURABLE_NODES = pDT_CONFIGURABLE_NODES End Sub Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bw.DoWork - Me.newTreeview = ClassNodeNavigation.CreateTreeViewNodes(DTNODES, ImgList) + Me.newTreeview = ClassNodeNavigation.CreateTreeViewNodes(DTNODES, ImgList, DT_CONFIGURABLE_NODES) End Sub End Class diff --git a/app/DD-Record-Organizer/ModuleRuntimeVariables.vb b/app/DD-Record-Organizer/ModuleRuntimeVariables.vb index ebb4856..da34017 100644 --- a/app/DD-Record-Organizer/ModuleRuntimeVariables.vb +++ b/app/DD-Record-Organizer/ModuleRuntimeVariables.vb @@ -62,7 +62,6 @@ Module ModuleRuntimeVariables Public CURRENT_CONSTRUCTOR_DETAIL_ID As Integer Public CURRENT_FILEID As Integer Public CURRENT_FILENAME As String - Public CURRENT_FILE_HASH As String = "" Public CURRENT_OFFICE_FILE_CHANGED As Boolean = False Public CURRENT_NEWFILENAME As String Public CURRENT_CONTROL_DOCTYPE_MATCH As String = "" @@ -116,6 +115,7 @@ Module ModuleRuntimeVariables Public CURRENT_TBPMO_FORM_VIEW As DataTable Public CURRENT_TBPMO_DOCRESULT_DROPDOWN_ITEMS As DataTable Public CURRENT_TBFILE_EXTENSION_OVERRIDE As DataTable + Public CURRENT_DOC_RESULTS As DataTable Public CURRENT_TBPMO_RIGHT_USER As DataTable @@ -129,8 +129,7 @@ Module ModuleRuntimeVariables Public CURRENT_TBPMO_INDEX_MAN As DataTable Public CURRENT_DT_TBPMO_ENTITY_RIGHT_CONTROLS As DataTable Public CURRENT_DT_DOC_ENTITY_SEARCH As DataTable - Public NODE_CONFIGURABLE_NODES_DT As DataTable - Public CURRENT_DOC_RESULTS As DataTable + Public CURRENT_DOC_DROPDOWN As DataTable Public CURRENT_PARENT_DT As DataTable diff --git a/app/DD-Record-Organizer/My Project/AssemblyInfo.vb b/app/DD-Record-Organizer/My Project/AssemblyInfo.vb index 7e993fd..7d86f9d 100644 --- a/app/DD-Record-Organizer/My Project/AssemblyInfo.vb +++ b/app/DD-Record-Organizer/My Project/AssemblyInfo.vb @@ -14,7 +14,7 @@ Imports System.Runtime.InteropServices - + @@ -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/OrgFlow.vbproj b/app/DD-Record-Organizer/OrgFlow.vbproj index ab10c5c..966a933 100644 --- a/app/DD-Record-Organizer/OrgFlow.vbproj +++ b/app/DD-Record-Organizer/OrgFlow.vbproj @@ -401,7 +401,6 @@ Component - @@ -767,12 +766,6 @@ Form - - frmScanFiles.vb - - - Form - frmSplash.vb @@ -1211,12 +1204,6 @@ frmRecord_Changes.vb Designer - - frmScanFiles.vb - - - frmScanFiles.vb - frmSplash.vb diff --git a/app/DD-Record-Organizer/frmConfig_Basic.Designer.vb b/app/DD-Record-Organizer/frmConfig_Basic.Designer.vb index 4451208..0972a3a 100644 --- a/app/DD-Record-Organizer/frmConfig_Basic.Designer.vb +++ b/app/DD-Record-Organizer/frmConfig_Basic.Designer.vb @@ -22,7 +22,6 @@ Partial Class frmConfig_Basic 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. Private Sub InitializeComponent() - Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmConfig_Basic)) Me.TabControl1 = New System.Windows.Forms.TabControl() Me.TabPage1 = New System.Windows.Forms.TabPage() @@ -39,6 +38,7 @@ Partial Class frmConfig_Basic Me.txtPasswort = New System.Windows.Forms.TextBox() Me.BtnConnect = New System.Windows.Forms.Button() Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.CheckBox_ForceTemporaryMode = New System.Windows.Forms.CheckBox() Me.GroupBox5 = New System.Windows.Forms.GroupBox() Me.Label11 = New System.Windows.Forms.Label() Me.Label10 = New System.Windows.Forms.Label() @@ -58,15 +58,6 @@ Partial Class frmConfig_Basic Me.Button1 = New System.Windows.Forms.Button() Me.btnApplicationFolder = New System.Windows.Forms.Button() Me.LinkLabel1 = New System.Windows.Forms.LinkLabel() - Me.TabPage3 = New System.Windows.Forms.TabPage() - Me.chkSubfolder = New System.Windows.Forms.CheckBox() - Me.Label9 = New System.Windows.Forms.Label() - Me.DataGridView1 = New System.Windows.Forms.DataGridView() - Me.btnSaveExclusionFiles = New System.Windows.Forms.Button() - Me.Button2 = New System.Windows.Forms.Button() - Me.txtScanFolderWatch = New System.Windows.Forms.TextBox() - Me.Label8 = New System.Windows.Forms.Label() - Me.btnstartstop2 = New System.Windows.Forms.Button() Me.TabPage4 = New System.Windows.Forms.TabPage() Me.Label6 = New System.Windows.Forms.Label() Me.Button4 = New System.Windows.Forms.Button() @@ -79,7 +70,6 @@ Partial Class frmConfig_Basic Me.btncheckWDFolderexists = New System.Windows.Forms.Button() Me.txtwdFolder = New System.Windows.Forms.TextBox() Me.Label12 = New System.Windows.Forms.Label() - Me.CheckBox_ForceTemporaryMode = New System.Windows.Forms.CheckBox() Me.TabControl1.SuspendLayout() Me.TabPage1.SuspendLayout() Me.TabPage2.SuspendLayout() @@ -87,8 +77,6 @@ Partial Class frmConfig_Basic Me.GroupBox1.SuspendLayout() Me.GroupBox4.SuspendLayout() Me.GroupBox3.SuspendLayout() - Me.TabPage3.SuspendLayout() - CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() Me.TabPage4.SuspendLayout() Me.GroupBox2.SuspendLayout() Me.SuspendLayout() @@ -97,7 +85,6 @@ Partial Class frmConfig_Basic ' Me.TabControl1.Controls.Add(Me.TabPage1) Me.TabControl1.Controls.Add(Me.TabPage2) - Me.TabControl1.Controls.Add(Me.TabPage3) Me.TabControl1.Controls.Add(Me.TabPage4) resources.ApplyResources(Me.TabControl1, "TabControl1") Me.TabControl1.Name = "TabControl1" @@ -206,6 +193,12 @@ Partial Class frmConfig_Basic Me.TabPage2.Name = "TabPage2" Me.TabPage2.UseVisualStyleBackColor = True ' + 'CheckBox_ForceTemporaryMode + ' + resources.ApplyResources(Me.CheckBox_ForceTemporaryMode, "CheckBox_ForceTemporaryMode") + Me.CheckBox_ForceTemporaryMode.Name = "CheckBox_ForceTemporaryMode" + Me.CheckBox_ForceTemporaryMode.UseVisualStyleBackColor = True + ' 'GroupBox5 ' Me.GroupBox5.Controls.Add(Me.Label11) @@ -337,69 +330,6 @@ Partial Class frmConfig_Basic Me.LinkLabel1.Name = "LinkLabel1" Me.LinkLabel1.TabStop = True ' - 'TabPage3 - ' - Me.TabPage3.Controls.Add(Me.chkSubfolder) - Me.TabPage3.Controls.Add(Me.Label9) - Me.TabPage3.Controls.Add(Me.DataGridView1) - Me.TabPage3.Controls.Add(Me.btnSaveExclusionFiles) - Me.TabPage3.Controls.Add(Me.Button2) - Me.TabPage3.Controls.Add(Me.txtScanFolderWatch) - Me.TabPage3.Controls.Add(Me.Label8) - Me.TabPage3.Controls.Add(Me.btnstartstop2) - resources.ApplyResources(Me.TabPage3, "TabPage3") - Me.TabPage3.Name = "TabPage3" - Me.TabPage3.UseVisualStyleBackColor = True - ' - 'chkSubfolder - ' - resources.ApplyResources(Me.chkSubfolder, "chkSubfolder") - Me.chkSubfolder.Name = "chkSubfolder" - Me.chkSubfolder.UseVisualStyleBackColor = True - ' - 'Label9 - ' - resources.ApplyResources(Me.Label9, "Label9") - Me.Label9.Name = "Label9" - ' - 'DataGridView1 - ' - DataGridViewCellStyle2.BackColor = System.Drawing.Color.Aqua - Me.DataGridView1.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2 - resources.ApplyResources(Me.DataGridView1, "DataGridView1") - Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - Me.DataGridView1.Name = "DataGridView1" - ' - 'btnSaveExclusionFiles - ' - resources.ApplyResources(Me.btnSaveExclusionFiles, "btnSaveExclusionFiles") - Me.btnSaveExclusionFiles.Name = "btnSaveExclusionFiles" - Me.btnSaveExclusionFiles.UseVisualStyleBackColor = True - ' - 'Button2 - ' - resources.ApplyResources(Me.Button2, "Button2") - Me.Button2.Name = "Button2" - Me.Button2.UseVisualStyleBackColor = True - ' - 'txtScanFolderWatch - ' - Me.txtScanFolderWatch.BackColor = System.Drawing.Color.LemonChiffon - resources.ApplyResources(Me.txtScanFolderWatch, "txtScanFolderWatch") - Me.txtScanFolderWatch.Name = "txtScanFolderWatch" - ' - 'Label8 - ' - resources.ApplyResources(Me.Label8, "Label8") - Me.Label8.Name = "Label8" - ' - 'btnstartstop2 - ' - Me.btnstartstop2.Image = Global.DD_Record_Organizer.My.Resources.Resources.bell_go - resources.ApplyResources(Me.btnstartstop2, "btnstartstop2") - Me.btnstartstop2.Name = "btnstartstop2" - Me.btnstartstop2.UseVisualStyleBackColor = True - ' 'TabPage4 ' Me.TabPage4.Controls.Add(Me.Label6) @@ -480,12 +410,6 @@ Partial Class frmConfig_Basic resources.ApplyResources(Me.Label12, "Label12") Me.Label12.Name = "Label12" ' - 'CheckBox_ForceTemporaryMode - ' - resources.ApplyResources(Me.CheckBox_ForceTemporaryMode, "CheckBox_ForceTemporaryMode") - Me.CheckBox_ForceTemporaryMode.Name = "CheckBox_ForceTemporaryMode" - Me.CheckBox_ForceTemporaryMode.UseVisualStyleBackColor = True - ' 'frmConfig_Basic ' resources.ApplyResources(Me, "$this") @@ -505,9 +429,6 @@ Partial Class frmConfig_Basic Me.GroupBox4.ResumeLayout(False) Me.GroupBox3.ResumeLayout(False) Me.GroupBox3.PerformLayout() - Me.TabPage3.ResumeLayout(False) - Me.TabPage3.PerformLayout() - CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit() Me.TabPage4.ResumeLayout(False) Me.TabPage4.PerformLayout() Me.GroupBox2.ResumeLayout(False) @@ -538,14 +459,6 @@ Partial Class frmConfig_Basic Friend WithEvents CheckBox1 As System.Windows.Forms.CheckBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents cmbConstructor As System.Windows.Forms.ComboBox - Friend WithEvents TabPage3 As System.Windows.Forms.TabPage - Friend WithEvents Button2 As System.Windows.Forms.Button - Friend WithEvents txtScanFolderWatch As System.Windows.Forms.TextBox - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents btnstartstop2 As System.Windows.Forms.Button - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView - Friend WithEvents btnSaveExclusionFiles As System.Windows.Forms.Button Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox Friend WithEvents Button3 As System.Windows.Forms.Button Friend WithEvents cmbLanguage As System.Windows.Forms.ComboBox @@ -553,7 +466,6 @@ Partial Class frmConfig_Basic Friend WithEvents Label11 As System.Windows.Forms.Label Friend WithEvents Label10 As System.Windows.Forms.Label Friend WithEvents txtTask_Popup As System.Windows.Forms.TextBox - Friend WithEvents chkSubfolder As System.Windows.Forms.CheckBox Friend WithEvents TabPage4 As System.Windows.Forms.TabPage Friend WithEvents btncheckWDFolderexists As System.Windows.Forms.Button Friend WithEvents txtwdFolder As System.Windows.Forms.TextBox diff --git a/app/DD-Record-Organizer/frmConfig_Basic.resx b/app/DD-Record-Organizer/frmConfig_Basic.resx index ecb67e1..889d7b6 100644 --- a/app/DD-Record-Organizer/frmConfig_Basic.resx +++ b/app/DD-Record-Organizer/frmConfig_Basic.resx @@ -117,6 +117,27 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + + NoControl + + + + 511, 34 + + + 170, 17 + + + 47 + + + Windows-Authentifizierung + chkbxUserAut @@ -129,6 +150,24 @@ 0 + + True + + + NoControl + + + 6, 113 + + + 150, 13 + + + 46 + + + Aktueller ConnectionString: + Label5 @@ -141,6 +180,15 @@ 1 + + 9, 80 + + + 288, 21 + + + 39 + cmbDatenbank @@ -153,6 +201,24 @@ 2 + + True + + + NoControl + + + 6, 60 + + + 67, 13 + + + 44 + + + Datenbank: + Label4 @@ -165,6 +231,24 @@ 3 + + True + + + NoControl + + + 6, 12 + + + 74, 13 + + + 41 + + + Server-Name: + Label1 @@ -177,6 +261,24 @@ 4 + + True + + + NoControl + + + 300, 12 + + + 84, 13 + + + 42 + + + Benutzername: + Label2 @@ -189,6 +291,24 @@ 5 + + True + + + NoControl + + + 424, 12 + + + 56, 13 + + + 43 + + + Passwort: + Label3 @@ -201,6 +321,18 @@ 6 + + Top, Left, Right + + + 9, 129 + + + 547, 22 + + + 45 + txtActualConnection @@ -213,6 +345,15 @@ 7 + + 9, 32 + + + 288, 22 + + + 36 + txtServer @@ -225,6 +366,15 @@ 8 + + 303, 32 + + + 118, 22 + + + 37 + txtUser @@ -237,6 +387,15 @@ 9 + + 427, 32 + + + 64, 22 + + + 38 + txtPasswort @@ -249,6 +408,27 @@ 10 + + MiddleLeft + + + NoControl + + + 303, 76 + + + 253, 25 + + + 40 + + + Verbindung zur Datenbank herstellen + + + MiddleRight + BtnConnect @@ -261,18 +441,15 @@ 11 - 4, 22 - 3, 3, 3, 3 687, 259 - 0 @@ -435,6 +612,24 @@ 1 + + Segoe UI, 8.25pt + + + NoControl + + + 149, 19 + + + 134, 23 + + + 47 + + + Design jetzt wechseln + Button5 @@ -447,6 +642,39 @@ 0 + + Segoe UI, 8.25pt + + + DevExpress Style + + + DevExpress Dark Style + + + Office 2016 Colorful + + + Office 2013 + + + Office 2010 Blue + + + Seven Classic + + + Visual Studio 2013 Light + + + 9, 21 + + + 134, 21 + + + 46 + cmbDesign @@ -486,6 +714,24 @@ 2 + + Segoe UI, 8.25pt + + + NoControl + + + 149, 19 + + + 134, 23 + + + 47 + + + Sprache jetzt wechseln + Button3 @@ -498,8 +744,26 @@ 0 - - cmbLanguage + + Segoe UI, 8.25pt + + + de-DE + + + en-US + + + 9, 21 + + + 134, 21 + + + 46 + + + cmbLanguage System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -537,6 +801,25 @@ 3 + + True + + + Segoe UI, 8.25pt + + + 295, 25 + + + 127, 30 + + + 6 + + + Sichten als Child +in Hauptform laden + CheckBox2 @@ -549,6 +832,27 @@ 0 + + True + + + Segoe UI, 8.25pt + + + NoControl + + + 7, 18 + + + 216, 13 + + + 4 + + + Folgende Sicht bei Programmstart laden: + Label7 @@ -561,6 +865,18 @@ 1 + + Segoe UI, 8.25pt + + + 10, 34 + + + 213, 21 + + + 1 + cmbConstructor @@ -573,6 +889,28 @@ 2 + + True + + + Segoe UI, 8.25pt + + + NoControl + + + 461, 25 + + + 143, 30 + + + 0 + + + Kalender als Child +in Hauptform aufrufen + CheckBox1 @@ -768,1183 +1106,176 @@ 1 - - chkSubfolder - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - TabPage3 + + NoControl - - 0 + + 19, 153 - - Label9 + + 97, 13 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 9 - - TabPage3 + + Create WMFolder - - 1 + + Label6 - - DataGridView1 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + TabPage4 - - TabPage3 + + 0 - - 2 + + NoControl - - btnSaveExclusionFiles + + 466, 169 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 75, 23 - - TabPage3 + + 8 - - 3 + + Create - - Button2 + + Button4 - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPage3 + + TabPage4 - - 4 + + 1 - - txtScanFolderWatch + + 22, 171 - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 438, 22 - - TabPage3 + + 7 - - 5 + + txtCreateWMFolder - - Label8 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + TabPage4 - - TabPage3 + + 2 - - 6 + + True - - btnstartstop2 + + NoControl - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 109, 21 - - TabPage3 + + 64, 17 - + 7 - - 4, 22 + + Gruppe - - 3, 3, 3, 3 + + rbGruppe - - 687, 259 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 2 + + GroupBox2 - - Hot Folder - Scan + + 0 - - TabPage3 + + True - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 6, 21 - - TabControl1 + + 48, 17 - - 2 + + 6 - - Label6 + + User - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + rbUser - - TabPage4 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + GroupBox2 - - Button4 + + 1 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 6, 47 - - TabPage4 + + 308, 22 - - 1 + + 4 - - txtCreateWMFolder + + txtObjectExists - + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPage4 + + GroupBox2 - + 2 - - GroupBox2 + + NoControl - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 320, 45 - - TabPage4 + + 75, 23 - - 3 + + 5 - - btncheckWDFolderexists - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 4 - - - txtwdFolder - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 5 - - - Label12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 6 - - - 4, 22 - - - 3, 3, 3, 3 - - - 687, 259 - - - 3 - - - Weiteres - - - TabPage4 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabControl1 - - - 3 - - - Fill - - - 0, 0 - - - 695, 285 - - - 0 - - - TabControl1 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - NoControl - - - 511, 34 - - - 170, 17 - - - 47 - - - Windows-Authentifizierung - - - chkbxUserAut - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 0 - - - True - - - NoControl - - - 6, 113 - - - 150, 13 - - - 46 - - - Aktueller ConnectionString: - - - Label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 1 - - - 9, 80 - - - 288, 21 - - - 39 - - - cmbDatenbank - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 2 - - - True - - - NoControl - - - 6, 60 - - - 67, 13 - - - 44 - - - Datenbank: - - - Label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 3 - - - True - - - NoControl - - - 6, 12 - - - 74, 13 - - - 41 - - - Server-Name: - - - Label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 4 - - - True - - - NoControl - - - 300, 12 - - - 84, 13 - - - 42 - - - Benutzername: - - - Label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 5 - - - True - - - NoControl - - - 424, 12 - - - 56, 13 - - - 43 - - - Passwort: - - - Label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 6 - - - Top, Left, Right - - - 9, 129 - - - 547, 22 - - - 45 - - - txtActualConnection - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 7 - - - 9, 32 - - - 288, 22 - - - 36 - - - txtServer - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 8 - - - 303, 32 - - - 118, 22 - - - 37 - - - txtUser - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 9 - - - 427, 32 - - - 64, 22 - - - 38 - - - txtPasswort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 10 - - - MiddleLeft - - - NoControl - - - 303, 76 - - - 253, 25 - - - 40 - - - Verbindung zur Datenbank herstellen - - - MiddleRight - - - BtnConnect - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage1 - - - 11 - - - Segoe UI, 8.25pt - - - NoControl - - - 149, 19 - - - 134, 23 - - - 47 - - - Design jetzt wechseln - - - Button5 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox1 - - - 0 - - - Segoe UI, 8.25pt - - - DevExpress Style - - - DevExpress Dark Style - - - Office 2016 Colorful - - - Office 2013 - - - Office 2010 Blue - - - Seven Classic - - - Visual Studio 2013 Light - - - 9, 21 - - - 134, 21 - - - 46 - - - cmbDesign - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox1 - - - 1 - - - Segoe UI, 8.25pt - - - NoControl - - - 149, 19 - - - 134, 23 - - - 47 - - - Sprache jetzt wechseln - - - Button3 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox4 - - - 0 - - - Segoe UI, 8.25pt - - - de-DE - - - en-US - - - 9, 21 - - - 134, 21 - - - 46 - - - cmbLanguage - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox4 - - - 1 - - - True - - - Segoe UI, 8.25pt - - - 295, 25 - - - 127, 30 - - - 6 - - - Sichten als Child -in Hauptform laden - - - CheckBox2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox3 - - - 0 - - - True - - - Segoe UI, 8.25pt - - - NoControl - - - 7, 18 - - - 216, 13 - - - 4 - - - Folgende Sicht bei Programmstart laden: - - - Label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox3 - - - 1 - - - Segoe UI, 8.25pt - - - 10, 34 - - - 213, 21 - - - 1 - - - cmbConstructor - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox3 - - - 2 - - - True - - - Segoe UI, 8.25pt - - - NoControl - - - 461, 25 - - - 143, 30 - - - 0 - - - Kalender als Child -in Hauptform aufrufen - - - CheckBox1 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox3 - - - 3 - - - True - - - 11, 56 - - - 123, 17 - - - 18 - - - include Subfolders - - - chkSubfolder - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 0 - - - True - - - NoControl - - - 8, 86 - - - 611, 13 - - - 17 - - - Definieren Sie hier Inhalte von Dateinamen welche von der Folderwatch-Überwachung ausgenommen werden sollen: - - - Label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 1 - - - Top, Bottom, Left - - - 11, 102 - - - 192, 79 - - - 15 - - - DataGridView1 - - - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 2 - - - MiddleLeft - - - NoControl - - - 209, 102 - - - 94, 29 - - - 16 - - - Speichern - - - MiddleRight - - - btnSaveExclusionFiles - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 3 - - - NoControl - - - 616, 28 - - - 49, 22 - - - 14 - - - ... - - - Button2 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 4 - - - 11, 28 - - - 602, 22 - - - 12 - - - txtScanFolderWatch - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 5 - - - True - - - NoControl - - - 8, 12 - - - 392, 13 - - - 11 - - - Definieren Sie hier den Ordner der für Scan2Folder verwendet werden soll: - - - Label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 6 - - - MiddleLeft - - - NoControl - - - 408, 55 - - - 4, 4, 4, 4 - - - 205, 25 - - - 13 - - - Überwachung starten - - - MiddleRight - - - btnstartstop2 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage3 - - - 7 - - - True - - - NoControl - - - 19, 153 - - - 97, 13 - - - 9 - - - Create WMFolder - - - Label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 0 - - - NoControl - - - 466, 169 - - - 75, 23 - - - 8 - - - Create - - - Button4 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 1 - - - 22, 171 - - - 438, 22 - - - 7 - - - txtCreateWMFolder - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPage4 - - - 2 - - - rbGruppe - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 0 - - - rbUser - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 1 - - - txtObjectExists - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 2 + + Check Button6 @@ -1982,111 +1313,6 @@ in Hauptform aufrufen 3 - - True - - - NoControl - - - 109, 21 - - - 64, 17 - - - 7 - - - Gruppe - - - rbGruppe - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 0 - - - True - - - 6, 21 - - - 48, 17 - - - 6 - - - User - - - rbUser - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 1 - - - 6, 47 - - - 308, 22 - - - 4 - - - txtObjectExists - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 2 - - - NoControl - - - 320, 45 - - - 75, 23 - - - 5 - - - Check - - - Button6 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox2 - - - 3 - 466, 19 @@ -2159,6 +1385,57 @@ in Hauptform aufrufen 6 + + 4, 22 + + + 3, 3, 3, 3 + + + 687, 259 + + + 3 + + + Weiteres + + + TabPage4 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabControl1 + + + 2 + + + Fill + + + 0, 0 + + + 695, 285 + + + 0 + + + TabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + True diff --git a/app/DD-Record-Organizer/frmConfig_Basic.vb b/app/DD-Record-Organizer/frmConfig_Basic.vb index 58a2d4e..980fd35 100644 --- a/app/DD-Record-Organizer/frmConfig_Basic.vb +++ b/app/DD-Record-Organizer/frmConfig_Basic.vb @@ -214,140 +214,14 @@ Public Class frmConfig_Basic Case 1 cmbLanguage.SelectedIndex = cmbLanguage.FindStringExact(USER_LANGUAGE) CheckBox_ForceTemporaryMode.Checked = CONFIG.Config.Viewer_ForceTemporaryMode - Case 2 - Dim DTSCAN_folderwatch As Data.DataTable = MYDB_ECM.GetDatatable("SELECT FOLDER_PATH,SUBDIRECTORIES FROM TBPMO_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & USER_GUID) - If Not DTSCAN_folderwatch Is Nothing Then - If DTSCAN_folderwatch.Rows.Count = 1 Then - CURRENT_SCAN_FOLDERWATCH = DTSCAN_folderwatch.Rows(0).Item(0) - CURRENT_SCAN_FOLDERWATCH_SD = DTSCAN_folderwatch.Rows(0).Item(1) - End If - - End If - Me.txtScanFolderWatch.Text = CURRENT_SCAN_FOLDERWATCH - - If Not ClassFolderWatcher.FolderWatcher_SCAN Is Nothing Then - If ClassFolderWatcher.FolderWatcher_SCAN.EnableRaisingEvents = True Then - 'If USER_LANGUAGE = "de-DE" Then - btnstartstop2.Text = "Überwachung stoppen" - 'Else - ' btnstartstop2.Text = "Stop hotfolder" - 'End If - - btnstartstop2.Image = My.Resources.bell_delete - Else - ' If USER_LANGUAGE = "de-DE" Then - btnstartstop2.Text = "Überwachung starten" - 'Else - 'btnstartstop2.Text = "Stop hotfolder" - 'End If - - btnstartstop2.Image = My.Resources.bell_go - End If - Else - ' If USER_LANGUAGE = "de-DE" Then - btnstartstop2.Text = "Überwachung starten" - 'Else - ' btnstartstop2.Text = "Stop hotfolder" - 'End If - - btnstartstop2.Image = My.Resources.bell_go - End If - Me.DataGridView1.DataSource = DTEXCLUDE_FILES - End Select End Sub - Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click - Dim fbdialog As New FolderBrowserDialog - If txtScanFolderWatch.Text <> "" Then - fbdialog.SelectedPath = txtScanFolderWatch.Text - End If - If fbdialog.ShowDialog() = DialogResult.OK Then - CheckScanFolder(fbdialog.SelectedPath, chkSubfolder.Checked) - End If - End Sub - Sub CheckScanFolder(mypath As String, SUBDIRECTORIES As Boolean) - Try - If mypath <> "" Then - Try - If (Not System.IO.Directory.Exists(mypath)) Then - System.IO.Directory.CreateDirectory(mypath) - End If - Catch ex As Exception - LOGGER.Warn("Fehler beim Erstellen des Folderwatchordners: " & mypath) - LOGGER.Warn("" & ex.Message) - MsgBox("Error in creating Hotfolder: " & mypath & vbNewLine & "Please check the rights!" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - Exit Sub - End Try - End If - - Dim _SUBDIRECTORIES - If SUBDIRECTORIES = False Then - _SUBDIRECTORIES = 0 - Else - _SUBDIRECTORIES = 1 - End If - - Dim folderwatch = MYDB_ECM.GetScalarValue("SELECT GUID FROM TBPMO_FOLDERWATCH_USER WHERE USER_ID = " & USER_GUID & " AND FOLDER_TYPE = 'SCAN'") - Dim oSql As String - If folderwatch Is Nothing And mypath <> "" Then - oSql = "INSERT INTO TBPMO_FOLDERWATCH_USER (USER_ID, FOLDER_PATH, FOLDER_TYPE,SUBDIRECTORIES, ADDED_WHO) VALUES (" & USER_GUID & ",'" & mypath & "','SCAN', " & _SUBDIRECTORIES & ",'" & USER_USERNAME & "')" - Else - oSql = "UPDATE TBPMO_FOLDERWATCH_USER SET FOLDER_PATH = '" & mypath & "', SUBDIRECTORIES = " & _SUBDIRECTORIES & ", CHANGED_WHO = '" & USER_USERNAME & "' where GUID = " & folderwatch - End If - If MYDB_ECM.ExecuteNonQuery(oSql) Then - Dim DT As Data.DataTable = MYDB_ECM.GetDatatable("SELECT FOLDER_PATH, SUBDIRECTORIES FROM TBPMO_FOLDERWATCH_USER WHERE USER_ID = " & USER_GUID & " AND FOLDER_TYPE = 'SCAN'") - CURRENT_SCAN_FOLDERWATCH = DT.Rows(0).Item(0) - CURRENT_SCAN_FOLDERWATCH_SD = DT.Rows(0).Item(1) - Me.txtScanFolderWatch.Text = CURRENT_SCAN_FOLDERWATCH - Me.chkSubfolder.Checked = CURRENT_SCAN_FOLDERWATCH_SD - End If - If FWSCAN_started = True Then - ClassFolderWatcher.Restart_FolderWatchSCAN() - End If - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in CheckFolder:") - End Try - End Sub - Private Sub btnSaveExclusionFiles_Click(sender As Object, e As EventArgs) Handles btnSaveExclusionFiles.Click - Try - DTEXCLUDE_FILES.AcceptChanges() - DTEXCLUDE_FILES.WriteXml(PATH_FileExclusions) - MsgBox("Changes saved.", MsgBoxStyle.Information) - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Saving Exclusion files:") - End Try - End Sub - Private Sub btnstartstop2_Click(sender As Object, e As EventArgs) Handles btnstartstop2.Click - If CURRENT_SCAN_FOLDERWATCH <> "" Then - ClassFolderWatcher.DELETE_SCAN_File_User() - CheckScanFolder(CURRENT_SCAN_FOLDERWATCH, chkSubfolder.Checked) - CheckFWSCAN_State() - End If - End Sub - Sub CheckFWSCAN_State() - Select Case ClassFolderWatcher.StartStop_FolderWatchSCAN() - Case 1 - 'If USER_LANGUAGE = "de-DE" Then - btnstartstop2.Text = "Überwachung stoppen" - ' Else - 'btnstartstop2.Text = "Stop Hotfolder" - ' End If - btnstartstop2.Image = My.Resources.bell_delete - Case 0 - ' If USER_LANGUAGE = "de-DE" Then - btnstartstop2.Text = "Überwachung starten" - 'Else - ' btnstartstop2.Text = "Start Hotfolder" - 'End If - btnstartstop2.Image = My.Resources.bell_go - End Select - End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim result As MsgBoxResult @@ -415,13 +289,6 @@ Public Class frmConfig_Basic - Private Sub txtScanFolderWatch_TextChanged(sender As Object, e As EventArgs) Handles txtScanFolderWatch.TextChanged - CheckScanFolder(txtScanFolderWatch.Text, chkSubfolder.Checked) - End Sub - - Private Sub chkSubfolder_CheckedChanged(sender As Object, e As EventArgs) Handles chkSubfolder.CheckedChanged - CheckScanFolder(txtScanFolderWatch.Text, chkSubfolder.Checked) - End Sub Private Sub txtPasswort_TextChanged(sender As Object, e As EventArgs) Handles txtPasswort.TextChanged @@ -550,4 +417,5 @@ Public Class frmConfig_Basic CONFIG.Config.Viewer_ForceTemporaryMode = CheckBox_ForceTemporaryMode.Checked CONFIG.Save() End Sub + End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmConstructor_Main.vb b/app/DD-Record-Organizer/frmConstructor_Main.vb index 40d2a7c..0d23dbf 100644 --- a/app/DD-Record-Organizer/frmConstructor_Main.vb +++ b/app/DD-Record-Organizer/frmConstructor_Main.vb @@ -64,9 +64,9 @@ Public Class frmConstructor_Main Private DT_TREEVIEW_NODES_ALL As DataTable Private DT_TREEVIEW_NODES_FIRST As DataTable Private DT_TREEVIEW_NODES_DEVEXPRESS As DataTable - Private DT_TREEVIEW_CONFIGURATION As DataTable Private DT_CONTROLS_ENTITY As DataTable + Private DT_CONFIGURABLE_NODES As DataTable Private DT_ADDING_USERS As DataTable @@ -268,7 +268,7 @@ Public Class frmConstructor_Main Private Sub Load_Configurable_Nodes() Try Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID) - NODE_CONFIGURABLE_NODES_DT = MYDB_ECM.GetDatatable(oSql) + DT_CONFIGURABLE_NODES = MYDB_ECM.GetDatatable(oSql) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Configurable_Nodes") End Try @@ -1338,7 +1338,7 @@ Public Class frmConstructor_Main If SelectedNode IsNot Nothing Then Update_Status_Label(True, SelectedNode.Tag) - ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, SelectedNode) + ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, SelectedNode, DT_CONFIGURABLE_NODES) If SelectedNode.Tag.ToString.Contains("RECORD-ID") Then Dim Record = ClassNodeNavigation.Return_RECORD_forTag(SelectedNode.Tag) @@ -1404,7 +1404,7 @@ Public Class frmConstructor_Main 'Else Try LOGGER.Debug($"NODES: DT_TREEVIEW_NODES_ALL-Count: {DT_TREEVIEW_NODES_ALL.Rows.Count}") - Dim async As New ClassAsyncNodeBuild(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST) + Dim async As New ClassAsyncNodeBuild(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST, DT_CONFIGURABLE_NODES) async.bw.RunWorkerAsync() While async.bw.IsBusy Application.DoEvents() @@ -1418,7 +1418,7 @@ Public Class frmConstructor_Main MyTreeview = async.newTreeview Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Async NodeBuild", ex.Message & vbNewLine & "orgFLOW will try an alternative method!", ex.StackTrace) - MyTreeview = ClassNodeNavigation.CreateTreeViewNodes(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST) + MyTreeview = ClassNodeNavigation.CreateTreeViewNodes(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST, DT_CONFIGURABLE_NODES) End Try @@ -6647,7 +6647,7 @@ WHERE T2.SHORT_NAME = 'ADDI' AND T.EMAIL IS NOT NULL order by USERNAME") expression = "ENTITY_ID = " & ENTITY_ID & " AND GUID = " & CURRENT_NODE_CONFIGURABLE_ID Dim foundRowsLevel0() As DataRow ' Use the Select method to find all rows matching the filter. - foundRowsLevel0 = NODE_CONFIGURABLE_NODES_DT.Select(expression) + foundRowsLevel0 = DT_CONFIGURABLE_NODES.Select(expression) Dim i As Integer Dim RECORD_CREATE As Boolean ' For each row create a Node @@ -6700,7 +6700,7 @@ WHERE T2.SHORT_NAME = 'ADDI' AND T.EMAIL IS NOT NULL order by USERNAME") Dim NEW_GUID = ClassNodeNavigation.CreateNodeProcedure(NEWRECORD, CURRENT_NODE_CONFIGURABLE_ID, tsmINewText.Text, "CONFIG " & NEWRECORD & "-" & CURRENT_NODE_CONFIGURABLE_ID, PARENT_ID, USER_USERNAME) If NEW_GUID > 0 Then - ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, Nothing) + ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, Nothing, DT_CONFIGURABLE_NODES) NEWNODE.Tag = ClassNodeNavigation.CreateNODE_TAG(ENTITY_ID, NEW_GUID, NEWRECORD, CURRENT_NODE_CONFIGURABLE_ID) If where = "HERE" Then @@ -6952,7 +6952,6 @@ WHERE T2.SHORT_NAME = 'ADDI' AND T.EMAIL IS NOT NULL order by USERNAME") End If Next CURRENT_TBPMO_FILES_USER.AcceptChanges() - ClassFolderWatcher.Check_Scan_Files() Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "", "Unexpected Error in clearing User-Files: " & ex.Message, ex.StackTrace) Finally diff --git a/app/DD-Record-Organizer/frmMain.resx b/app/DD-Record-Organizer/frmMain.resx index f688a1a..7c99c19 100644 --- a/app/DD-Record-Organizer/frmMain.resx +++ b/app/DD-Record-Organizer/frmMain.resx @@ -121,7 +121,7 @@ 17, 17 - 17, 56 + 1483, 17 @@ -1999,10 +1999,10 @@ StatusVersion - 129, 56 + 1596, 17 - 275, 56 + 17, 54 61, 4 @@ -2014,7 +2014,7 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 432, 56 + 173, 54 True diff --git a/app/DD-Record-Organizer/frmMain.vb b/app/DD-Record-Organizer/frmMain.vb index 5055be1..74600dd 100644 --- a/app/DD-Record-Organizer/frmMain.vb +++ b/app/DD-Record-Organizer/frmMain.vb @@ -11,8 +11,6 @@ Imports Microsoft.Office.Core Public Class frmMain Dim strIPAddress As String - - Public Shared TIMER_SCAN As New System.Windows.Forms.Timer Public TIMER_INACTIVITY As ClassInactivity Public Sub OpenRibbon() @@ -23,47 +21,6 @@ Public Class frmMain ribbonMain.Minimized = True End Sub - Private Shared Sub Scan_TickHandler(sender As Object, e As EventArgs) - Try - If ClassFolderWatcher.NEW_FILES = False Then Exit Sub - ClassFolderWatcher.Check_Scan_Files() - Dim open As Boolean = False - If Not IsNothing(CURRENT_SCAN_TABLE) Then - If CURRENT_SCAN_TABLE.Rows.Count > 0 Then - For Each form In My.Application.OpenForms - If (form.name = frmScanFiles.Name) Then - 'form is loaded so can do work - 'if you need to check wether it is actually visible - If form.Visible Then - open = True - 'do work when visible - If My.Settings.User_InBoxScan_NotinFront = False Then - frmScanFiles.BringToFront() - End If - Else - - End If - End If - Next - If open = False Then - Dim frm As New frmScanFiles - frm = frmScanFiles.Instance() - frm.Show() - End If - End If - If CURRENT_SCAN_TABLE.Rows.Count = 0 And open = True Then - frmScanFiles.Close() - End If - ClassFolderWatcher.NEW_FILES = False - End If - Catch ex As Exception - MsgBox("Unexpected Error in Scan_TickHandler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - TIMER_SCAN.Enabled = False - End Try - End Sub - - - Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load ' Referenz zu frmMain speichern MAIN_FORM = Me @@ -102,7 +59,7 @@ Public Class frmMain LabelLanguage.Caption = "Language: " & USER_LANGUAGE Load_Connection_Dep_Data() - Display_ConString + Display_ConString() 'Wenn Argumente übergeben wurden, wird Formular geladen und zu record gesprungen ClassJumpRecord.ParseArgs() @@ -164,31 +121,6 @@ Public Class frmMain ' End Try 'End Sub - Public Sub RUN_TIMER() - Try - If TIMER_SCAN.Enabled = False And CURRENT_SCAN_FOLDERWATCH <> "" And FWSCAN_started = True Then - If System.IO.Directory.Exists(CURRENT_SCAN_FOLDERWATCH) = False Then - LOGGER.Warn("SCAN PATH '" & CURRENT_SCAN_FOLDERWATCH & "'not accessable!") - Exit Sub - End If - TIMER_SCAN.Interval = 30000 - TIMER_SCAN.Enabled = True - AddHandler TIMER_SCAN.Tick, AddressOf Scan_TickHandler - Else - If TIMER_SCAN.Enabled = True And CURRENT_SCAN_FOLDERWATCH <> "" And FWSCAN_started = True Then - TIMER_SCAN.Enabled = False - - itemScanInbox.Visibility = BarItemVisibility.Always - RUN_TIMER() - Else - TIMER_SCAN.Enabled = False - End If - End If - Catch ex As Exception - MsgBox("Unexpected Error in RUN_TIMER:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - End Try - - End Sub Sub Load_Connection_Dep_Data() SetBackground() If ERROR_INIT = "NONE" Then @@ -571,8 +503,6 @@ Public Class frmMain TimerTasks.Start() 'Refresh_TaskReminder() End If - - RUN_TIMER() Timer5mins.Start() If Sett_ConstructorStart <> 0 Then @@ -746,9 +676,6 @@ Public Class frmMain TimerTasks.Enabled = False TimerTasks.Stop() End If - 'Proxy_Server_Controls() - RUN_TIMER() - End Sub Private Sub BarButtonItem3_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem3.ItemClick Cursor = Cursors.WaitCursor diff --git a/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb b/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb index 0278560..f609c21 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb +++ b/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb @@ -46,12 +46,12 @@ Partial Class frmNodeNavigation Me.tsitmDMSReadOnly = New DevExpress.XtraBars.BarStaticItem() Me.bsiNotification = New DevExpress.XtraBars.BarStaticItem() Me.bsiDocIDChanged = New DevExpress.XtraBars.BarStaticItem() - Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RPGNodes = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupRecord = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupDocResult = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.SplitContainerTreeList = New DevExpress.XtraEditors.SplitContainerControl() @@ -178,7 +178,7 @@ Partial Class frmNodeNavigation Me.ribbonNodeNavigation.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.[True] Me.ribbonNodeNavigation.ShowMoreCommandsButton = DevExpress.Utils.DefaultBoolean.[False] Me.ribbonNodeNavigation.ShowToolbarCustomizeItem = False - Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1151, 158) + Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1151, 147) Me.ribbonNodeNavigation.StatusBar = Me.RibbonStatusBar1 Me.ribbonNodeNavigation.Toolbar.ShowCustomizeItem = False ' @@ -333,11 +333,6 @@ Partial Class frmNodeNavigation Me.bsiDocIDChanged.Name = "bsiDocIDChanged" Me.bsiDocIDChanged.Visibility = DevExpress.XtraBars.BarItemVisibility.OnlyInCustomizing ' - 'RepositoryItemTextEdit1 - ' - Me.RepositoryItemTextEdit1.AutoHeight = False - Me.RepositoryItemTextEdit1.Name = "RepositoryItemTextEdit1" - ' 'RibbonPage1 ' Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RPGNodes, Me.RibbonPageGroupRecord, Me.RibbonPageGroupDocResult}) @@ -379,6 +374,11 @@ Partial Class frmNodeNavigation Me.RibbonPageGroupDocResult.Name = "RibbonPageGroupDocResult" Me.RibbonPageGroupDocResult.Text = "Dateien" ' + 'RepositoryItemTextEdit1 + ' + Me.RepositoryItemTextEdit1.AutoHeight = False + Me.RepositoryItemTextEdit1.Name = "RepositoryItemTextEdit1" + ' 'RibbonStatusBar1 ' Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiInfo) @@ -389,10 +389,10 @@ Partial Class frmNodeNavigation Me.RibbonStatusBar1.ItemLinks.Add(Me.BarStaticItemLocked) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitmtInfoDoc) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiDocIDChanged) - Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 567) + Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 566) Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Ribbon = Me.ribbonNodeNavigation - Me.RibbonStatusBar1.Size = New System.Drawing.Size(1151, 22) + Me.RibbonStatusBar1.Size = New System.Drawing.Size(1151, 23) ' 'RibbonPage2 ' @@ -414,7 +414,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerTreeList.Panel2.Controls.Add(Me.SplitContainerDocumentSearch) Me.SplitContainerTreeList.Panel2.Text = "Panel2" - Me.SplitContainerTreeList.Size = New System.Drawing.Size(776, 409) + Me.SplitContainerTreeList.Size = New System.Drawing.Size(776, 419) Me.SplitContainerTreeList.SplitterPosition = 229 Me.SplitContainerTreeList.TabIndex = 2 ' @@ -456,7 +456,7 @@ Partial Class frmNodeNavigation Me.TreeListDevexpress.OptionsView.ShowVertLines = False Me.TreeListDevexpress.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark Me.TreeListDevexpress.ParentFieldName = "PARENT_GUID" - Me.TreeListDevexpress.Size = New System.Drawing.Size(229, 409) + Me.TreeListDevexpress.Size = New System.Drawing.Size(229, 419) Me.TreeListDevexpress.StateImageList = Me.ImageCollection1 Me.TreeListDevexpress.TabIndex = 1 ' @@ -480,7 +480,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerDocumentSearch.Panel2.Controls.Add(Me.GridControlDocSearch) Me.SplitContainerDocumentSearch.Panel2.Text = "Panel2" - Me.SplitContainerDocumentSearch.Size = New System.Drawing.Size(537, 409) + Me.SplitContainerDocumentSearch.Size = New System.Drawing.Size(535, 419) Me.SplitContainerDocumentSearch.SplitterPosition = 133 Me.SplitContainerDocumentSearch.TabIndex = 1 ' @@ -491,7 +491,7 @@ Partial Class frmNodeNavigation Me.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlControls.Location = New System.Drawing.Point(0, 0) Me.pnlControls.Name = "pnlControls" - Me.pnlControls.Size = New System.Drawing.Size(537, 133) + Me.pnlControls.Size = New System.Drawing.Size(535, 133) Me.pnlControls.TabIndex = 0 ' 'GridControlDocSearch @@ -505,7 +505,7 @@ Partial Class frmNodeNavigation 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(537, 266) + Me.GridControlDocSearch.Size = New System.Drawing.Size(535, 274) Me.GridControlDocSearch.TabIndex = 8 Me.GridControlDocSearch.TabStop = False Me.GridControlDocSearch.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewDoc_Search}) @@ -515,7 +515,7 @@ Partial Class frmNodeNavigation Me.cmsResultFileDetail.ImageScalingSize = New System.Drawing.Size(18, 18) Me.cmsResultFileDetail.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsmiFileProperties, Me.ToolStripSeparator5, Me.tsmiFileOpen, Me.tsmiFileFolderOpen, Me.ToolStripSeparator1, Me.tsmiFileInWorkMultiple_Lock, Me.tsmiFileInWorkMultiple_Free, Me.tsmiFileInWork, Me.ToolStripSeparator3, Me.tsmiFileLink_Add, Me.tsmiFileLinkRemove, Me.tsmiFileLink_ShowAll, Me.TsmitmJumpToFilestore, Me.LinkPerMailVersendenToolStripMenuItem, Me.ToolStripSeparator2, Me.tsmiFileRename, Me.DokumentartÄndernToolStripMenuItem, Me.tsmiFileVersion, Me.tsmiFileRightsShow, Me.ToolStripSeparator4, Me.tsmiFileDelete}) Me.cmsResultFileDetail.Name = "ContextMenuStripResultFiles" - Me.cmsResultFileDetail.Size = New System.Drawing.Size(315, 418) + Me.cmsResultFileDetail.Size = New System.Drawing.Size(315, 440) ' 'tsmiFileProperties ' @@ -731,7 +731,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerDocView.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2 Me.SplitContainerDocView.Dock = System.Windows.Forms.DockStyle.Fill - Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 158) + Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 147) Me.SplitContainerDocView.Name = "SplitContainerDocView" ' 'SplitContainerDocView.Panel1 @@ -743,7 +743,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerDocView.Panel2.Controls.Add(Me.DocumentViewer) Me.SplitContainerDocView.Panel2.Text = "Panel2" - Me.SplitContainerDocView.Size = New System.Drawing.Size(1151, 409) + Me.SplitContainerDocView.Size = New System.Drawing.Size(1151, 419) Me.SplitContainerDocView.SplitterPosition = 776 Me.SplitContainerDocView.TabIndex = 0 ' @@ -754,7 +754,7 @@ Partial Class frmNodeNavigation Me.DocumentViewer.FileLoaded = False Me.DocumentViewer.Location = New System.Drawing.Point(0, 0) Me.DocumentViewer.Name = "DocumentViewer" - Me.DocumentViewer.Size = New System.Drawing.Size(365, 409) + Me.DocumentViewer.Size = New System.Drawing.Size(363, 419) Me.DocumentViewer.TabIndex = 0 Me.DocumentViewer.Viewer_ForceTemporaryMode = False ' diff --git a/app/DD-Record-Organizer/frmNodeNavigation.vb b/app/DD-Record-Organizer/frmNodeNavigation.vb index 39e6649..b5e6aab 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.vb +++ b/app/DD-Record-Organizer/frmNodeNavigation.vb @@ -44,6 +44,8 @@ Public Class frmNodeNavigation Private Property DT_RESULTLIST_OPTIONS As DataTable Private Property DT_RESULTLIST_VARIABLE_VALUE As DataTable Private Property DT_ENTITY_DATA As DataTable + Private Property DT_CONFIGURABLE_NODES As DataTable + Private Property ENTITY_TYPE As String = "" Private Property DT_TBPMO_FORM_VIEW As DataTable Private Property DT_CONSTRUCT_VIEW As DataTable @@ -267,14 +269,14 @@ Public Class frmNodeNavigation imageInit.EndInit() End If End Try - + TreeListDevexpress.StateImageList = ImageCollection1 TreeListDevexpress.BeginUpdate() Try TreeListDevexpress.DataSource = DT_STRUCTURE_NODES TreeListDevexpress.KeyFieldName = "GUID" TreeListDevexpress.ParentFieldName = "PARENT_GUID" TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending - TreeListDevexpress.StateImageList = ImageCollection1 + Dim oVisibleColumns As New System.Collections.Generic.HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {"NODE_CAPTION"} For Each oColumn As TreeListColumn In TreeListDevexpress.Columns @@ -283,7 +285,7 @@ Public Class frmNodeNavigation Finally TreeListDevexpress.EndUpdate() End Try - + TreeListDevexpress.Refresh() ' ✅ Erzwingt sofortiges Neuzeichnen der Icons JumptoNode() Catch ex As Exception @@ -406,8 +408,8 @@ Public Class frmNodeNavigation CurrentNodeConfigId = oNodeConfigId AvailableConfigNodes.Clear() - If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then - Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}"). + If Not IsNothing(DT_CONFIGURABLE_NODES) Then + Dim oNodeConfigList = DT_CONFIGURABLE_NODES.Select($"PARENT_NODE = {oNodeConfigId}"). Cast(Of DataRow). Select(Function(row) New frmNewNode.NodeConfig() With { .Id = row.Item("GUID"), @@ -417,7 +419,7 @@ Public Class frmNodeNavigation End If NNLogger.Info($"Node changed: NodeID={oNodeConfigId}, NodeGUID={oGuid}, ConfigNodesFound={AvailableConfigNodes.Count}, " & - $"ButtonVisible={btnCreateNewNode.Visibility}, ConfigTableRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}") + $"ButtonVisible={btnCreateNewNode.Visibility}, ConfigTableRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}") ' NEUE zentrale Methode aufrufen statt direkter Manipulation @@ -465,9 +467,6 @@ Public Class frmNodeNavigation btnCreateNewNode.Enabled = False Else Record_Group_Enable(True) - - - ' btnCreateNewNode.Enabled = True End If If RIGHT_READ_ONLY_DOC = False Then @@ -508,11 +507,11 @@ Public Class frmNodeNavigation End Sub ' Neue zentrale Methode zum konsistenten Setzen des Button-Status Private Sub UpdateCreateNodeButtonState() - Try - ' *** HIER: Eingangsdiagnose *** + Try ' *** HIER: Eingangsdiagnose *** NNLogger.Debug($"UpdateCreateNodeButtonState called - Visibility={btnCreateNewNode.Visibility}, " & $"CurrentEnabled={btnCreateNewNode.Enabled}, AvailableNodes={AvailableConfigNodes.Count}, " & - $"ConfigTableExists={Not IsNothing(NODE_CONFIGURABLE_NODES_DT)}") + $"ConfigTableExists={Not IsNothing(DT_CONFIGURABLE_NODES)}, " & + $"RIGHT_RECORD_AND_FILE_READ_ONLY={RIGHT_RECORD_AND_FILE_READ_ONLY}") If btnCreateNewNode.Visibility <> DevExpress.XtraBars.BarItemVisibility.Always Then Exit Sub @@ -520,12 +519,14 @@ Public Class frmNodeNavigation ' Button aktivieren wenn: ' 1. Konfigurierbare Nodes existieren UND - ' 2. Verfügbare Config-Nodes für aktuellen Node vorhanden sind + ' 2. Verfügbare Config-Nodes für aktuellen Node vorhanden sind UND + ' 3. Benutzer hat Schreibrechte (nicht Read-Only) Dim shouldEnable As Boolean = False - If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) AndAlso - NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 AndAlso - AvailableConfigNodes.Count > 0 Then + If Not IsNothing(DT_CONFIGURABLE_NODES) AndAlso + DT_CONFIGURABLE_NODES.Rows.Count > 0 AndAlso + AvailableConfigNodes.Count > 0 AndAlso + RIGHT_RECORD_AND_FILE_READ_ONLY = False Then shouldEnable = True End If @@ -539,7 +540,7 @@ Public Class frmNodeNavigation If shouldEnable Then LOGGER.Debug($"btnCreateNewNode ENABLED (AvailableConfigNodes: {AvailableConfigNodes.Count})") Else - LOGGER.Debug($"btnCreateNewNode DISABLED (ConfigNodes: {AvailableConfigNodes.Count})") + LOGGER.Debug($"btnCreateNewNode DISABLED (ConfigNodes: {AvailableConfigNodes.Count}, ReadOnly: {RIGHT_RECORD_AND_FILE_READ_ONLY})") End If Catch ex As Exception @@ -712,13 +713,13 @@ Public Class frmNodeNavigation Try btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID) - NODE_CONFIGURABLE_NODES_DT = MYDB_ECM.GetDatatable(oSql) + DT_CONFIGURABLE_NODES = MYDB_ECM.GetDatatable(oSql) NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " & - $"FoundRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}") + $"FoundRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}") - If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then - If NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 Then + If Not IsNothing(DT_CONFIGURABLE_NODES) Then + If DT_CONFIGURABLE_NODES.Rows.Count > 0 Then btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always ' Initial-State setzen UpdateCreateNodeButtonState() @@ -745,7 +746,6 @@ Public Class frmNodeNavigation End If - Dim sw As New SW("Load_Datafor_Entity") @@ -1254,6 +1254,8 @@ Public Class frmNodeNavigation End If Else + RIGHT_RECORD_AND_FILE_READ_ONLY = False + RIGHT_READ_ONLY_DOC = False If DT_RIGHTS_GROUP.Rows.Count > 0 Or DT_RIGHTS_USER.Rows.Count > 0 Then 'DATENSATZ-RECHTE If RIGHT_ADD_R = False Then @@ -1261,22 +1263,14 @@ Public Class frmNodeNavigation End If If RIGHT_EDIT_R = False Then - ' tslblLocked.Visible = True bbtnitmRecEdit.Enabled = False bbtnitmRecSave.Enabled = False - ' tsButtonDelete.Enabled = False - ' tsmiMassChanges.Enabled = False + If RIGHT_ADD_R = False Then bbtnitmRecSave.Enabled = False End If End If - If RIGHT_DELETE_R = False Then - ' tsButtonDelete.Enabled = False - End If - 'DATEI-RECHTE - If RIGHT_READ_ONLY_DOC = True Then - ' tslblFileslocked.Visible = True - End If + End If End If sw.Done() @@ -1380,87 +1374,6 @@ Public Class frmNodeNavigation ' Mark the event as handled e.Handled = True End Sub - 'Private Sub TreeListDevexpress_DoubleClick(sender As Object, e As EventArgs) Handles TreeListDevexpress.DoubleClick - ' If TreeListDevexpress.FindFilterText <> "" Then - ' TreeListDevexpress.FindFilterText = "" - ' End If - ' MyFocusedNode = Nothing - ' Dim oMyTreeList As TreeList = sender - ' Dim oTlHI As TreeListHitInfo = oMyTreeList.CalcHitInfo(oMyTreeList.PointToClient(MousePosition)) - ' If Not IsNothing(oTlHI.Node) Then - ' MyFocusedNode = sender - ' End If - - - 'End Sub - 'Private Async Sub LoadRecord(pRecord As Integer) - ' Try - ' CURRENT_RECORD_ID = pRecord - ' CURRENT_SEARCH_TYPE = "RECORD" - ' ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID) - - ' 'Wird jetzt bei BeforeRowChange überprüft - - ' DisableEditMode() - - ' ' muss vor show selected record data kommen, - ' ' sodass die datasource für die angehakten werte existiert (checked list box) - ' CtrlBuilder.WatchRecordChanges = False - - ' ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId) - ' CtrlBuilder.WatchRecordChanges = True - ' If CURRENT_RECORD_ID > 0 Then - ' Await Show_Selected_Record_Data(CURRENT_RECORD_ID) - ' End If - - - ' ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId) - ' CONTROL_HANDLING() - - - - ' If CURRENT_RECORD_ID > 0 Then - ' If RIGHT_RECORD_AND_FILE_READ_ONLY = False And CtrlCommandUI.IsInsert = False Then - ' If DT_CONTROLS_ENTITY.Rows.Count = COUNT_RO_CONTROLS Then - ' bbtnitmRecEdit.Enabled = False - ' bbtnitmRecSave.Enabled = False - ' 'tsButtonDelete.Enabled = False - ' Else - ' ' bbtnitmEditRec.Enabled = True - ' End If - - ' End If - ' If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then - ' ' bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never - ' ' bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never - ' ' bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never - ' ' bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Never - ' Else - ' ' bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always - ' ' bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always - ' ' bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Always - ' ' bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Always - ' End If - - ' 'tsButtonAdd.Enabled = False - ' 'MsgBox(SplitContainerFORM.Collapsed) - ' 'MsgBox(SplitContainerMain.Collapsed) - ' 'MsgBox(SplitContainerTop.Collapsed) - - - - - ' End If - ' 'Liste der geänderten Control Values leeren - ' CtrlBuilder.ControlsChanged.Clear() - - - ' Catch ex As Exception - 'NNLogger.Error(ex) - ' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error:", ex.Message & vbNewLine & ex.StackTrace) - ' End Try - 'End Sub - Private Sub DateiÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiÖffnenToolStripMenuItem.Click Open_File() End Sub @@ -2381,7 +2294,7 @@ Public Class frmNodeNavigation NNLogger.Warn("Unexpected Error in Drag_Drop: " & ex.Message) MsgBox("Unexpected Error in DragDrop - Please check the log for further information!", MsgBoxStyle.Exclamation) Finally - + Cursor = Cursors.Default End Try End Function Private DROPPED_CHECKED As Boolean = False @@ -2434,6 +2347,7 @@ Public Class frmNodeNavigation Exit Sub End If End If + ClassHelper.REMOVE_OLD_DROP_FILES() ClassHelper.Create_USER_FILE_TABLE() If Not IsNothing(CURRENT_TBPMO_FILES_USER) Then If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then @@ -3556,7 +3470,7 @@ Public Class frmNodeNavigation Exit Sub End If - Dim oRow = NODE_CONFIGURABLE_NODES_DT.Select($"GUID = {oForm.Id}").First() + Dim oRow = DT_CONFIGURABLE_NODES.Select($"GUID = {oForm.Id}").First() Dim oCreateRecord = oRow.Item("CREATE_RECORD") Dim oParentNodeGuid As Integer = MyFocusedNode.Item("GUID") diff --git a/app/DD-Record-Organizer/frmScanFiles.Designer.vb b/app/DD-Record-Organizer/frmScanFiles.Designer.vb deleted file mode 100644 index 7c31e14..0000000 --- a/app/DD-Record-Organizer/frmScanFiles.Designer.vb +++ /dev/null @@ -1,454 +0,0 @@ - _ -Partial Class frmScanFiles - Inherits System.Windows.Forms.Form - - 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Wird vom Windows Form-Designer benötigt. - Private components As System.ComponentModel.IContainer - - 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. - 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. - 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmScanFiles)) - Me.ListView1 = New System.Windows.Forms.ListView() - Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) - Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components) - Me.Panel1 = New System.Windows.Forms.Panel() - Me.PdfViewer1 = New DevExpress.XtraPdfViewer.PdfViewer() - Me.StatusStrip2 = New System.Windows.Forms.StatusStrip() - Me.pdfstatuslblPageNumber = New System.Windows.Forms.ToolStripStatusLabel() - Me.ToolStripDropDownButton1 = New System.Windows.Forms.ToolStripDropDownButton() - Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() - Me.PdfFileOpenBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem() - Me.PdfFileSaveAsBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFileSaveAsBarItem() - Me.PdfFilePrintBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFilePrintBarItem() - Me.PdfPreviousPageBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfPreviousPageBarItem() - Me.PdfNextPageBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfNextPageBarItem() - Me.PdfFindTextBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFindTextBarItem() - Me.PdfZoomOutBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomOutBarItem() - Me.PdfZoomInBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomInBarItem() - Me.PdfExactZoomListBarSubItem1 = New DevExpress.XtraPdfViewer.Bars.PdfExactZoomListBarSubItem() - Me.PdfZoom10CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom10CheckItem() - Me.PdfZoom25CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom25CheckItem() - Me.PdfZoom50CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom50CheckItem() - Me.PdfZoom75CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom75CheckItem() - Me.PdfZoom100CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom100CheckItem() - Me.PdfZoom125CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom125CheckItem() - Me.PdfZoom150CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom150CheckItem() - Me.PdfZoom200CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom200CheckItem() - Me.PdfZoom400CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom400CheckItem() - Me.PdfZoom500CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom500CheckItem() - Me.PdfSetActualSizeZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetActualSizeZoomModeCheckItem() - Me.PdfSetPageLevelZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetPageLevelZoomModeCheckItem() - Me.PdfSetFitWidthZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetFitWidthZoomModeCheckItem() - Me.PdfSetFitVisibleZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetFitVisibleZoomModeCheckItem() - Me.PdfExportFormDataBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfExportFormDataBarItem() - Me.PdfImportFormDataBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfImportFormDataBarItem() - Me.PdfRibbonPage1 = New DevExpress.XtraPdfViewer.Bars.PdfRibbonPage() - Me.PdfFileRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfFileRibbonPageGroup() - Me.PdfNavigationRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfNavigationRibbonPageGroup() - Me.PdfZoomRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomRibbonPageGroup() - Me.PdfFormDataRibbonPage1 = New DevExpress.XtraPdfViewer.Bars.PdfFormDataRibbonPage() - Me.PdfFormDataBarPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfFormDataBarPageGroup() - Me.btnrefresh = New System.Windows.Forms.Button() - Me.PdfBarController1 = New DevExpress.XtraPdfViewer.Bars.PdfBarController() - Me.PdfBarController2 = New DevExpress.XtraPdfViewer.Bars.PdfBarController() - Me.btndelete = New System.Windows.Forms.Button() - Me.chkInFront = New System.Windows.Forms.CheckBox() - Me.TimerCheckScanFiles = New System.Windows.Forms.Timer(Me.components) - Me.Timer2 = New System.Windows.Forms.Timer(Me.components) - Me.Button1 = New System.Windows.Forms.Button() - Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) - Me.Panel1.SuspendLayout - Me.StatusStrip2.SuspendLayout - CType(Me.RibbonControl1,System.ComponentModel.ISupportInitialize).BeginInit - CType(Me.PdfBarController1,System.ComponentModel.ISupportInitialize).BeginInit - CType(Me.PdfBarController2,System.ComponentModel.ISupportInitialize).BeginInit - Me.SuspendLayout - ' - 'ListView1 - ' - Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader2}) - resources.ApplyResources(Me.ListView1, "ListView1") - Me.ListView1.FullRowSelect = true - Me.ListView1.GridLines = true - Me.ListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable - Me.ListView1.LargeImageList = Me.ImageList1 - Me.ListView1.MultiSelect = false - Me.ListView1.Name = "ListView1" - Me.ListView1.SmallImageList = Me.ImageList1 - Me.ListView1.UseCompatibleStateImageBehavior = false - Me.ListView1.View = System.Windows.Forms.View.Details - ' - 'ColumnHeader2 - ' - resources.ApplyResources(Me.ColumnHeader2, "ColumnHeader2") - ' - 'ImageList1 - ' - Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"),System.Windows.Forms.ImageListStreamer) - Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent - Me.ImageList1.Images.SetKeyName(0, "doc_pdf.png") - ' - 'Panel1 - ' - resources.ApplyResources(Me.Panel1, "Panel1") - Me.Panel1.Controls.Add(Me.PdfViewer1) - Me.Panel1.Controls.Add(Me.StatusStrip2) - Me.Panel1.Controls.Add(Me.RibbonControl1) - Me.Panel1.Name = "Panel1" - ' - 'PdfViewer1 - ' - resources.ApplyResources(Me.PdfViewer1, "PdfViewer1") - Me.PdfViewer1.Name = "PdfViewer1" - ' - 'StatusStrip2 - ' - Me.StatusStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.pdfstatuslblPageNumber, Me.ToolStripDropDownButton1}) - resources.ApplyResources(Me.StatusStrip2, "StatusStrip2") - Me.StatusStrip2.Name = "StatusStrip2" - ' - 'pdfstatuslblPageNumber - ' - resources.ApplyResources(Me.pdfstatuslblPageNumber, "pdfstatuslblPageNumber") - Me.pdfstatuslblPageNumber.Image = Global.DD_Record_Organizer.My.Resources.Resources.page_red - Me.pdfstatuslblPageNumber.Name = "pdfstatuslblPageNumber" - ' - 'ToolStripDropDownButton1 - ' - Me.ToolStripDropDownButton1.Image = Global.DD_Record_Organizer.My.Resources.Resources.magifier_zoom_out - resources.ApplyResources(Me.ToolStripDropDownButton1, "ToolStripDropDownButton1") - Me.ToolStripDropDownButton1.Name = "ToolStripDropDownButton1" - ' - 'RibbonControl1 - ' - Me.RibbonControl1.ExpandCollapseItem.Id = 0 - Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.PdfFileOpenBarItem1, Me.PdfFileSaveAsBarItem1, Me.PdfFilePrintBarItem1, Me.PdfPreviousPageBarItem1, Me.PdfNextPageBarItem1, Me.PdfFindTextBarItem1, Me.PdfZoomOutBarItem1, Me.PdfZoomInBarItem1, Me.PdfExactZoomListBarSubItem1, Me.PdfZoom10CheckItem1, Me.PdfZoom25CheckItem1, Me.PdfZoom50CheckItem1, Me.PdfZoom75CheckItem1, Me.PdfZoom100CheckItem1, Me.PdfZoom125CheckItem1, Me.PdfZoom150CheckItem1, Me.PdfZoom200CheckItem1, Me.PdfZoom400CheckItem1, Me.PdfZoom500CheckItem1, Me.PdfSetActualSizeZoomModeCheckItem1, Me.PdfSetPageLevelZoomModeCheckItem1, Me.PdfSetFitWidthZoomModeCheckItem1, Me.PdfSetFitVisibleZoomModeCheckItem1, Me.PdfExportFormDataBarItem1, Me.PdfImportFormDataBarItem1}) - resources.ApplyResources(Me.RibbonControl1, "RibbonControl1") - Me.RibbonControl1.MaxItemId = 26 - Me.RibbonControl1.Name = "RibbonControl1" - Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.PdfRibbonPage1, Me.PdfFormDataRibbonPage1}) - Me.RibbonControl1.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonControlStyle.Office2010 - Me.RibbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Above - ' - 'PdfFileOpenBarItem1 - ' - Me.PdfFileOpenBarItem1.Id = 1 - Me.PdfFileOpenBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O)) - Me.PdfFileOpenBarItem1.Name = "PdfFileOpenBarItem1" - ' - 'PdfFileSaveAsBarItem1 - ' - Me.PdfFileSaveAsBarItem1.Id = 2 - Me.PdfFileSaveAsBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S)) - Me.PdfFileSaveAsBarItem1.Name = "PdfFileSaveAsBarItem1" - ' - 'PdfFilePrintBarItem1 - ' - Me.PdfFilePrintBarItem1.Id = 3 - Me.PdfFilePrintBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.P)) - Me.PdfFilePrintBarItem1.Name = "PdfFilePrintBarItem1" - ' - 'PdfPreviousPageBarItem1 - ' - Me.PdfPreviousPageBarItem1.Id = 4 - Me.PdfPreviousPageBarItem1.Name = "PdfPreviousPageBarItem1" - ' - 'PdfNextPageBarItem1 - ' - Me.PdfNextPageBarItem1.Id = 5 - Me.PdfNextPageBarItem1.Name = "PdfNextPageBarItem1" - ' - 'PdfFindTextBarItem1 - ' - Me.PdfFindTextBarItem1.Id = 6 - Me.PdfFindTextBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F)) - Me.PdfFindTextBarItem1.Name = "PdfFindTextBarItem1" - ' - 'PdfZoomOutBarItem1 - ' - Me.PdfZoomOutBarItem1.Id = 7 - Me.PdfZoomOutBarItem1.Name = "PdfZoomOutBarItem1" - ' - 'PdfZoomInBarItem1 - ' - Me.PdfZoomInBarItem1.Id = 8 - Me.PdfZoomInBarItem1.Name = "PdfZoomInBarItem1" - ' - 'PdfExactZoomListBarSubItem1 - ' - Me.PdfExactZoomListBarSubItem1.Id = 9 - Me.PdfExactZoomListBarSubItem1.LinksPersistInfo.AddRange(New DevExpress.XtraBars.LinkPersistInfo() {New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom10CheckItem1, true), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom25CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom50CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom75CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom100CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom125CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom150CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom200CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom400CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom500CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetActualSizeZoomModeCheckItem1, true), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetPageLevelZoomModeCheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetFitWidthZoomModeCheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetFitVisibleZoomModeCheckItem1)}) - Me.PdfExactZoomListBarSubItem1.Name = "PdfExactZoomListBarSubItem1" - Me.PdfExactZoomListBarSubItem1.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionInMenu - ' - 'PdfZoom10CheckItem1 - ' - Me.PdfZoom10CheckItem1.Id = 10 - Me.PdfZoom10CheckItem1.Name = "PdfZoom10CheckItem1" - ' - 'PdfZoom25CheckItem1 - ' - Me.PdfZoom25CheckItem1.Id = 11 - Me.PdfZoom25CheckItem1.Name = "PdfZoom25CheckItem1" - ' - 'PdfZoom50CheckItem1 - ' - Me.PdfZoom50CheckItem1.Id = 12 - Me.PdfZoom50CheckItem1.Name = "PdfZoom50CheckItem1" - ' - 'PdfZoom75CheckItem1 - ' - Me.PdfZoom75CheckItem1.Id = 13 - Me.PdfZoom75CheckItem1.Name = "PdfZoom75CheckItem1" - ' - 'PdfZoom100CheckItem1 - ' - Me.PdfZoom100CheckItem1.Id = 14 - Me.PdfZoom100CheckItem1.Name = "PdfZoom100CheckItem1" - ' - 'PdfZoom125CheckItem1 - ' - Me.PdfZoom125CheckItem1.Id = 15 - Me.PdfZoom125CheckItem1.Name = "PdfZoom125CheckItem1" - ' - 'PdfZoom150CheckItem1 - ' - Me.PdfZoom150CheckItem1.Id = 16 - Me.PdfZoom150CheckItem1.Name = "PdfZoom150CheckItem1" - ' - 'PdfZoom200CheckItem1 - ' - Me.PdfZoom200CheckItem1.Id = 17 - Me.PdfZoom200CheckItem1.Name = "PdfZoom200CheckItem1" - ' - 'PdfZoom400CheckItem1 - ' - Me.PdfZoom400CheckItem1.Id = 18 - Me.PdfZoom400CheckItem1.Name = "PdfZoom400CheckItem1" - ' - 'PdfZoom500CheckItem1 - ' - Me.PdfZoom500CheckItem1.Id = 19 - Me.PdfZoom500CheckItem1.Name = "PdfZoom500CheckItem1" - ' - 'PdfSetActualSizeZoomModeCheckItem1 - ' - Me.PdfSetActualSizeZoomModeCheckItem1.Id = 20 - Me.PdfSetActualSizeZoomModeCheckItem1.Name = "PdfSetActualSizeZoomModeCheckItem1" - ' - 'PdfSetPageLevelZoomModeCheckItem1 - ' - Me.PdfSetPageLevelZoomModeCheckItem1.Id = 21 - Me.PdfSetPageLevelZoomModeCheckItem1.Name = "PdfSetPageLevelZoomModeCheckItem1" - ' - 'PdfSetFitWidthZoomModeCheckItem1 - ' - Me.PdfSetFitWidthZoomModeCheckItem1.Id = 22 - Me.PdfSetFitWidthZoomModeCheckItem1.Name = "PdfSetFitWidthZoomModeCheckItem1" - ' - 'PdfSetFitVisibleZoomModeCheckItem1 - ' - Me.PdfSetFitVisibleZoomModeCheckItem1.Id = 23 - Me.PdfSetFitVisibleZoomModeCheckItem1.Name = "PdfSetFitVisibleZoomModeCheckItem1" - ' - 'PdfExportFormDataBarItem1 - ' - Me.PdfExportFormDataBarItem1.Id = 24 - Me.PdfExportFormDataBarItem1.Name = "PdfExportFormDataBarItem1" - ' - 'PdfImportFormDataBarItem1 - ' - Me.PdfImportFormDataBarItem1.Id = 25 - Me.PdfImportFormDataBarItem1.Name = "PdfImportFormDataBarItem1" - ' - 'PdfRibbonPage1 - ' - Me.PdfRibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.PdfFileRibbonPageGroup1, Me.PdfNavigationRibbonPageGroup1, Me.PdfZoomRibbonPageGroup1}) - Me.PdfRibbonPage1.Name = "PdfRibbonPage1" - ' - 'PdfFileRibbonPageGroup1 - ' - Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFileOpenBarItem1) - Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFileSaveAsBarItem1) - Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFilePrintBarItem1) - Me.PdfFileRibbonPageGroup1.Name = "PdfFileRibbonPageGroup1" - ' - 'PdfNavigationRibbonPageGroup1 - ' - Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfPreviousPageBarItem1) - Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfNextPageBarItem1) - Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfFindTextBarItem1) - Me.PdfNavigationRibbonPageGroup1.Name = "PdfNavigationRibbonPageGroup1" - ' - 'PdfZoomRibbonPageGroup1 - ' - Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfZoomOutBarItem1) - Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfZoomInBarItem1) - Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfExactZoomListBarSubItem1) - Me.PdfZoomRibbonPageGroup1.Name = "PdfZoomRibbonPageGroup1" - ' - 'PdfFormDataRibbonPage1 - ' - Me.PdfFormDataRibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.PdfFormDataBarPageGroup1}) - Me.PdfFormDataRibbonPage1.Name = "PdfFormDataRibbonPage1" - Me.PdfFormDataRibbonPage1.Visible = false - ' - 'PdfFormDataBarPageGroup1 - ' - Me.PdfFormDataBarPageGroup1.ItemLinks.Add(Me.PdfExportFormDataBarItem1) - Me.PdfFormDataBarPageGroup1.ItemLinks.Add(Me.PdfImportFormDataBarItem1) - Me.PdfFormDataBarPageGroup1.Name = "PdfFormDataBarPageGroup1" - ' - 'btnrefresh - ' - Me.btnrefresh.Image = Global.DD_Record_Organizer.My.Resources.Resources.refresh_16xLG - resources.ApplyResources(Me.btnrefresh, "btnrefresh") - Me.btnrefresh.Name = "btnrefresh" - Me.btnrefresh.UseVisualStyleBackColor = true - ' - 'PdfBarController2 - ' - Me.PdfBarController2.BarItems.Add(Me.PdfFileOpenBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfFileSaveAsBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfFilePrintBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfPreviousPageBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfNextPageBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfFindTextBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoomOutBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoomInBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfExactZoomListBarSubItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom10CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom25CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom50CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom75CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom100CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom125CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom150CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom200CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom400CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfZoom500CheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfSetActualSizeZoomModeCheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfSetPageLevelZoomModeCheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfSetFitWidthZoomModeCheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfSetFitVisibleZoomModeCheckItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfExportFormDataBarItem1) - Me.PdfBarController2.BarItems.Add(Me.PdfImportFormDataBarItem1) - Me.PdfBarController2.Control = Me.PdfViewer1 - ' - 'btndelete - ' - Me.btndelete.Image = Global.DD_Record_Organizer.My.Resources.Resources.delete - resources.ApplyResources(Me.btndelete, "btndelete") - Me.btndelete.Name = "btndelete" - Me.ToolTip1.SetToolTip(Me.btndelete, resources.GetString("btndelete.ToolTip")) - Me.btndelete.UseVisualStyleBackColor = true - ' - 'chkInFront - ' - resources.ApplyResources(Me.chkInFront, "chkInFront") - Me.chkInFront.Checked = Global.DD_Record_Organizer.My.MySettings.Default.User_InBoxScan_NotinFront - Me.chkInFront.DataBindings.Add(New System.Windows.Forms.Binding("Checked", Global.DD_Record_Organizer.My.MySettings.Default, "User_InBoxScan_NotinFront", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.chkInFront.Name = "chkInFront" - Me.chkInFront.UseVisualStyleBackColor = true - ' - 'TimerCheckScanFiles - ' - Me.TimerCheckScanFiles.Interval = 5000 - ' - 'Button1 - ' - Me.Button1.Image = Global.DD_Record_Organizer.My.Resources.Resources.delete - resources.ApplyResources(Me.Button1, "Button1") - Me.Button1.Name = "Button1" - Me.ToolTip1.SetToolTip(Me.Button1, resources.GetString("Button1.ToolTip")) - Me.Button1.UseVisualStyleBackColor = true - ' - 'frmScanFiles - ' - resources.ApplyResources(Me, "$this") - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.Controls.Add(Me.Button1) - Me.Controls.Add(Me.chkInFront) - Me.Controls.Add(Me.btndelete) - Me.Controls.Add(Me.Panel1) - Me.Controls.Add(Me.btnrefresh) - Me.Controls.Add(Me.ListView1) - Me.MaximizeBox = false - Me.Name = "frmScanFiles" - Me.Panel1.ResumeLayout(false) - Me.Panel1.PerformLayout - Me.StatusStrip2.ResumeLayout(false) - Me.StatusStrip2.PerformLayout - CType(Me.RibbonControl1,System.ComponentModel.ISupportInitialize).EndInit - CType(Me.PdfBarController1,System.ComponentModel.ISupportInitialize).EndInit - CType(Me.PdfBarController2,System.ComponentModel.ISupportInitialize).EndInit - Me.ResumeLayout(false) - Me.PerformLayout - -End Sub - Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader - Friend WithEvents ImageList1 As System.Windows.Forms.ImageList - Friend WithEvents btnrefresh As System.Windows.Forms.Button - Friend WithEvents Panel1 As System.Windows.Forms.Panel - Friend WithEvents StatusStrip2 As System.Windows.Forms.StatusStrip - Friend WithEvents pdfstatuslblPageNumber As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents ToolStripDropDownButton1 As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents PdfBarController1 As DevExpress.XtraPdfViewer.Bars.PdfBarController - Friend WithEvents PdfViewer1 As DevExpress.XtraPdfViewer.PdfViewer - Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl - Friend WithEvents PdfFileOpenBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem - Friend WithEvents PdfFileSaveAsBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFileSaveAsBarItem - Friend WithEvents PdfFilePrintBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFilePrintBarItem - Friend WithEvents PdfPreviousPageBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfPreviousPageBarItem - Friend WithEvents PdfNextPageBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfNextPageBarItem - Friend WithEvents PdfFindTextBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFindTextBarItem - Friend WithEvents PdfZoomOutBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoomOutBarItem - Friend WithEvents PdfZoomInBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoomInBarItem - Friend WithEvents PdfExactZoomListBarSubItem1 As DevExpress.XtraPdfViewer.Bars.PdfExactZoomListBarSubItem - Friend WithEvents PdfZoom10CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom10CheckItem - Friend WithEvents PdfZoom25CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom25CheckItem - Friend WithEvents PdfZoom50CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom50CheckItem - Friend WithEvents PdfZoom75CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom75CheckItem - Friend WithEvents PdfZoom100CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom100CheckItem - Friend WithEvents PdfZoom125CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom125CheckItem - Friend WithEvents PdfZoom150CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom150CheckItem - Friend WithEvents PdfZoom200CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom200CheckItem - Friend WithEvents PdfZoom400CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom400CheckItem - Friend WithEvents PdfZoom500CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom500CheckItem - Friend WithEvents PdfSetActualSizeZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetActualSizeZoomModeCheckItem - Friend WithEvents PdfSetPageLevelZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetPageLevelZoomModeCheckItem - Friend WithEvents PdfSetFitWidthZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetFitWidthZoomModeCheckItem - Friend WithEvents PdfSetFitVisibleZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetFitVisibleZoomModeCheckItem - Friend WithEvents PdfExportFormDataBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfExportFormDataBarItem - Friend WithEvents PdfImportFormDataBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfImportFormDataBarItem - Friend WithEvents PdfRibbonPage1 As DevExpress.XtraPdfViewer.Bars.PdfRibbonPage - Friend WithEvents PdfFileRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfFileRibbonPageGroup - Friend WithEvents PdfNavigationRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfNavigationRibbonPageGroup - Friend WithEvents PdfZoomRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfZoomRibbonPageGroup - Friend WithEvents PdfFormDataRibbonPage1 As DevExpress.XtraPdfViewer.Bars.PdfFormDataRibbonPage - Friend WithEvents PdfFormDataBarPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfFormDataBarPageGroup - Friend WithEvents PdfBarController2 As DevExpress.XtraPdfViewer.Bars.PdfBarController - Friend WithEvents btndelete As System.Windows.Forms.Button - Friend WithEvents chkInFront As System.Windows.Forms.CheckBox - Private WithEvents ListView1 As System.Windows.Forms.ListView - Friend WithEvents TimerCheckScanFiles As System.Windows.Forms.Timer - Friend WithEvents Timer2 As System.Windows.Forms.Timer - Friend WithEvents Button1 As System.Windows.Forms.Button - Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip -End Class diff --git a/app/DD-Record-Organizer/frmScanFiles.en-US.resx b/app/DD-Record-Organizer/frmScanFiles.en-US.resx deleted file mode 100644 index d7347f5..0000000 --- a/app/DD-Record-Organizer/frmScanFiles.en-US.resx +++ /dev/null @@ -1,641 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Scanfile - Drag and drop here - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm - BwAAAk1TRnQBSQFMAwEBAAHgAQAB4AEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8DAAEHDBIBBzIAARIM/wES - MAAKIAP0AfMB/wHqMAAKIAH0A/MB/wHqMAACIAG9AW8GIATzAf8BbTAAAiABRgH0AZQBbwGUAb0CIATz - Af8BbTAAAyABFwGUAUYBvQEXAiAE8wH/AeswAAQgApQBFgMgBPMB/wHrMAAEIAFHAf8EIATzAf8B7DAA - BfkB/wT5A/MB8gH/AewwAAr5Bf8B7DAACvkB/wLyAfMB7QG8MgAB7QH/A/MD8gH/AfIB8wHtAfAzAAGS - Af8B8wXyAf8B8wGSAfA0AAGSCP8BkgHwNQAB8Aj3AfA0AAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB - AQABAQUAAYAXAAP/AQABwAcAAcBXAAHAAQEGAAHAAQMGAAHAAQcGAAHAAQ8GAAs= - - - - - 0, 140 - - - 591, 391 - - - 133, 20 - - - Pageview Minimal - - - 591, 140 - - - Refresh - - - Delete - - - 163, 17 - - - Deactivate "Always on top" - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABycnIOcHBwi4qKivKEhIT1ZGRkiG5ubhEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCQ - kF6EhITmubm5/MvLy/7Jycn/tbW1/4CAgO5ra2t4c3NzCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfn58tkJCQwqqqqv3k5OT79vb2/e7v7/3U1NT8v7+//sHB - wf+qqqr/enp65Wpqamlzc3MFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp6enDKCg - oIyioqL61tbW+/b29vz09fX/3N3e/8XDv//Z2tz/6err/c3Nzfy3t7f+uLi4/56env90dHTbdXV1WQAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7u7tSpqam4sbGxvzz8/P79/f3/uTk5P/Ewb7/5djG///w - z//r2Lf/zMS2/9TW2f/j5eb9x8fH/LCwsP6wsLD/k5OT/3V1dc9ycnJKAAAAAAAAAAAAAAAAAAAAALu7 - u6e8vLz96enp+/n5+f7r6+v/wcHD/9vX0f//+ej///DZ///szP//58D//+Oz/+fGmv/HtqX/0dPW/9/h - 4/3BwcL8qKio/qenp/+Kior+dHR0wXBwcDoAAAAAAAAAAMXFxfz39/f9+vr6/8DAwP/MzMz////////+ - 9f//9eX//+/Y///qy///57///eCz//HMnP/mtIL/0pxt/7+jj//P0tT/2dze/bi4uf2hoaH+np6f/3h4 - ePoAAAAAAAAAAMjIyEfExMSpy8vL9Nvb2//Ly8v/ysnJ/93Y0v//9uX///LZ///rzP//5b7//d+y//DJ - nP/js4P/1pxr/8qBTv+5ZzP/tYx0/9HU1f/W2dr9s7i5/YOHif8AAAAAAAAAAAAAAAAAAAAAv7+/DMXF - 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 - AP//wAH//4AD//8AB//+AA///AAf//gA///8H/////////////8oAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenp6Pm5ubrl7e3vya2tr2mhoaF5XV1cDAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioqKG35+fqaFhYX9v7+//s/Pz//Gxsb/lZWV/21t - bdNycnJRAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQBoyMjHaEhITyq6ur/uPj4/nY2Nj7xMTE/sPD - w//FxcX/vr6+/46Ojv9ubm7Id3d3QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoEaKiorXoKCg/tbW1vrx8fH68vLy/vPz - 8//t7e3809PT+729vf69vb3/v7+//7a2tv+Hh4f+bGxsu3R0dDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK+vrx6cnJysm5ub/sXFxfzv7+/58vLy/vLy - 8v/y8vL/zs/R/9PU1f/w8fL/6urq/M7Ozvy4uLj9uLi4/7u7u/+srKz/goKC/WxsbK50dHQqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWqqqp3n5+f87m5uf3m5ub69fX1/fPz - 8//09PT/1NXW/7Syrv/l1sL/4tO5/7u2rv/MztD/6+zt/+bm5vzKysr7srKy/rKysv+1tbX/pKSk/3t7 - e/xtbW2gcXFxIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCwsI+pqam07CwsP7b29v69fX1+/T0 - 9P/19fX/3Nzd/7Oxsf/c1Mf///Td///u0///68n//+rA/+rTr//At6n/yMvN/+fo6v/i4uL9xcXF/K2t - rf6srKz/rq6u/5ubm/92dnb3b29vkmpqahgAAAAAAAAAAAAAAAAAAAAAvr6+hbGxsf3Ozs778vLy+vb2 - 9v729vb/4uLi/7Kysv/T0Mz///zv///25P//79n//+zQ///px///5cD//+W2//rYp//jwJb/v62d/8XI - y//h5OX/3+Dg/MHBwfyoqKj9p6en/6qqqv+Tk5P/c3Nz829vb4RlZWUQAAAAAAAAAAC9vb378PDw+vn5 - +f319fX/6Ojo/7a2tv/Pz8/////////99///9+z///Pi///v2f//7ND//+jH///lvv//4rb/99Sm/+3E - lf/ms4L/1aF0/7yhjP/Fx8n/3ODi/9vc3P29vb38oqKi/qKiov+kpKT/jo6O/21tbdYAAAAAAAAAAMnJ - yZ3Gxsb62tra//Dw8P/Y2Nj/tLS0/8jIyP/28/P////4///57f//9OL//+/Y///sz///6Mb//+W9//3i - tP/106X/7MKU/+Kyg//aoXL/0JBe/8R/Tv+2j3f/xMLC/9ja2//Y2Nj9ubm5/J2dnf6fn5//d3d38wAA - AAAAAAAAAAAAANXV1RPHx8dlwcHBvMTExPra2tr/5ubm/8LCwv+5ubf/0s3F//3x3v//89r//+zP///p - x///5r3//eGz//TSpf/rwZP/4rGB/9igcP/Qj1//xn1K/7tkLf+vXzH/tqqk/9LS0//b3N3/0NXW/aWr - r/16fHz9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMGMPDw2q+vr7AxMTE/NfX1//c3N3/vb/A/8G8 - tf/g073//+rF///nvf//4rP/9dKi/+vAkf/ir3//2J5q/8uOX/+7k3j/wLSt/9DW2v/V29//wcnP/6qe - mP+aakv/ljoN/4AoEbkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8sbwcHBbb29 - vcXCwsL80tPT/9HS1P+/vr7/y8Cw/+rTrv/40aD/6r6P/82rjP/Bs6f/yM3T/9Xc4v/Gz9b/saeg/6R1 - T/+jTQ7/pTsA/6A5AP+MIwD9hRkATwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMvLyx68vLxyurq6yb+/v/3Nzs//yczP/8G/vf/Dxsr/09nh/8vS2/+4rab/roFT/7Fe - Df+zTwD/r00A/6xLAP+nRAD/jygA/pIeAHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEIre4uners7zNwaqV/sakgP+3j1n/vnAP/8Ji - AP++YAD/uV0A/7dYAP+zVAD/rEsA/5EqAP+VIACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBqAGnNZQD70HcA/810 - AP/JcAD/xWoA/8BlAP+8YAD/uVwA/7JTAP+ULQD/kiQAmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALxeAAPldQCO1HMC/taE - AP/SfgD/zngA/8pzAP/GbgD/wmoA/79mAP+3WwD/lTAA/4smAKdaAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/dwAM3HIAsdd9 - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHgfcnJyWG9v - b1pxcXEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg4ODKnh4 - eLFycnL7iYmJ/oODg/5paWn2bm5ujnBwcBcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiI - iBGBgYGOdnZ2+JKSkv3MzMz9zc3N/83Nzf6/v7/+i4uL/mhoaPFubm6Dd3d3EQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACRkZEEiYmJZX19feiFhYX+srKy/szMzP3IyMj/xsbG/8XFxf/ExMT/x8fH/ri4uP6FhYX+aGho7G9v - b3h5eXkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJqamjyFhYXLhISE/qWlpf7Ozs786enp9u/v7/jZ2dn5xMTE/cPDw//Dw8P/wcHB/8HB - wf/ExMT+sbGx/n9/f/5paWnlb29vbWtrawgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACdnZ0Yk5OToIiIiPybm5v+w8PD/uDg4Pfy8vL58PDw/+/v7//w8PD+7Ozs+9XV - 1frAwMD9v7+//7+/v/+9vb3/vr6+/8DAwP6rq6v+enp6/mdnZ95xcXFidHR0BQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAsLCwBZubm26QkJDtl5eX/ru7u/7a2tr48PDw9/Ly8v7w8PD/7u7u/+/v - 7//x8fH/7+/v/+7u7v7p6en809PT+r29vf27u7v/u7u7/7u7u/+6urr/vLy8/qSkpP53d3f+aWlp1nBw - cFdeXl4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKw+l5eXz5WVlf6wsLD+1NTU+uzs7Pfz8/P98fHx/+/v - 7//v7+//8/Pz/+jo6P+ztbb/w8TG/+vr7P/u7u7/7Ozs/+np6fvR0dH6urq6/Li4uP+3t7f/t7e3/7a2 - tv+4uLj+nZ2d/nNzc/5paWnNeXl5TAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7u7Gaenp6Kbm5v8qamp/srKyvzo6Oj38/Pz+/Ly - 8v/x8fH/8PDw//Ly8v/s7O3/tbW3/6OgnP/m18D/18q2/6Oinv+7vcD/5ebm/+vr6//p6en/5+fn+87O - zvu3t7f8tLS0/7S0tP+zs7P/tLS0/7S0tP6Wlpb+cHBw/m5ubsR2dnZCAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWysrJvoqKi7qWlpf/BwcH+4ODg+PPz - 8/ny8vL/8vLy//Hx8f/z8/P/8PDw/7u7vP+dnJr/3tTE///02f//79H//+zM///sxv/fzrL/q6eg/7a4 - vP/f4OH/6erq/+fn5//k5OT8zs7O+rOzs/2wsLD/sLCw/7CwsP+wsLD/sLCw/pCQkP5ubm79bm5uunZ2 - djgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsLCPaysrM+mpqb+ubm5/9nZ - 2fnw8PD49PT0/vLy8v/y8vL/8/Pz//Pz8//CwsL/mZmX/9fQxv//+eX///Pc///v1v//7M///+nJ///o - w///57///+e5/+jQrP+yqp//s7a4/9na3P/m5+f/5OTk/+Li4vzJycn6sLCw/a2trf+srKz/rKys/62t - rf+qqqr+jIyM/mxsbPxvb2+vd3d3LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL6+vg29vb2bra2t/LKy - sv/Pz8/77Ozs+PX19f3z8/P/8vLy//T09P/19fX/xsbH/5aWl//Oy8j///zw///36f//8+H///Da///u - 1P//687//+nJ///nw///5b3//+S3///gsf/61qX/5MKa/7iqm/+xtLb/09XX/+Pk5P/i4uL/4eHh/MbG - xvqurq78qamp/6mpqf+oqKj/qamp/6ampv6Ghob+ampq+29vb6RxcXEmAAAAAAAAAAAAAAAAAAAAALS0 - tJu0tLT+xsbG/ebm5vj29vb79PT0//Pz8//09PT/9vb2/83Nzf+VlZX/x8fG/////P///fX///js///0 - 5f//8uD///Da///t1P//687//+nI///nwv//5b3//+S3//vdr//106T/8MmZ/+2+jf/esYX/u6aT/7K0 - tf/O0dP/4eLi/+Hh4f/e3t79xcXF+qurq/ympqb/paWl/6Wlpf+lpaX/oaGh/oKCgv5qamr4cXFxmW9v - bxsAAAAAAAAAALe3t+zf39/59/f3+vf39/709PT/8vLy//T09P/W1tb/mZmZ/8DAwP/////////////8 - +P//+fH///br///05f//8t///+/Z///t0///687//+nI///nwv//5Lz//+K4//zesP/10qT/7seZ/+i8 - jf/jsYL/3qd2/9Scbf+7nIb/s7Kz/8rN0P/d3t7/3t7e/9zc3P3ExMT6qKio/KKiov+ioqL/oaGh/6Ki - ov+bm5v+fHx8/mtra60AAAAAAAAAALu7u67Gxsb+2dnZ/u/v7/729vb+9PT0/+jo6P+Dg4P/ra2t/+zs - 7P/////////////99///+vD///br///05f//8t///+/Z///t0///683//+nH///nwv//5Lz//uK2//rc - rv/00aP/7saY/+i7jf/isYH/26Z2/9aba//QkF7/yoRT/7qQdP+1r63/yM3Q/9nb2//b29z/2tra/cLC - wvujo6P8nZ2d/56env+enp7/lJSU/mtra8EAAAAAAAAAAM/PzwTJyclTxsbGp7m5ufHDw8P+2NjY/u3t - 7f76+vr+29vb/6urq/+Xl5f/wMC///Pv6/////f///nt///15f//8d7//+/Y///t0///683//+nH///m - wf//5Lv//uK3//vbrf/00KL/7saX/+e7jP/hsIH/26V2/9Waav/Pj1//yIRU/8N4Rv+7azf/tH1d/7Wp - o//Gycv/1dbW/9nZ2f/Y2Nj9v7+/+6GhofycnJz/lZWV/29vb9EAAAAAAAAAAAAAAAAAAAAAAAAAANvb - 2wzIyMhVxcXFqre3t/LAwMD+2NjY/u/v7/7z8/T+0NDQ/6Wmpv+hoJ7/z8vC//zw4v//9uP///La///u - 0///68z//+jH///mwf//5Lv//uK1//ncrP/z0KH/7cWW/+e6i//hr4D/26R1/9SZav/Oj1//yINT/8F4 - R/+7azf/tFoj/65fMv+zopn/vr+//9bW1v/W1tb/2NjZ/9PV1v2vs7X7lpqb/nR2duAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3AzExMRYwcHBrbW1tfTAwMD+1dXV/uzs7P7s7Oz+x8jI/6Ok - pf+uqqX/29HA///u0///7s///+rH///nwP//5Lv//uO2//narf/zz6H/7cSV/+e5iv/grn//2qN0/9SZ - af/PjVz/yIBN/799T/+3kHb/uK+s/8XLzv/S1NX/2dnZ/9PU1v/EyMv/rbS3/5uRjf+XZUv/iCsO/3hk - XZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0A7Dw8NawMDAsbOz - s/a+vr7+09PT/unp6f7k5OX+wcLD/6Slpf+6sqn/5dW7///qwv//57v//+K1//rZq//yzqD/7MOV/+e4 - iv/hrn3/3aNw/9KXav/Am37/tqqg/7/EyP/Q09X/29zd/9bY2f/IzM7/sLa8/5+Vj/+aakz/nkUP/580 - AP+bMwD+hh4A/n8XADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAANfX1w/ExMRbvr6+s7Gxsfe8vLz+0dHR/ubm5v7c3d7+vL2//6mnp//HvKn/79ew//7c - qv/1z5//8MSU/+e3iP/NrIz/tqmd/7m7v//LztH/3N3e/9ja3P/JzdH/tLm//6KYkv+gcU3/plEP/6k/ - AP+lQAD/oz8A/585AP6MJwD+gRsAxIgAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM7OzhG+vr5fvLy8tbCwsPm7u7v+zs7O/uLi - 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 - Z//4qz3/9JkZ/+6HAP/nfQD/3XUA/9VuAP7MZQD80GIA4M9gAK7IWgB7yFcARcBRABUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD/mwBY74UA+vCIAP/ogQD/4XkA/Od5AOPldQCy4HAAedlsAETsbgAVAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/5QAJ/WFAFzzhQBE+4MAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA///5//// - AAD//+B///8AAP//gB///wAA//4AB///AAD//AAB//8AAP/wAAB//wAA/8AAAB//AAD/gAAAD/8AAP4A - AAAD/wAA+AAAAAD/AADwAAAAAD8AAMAAAAAADwAAgAAAAAADAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAB - AAD4AAAAAAEAAP8AAAAAAQAA/+AAAAADAAD//AAAAAMAAP//gAAABwAA///wAAAPAAD///4AAB8AAP// - /4AAPwAA////AAB/AAD///4AAP8AAP///AAB/wAA///4AAH/AAD///AAA/8AAP//wAAH/wAA//+AAA// - AAD//wAAH/8AAP/+AAA//wAA//wAAH//AAD/+AAA//8AAP/gAAH//wAA/8AAA///AAD/gAAP//8AAP8A - AD///wAA/wAH////AAD/AP////8AAP/f/////wAA////////AAD///////8AAP///////wAA - - - \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmScanFiles.resx b/app/DD-Record-Organizer/frmScanFiles.resx deleted file mode 100644 index ba2a2c0..0000000 --- a/app/DD-Record-Organizer/frmScanFiles.resx +++ /dev/null @@ -1,1159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Gescannte Dateien - Ziehen Sie eine Datei auf einen Datensatz - - - - 315 - - - - Segoe UI, 8.25pt - - - 17, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm - BwAAAk1TRnQBSQFMAwEBAAFEAQEBRAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8DAAEHDBIBBzIAARIM/wES - MAAKIAP0AfMB/wHqMAAKIAH0A/MB/wHqMAACIAG9AW8GIATzAf8BbTAAAiABRgH0AZQBbwGUAb0CIATz - Af8BbTAAAyABFwGUAUYBvQEXAiAE8wH/AeswAAQgApQBFgMgBPMB/wHrMAAEIAFHAf8EIATzAf8B7DAA - BfkB/wT5A/MB8gH/AewwAAr5Bf8B7DAACvkB/wLyAfMB7QG8MgAB7QH/A/MD8gH/AfIB8wHtAfAzAAGS - Af8B8wXyAf8B8wGSAfA0AAGSCP8BkgHwNQAB8Aj3AfA0AAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB - AQABAQUAAYAXAAP/AQABwAcAAcBXAAHAAQEGAAHAAQMGAAHAAQcGAAHAAQ8GAAs= - - - - 12, 12 - - - 345, 209 - - - 0 - - - ListView1 - - - System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - - Top, Bottom, Left, Right - - - Fill - - - 0, 140 - - - 565, 391 - - - 5 - - - PdfViewer1 - - - DevExpress.XtraPdfViewer.PdfViewer, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Panel1 - - - 0 - - - 127, 17 - - - Segoe UI Semibold, 9pt, style=Bold, Italic - - - 50, 17 - - - Page - - - Magenta - - - 153, 20 - - - Seitenansicht Minimal - - - 0, 531 - - - 565, 22 - - - 3 - - - StatusStrip2 - - - StatusStrip2 - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Panel1 - - - 1 - - - 0, 0 - - - 565, 140 - - - RibbonControl1 - - - DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Panel1 - - - 2 - - - 363, 12 - - - 565, 553 - - - 3 - - - Panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - MiddleRight - - - 12, 227 - - - 149, 23 - - - 1 - - - Prüfe Verzeichnis - - - MiddleLeft - - - btnrefresh - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - 244, 17 - - - 392, 17 - - - MiddleRight - - - 207, 227 - - - 150, 23 - - - 4 - - - Entferne Eintrag - - - MiddleLeft - - - 718, 17 - - - Löscht den erzeugten Scaneintrag (Nicht die Datei) - - - btndelete - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - 12, 285 - - - 193, 17 - - - 5 - - - Inaktiviere "In den Vordergrund" - - - chkInFront - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - 540, 17 - - - 629, 17 - - - MiddleRight - - - NoControl - - - 12, 256 - - - 345, 23 - - - 6 - - - Lösche alle Einträge - - - MiddleLeft - - - Löscht alle erzeugten Scaneinträge (Nicht die Dateien selbst) - - - Button1 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 6, 13 - - - 934, 577 - - - Segoe UI, 8.25pt - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABycnIOcHBwi4qKivKEhIT1ZGRkiG5ubhEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCQ - kF6EhITmubm5/MvLy/7Jycn/tbW1/4CAgO5ra2t4c3NzCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfn58tkJCQwqqqqv3k5OT79vb2/e7v7/3U1NT8v7+//sHB - wf+qqqr/enp65Wpqamlzc3MFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp6enDKCg - oIyioqL61tbW+/b29vz09fX/3N3e/8XDv//Z2tz/6err/c3Nzfy3t7f+uLi4/56env90dHTbdXV1WQAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7u7tSpqam4sbGxvzz8/P79/f3/uTk5P/Ewb7/5djG///w - z//r2Lf/zMS2/9TW2f/j5eb9x8fH/LCwsP6wsLD/k5OT/3V1dc9ycnJKAAAAAAAAAAAAAAAAAAAAALu7 - u6e8vLz96enp+/n5+f7r6+v/wcHD/9vX0f//+ej///DZ///szP//58D//+Oz/+fGmv/HtqX/0dPW/9/h - 4/3BwcL8qKio/qenp/+Kior+dHR0wXBwcDoAAAAAAAAAAMXFxfz39/f9+vr6/8DAwP/MzMz////////+ - 9f//9eX//+/Y///qy///57///eCz//HMnP/mtIL/0pxt/7+jj//P0tT/2dze/bi4uf2hoaH+np6f/3h4 - ePoAAAAAAAAAAMjIyEfExMSpy8vL9Nvb2//Ly8v/ysnJ/93Y0v//9uX///LZ///rzP//5b7//d+y//DJ - nP/js4P/1pxr/8qBTv+5ZzP/tYx0/9HU1f/W2dr9s7i5/YOHif8AAAAAAAAAAAAAAAAAAAAAv7+/DMXF - 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 - AP//wAH//4AD//8AB//+AA///AAf//gA///8H/////////////8oAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenp6Pm5ubrl7e3vya2tr2mhoaF5XV1cDAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioqKG35+fqaFhYX9v7+//s/Pz//Gxsb/lZWV/21t - bdNycnJRAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQBoyMjHaEhITyq6ur/uPj4/nY2Nj7xMTE/sPD - w//FxcX/vr6+/46Ojv9ubm7Id3d3QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoEaKiorXoKCg/tbW1vrx8fH68vLy/vPz - 8//t7e3809PT+729vf69vb3/v7+//7a2tv+Hh4f+bGxsu3R0dDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK+vrx6cnJysm5ub/sXFxfzv7+/58vLy/vLy - 8v/y8vL/zs/R/9PU1f/w8fL/6urq/M7Ozvy4uLj9uLi4/7u7u/+srKz/goKC/WxsbK50dHQqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWqqqp3n5+f87m5uf3m5ub69fX1/fPz - 8//09PT/1NXW/7Syrv/l1sL/4tO5/7u2rv/MztD/6+zt/+bm5vzKysr7srKy/rKysv+1tbX/pKSk/3t7 - e/xtbW2gcXFxIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCwsI+pqam07CwsP7b29v69fX1+/T0 - 9P/19fX/3Nzd/7Oxsf/c1Mf///Td///u0///68n//+rA/+rTr//At6n/yMvN/+fo6v/i4uL9xcXF/K2t - rf6srKz/rq6u/5ubm/92dnb3b29vkmpqahgAAAAAAAAAAAAAAAAAAAAAvr6+hbGxsf3Ozs778vLy+vb2 - 9v729vb/4uLi/7Kysv/T0Mz///zv///25P//79n//+zQ///px///5cD//+W2//rYp//jwJb/v62d/8XI - y//h5OX/3+Dg/MHBwfyoqKj9p6en/6qqqv+Tk5P/c3Nz829vb4RlZWUQAAAAAAAAAAC9vb378PDw+vn5 - +f319fX/6Ojo/7a2tv/Pz8/////////99///9+z///Pi///v2f//7ND//+jH///lvv//4rb/99Sm/+3E - lf/ms4L/1aF0/7yhjP/Fx8n/3ODi/9vc3P29vb38oqKi/qKiov+kpKT/jo6O/21tbdYAAAAAAAAAAMnJ - yZ3Gxsb62tra//Dw8P/Y2Nj/tLS0/8jIyP/28/P////4///57f//9OL//+/Y///sz///6Mb//+W9//3i - tP/106X/7MKU/+Kyg//aoXL/0JBe/8R/Tv+2j3f/xMLC/9ja2//Y2Nj9ubm5/J2dnf6fn5//d3d38wAA - AAAAAAAAAAAAANXV1RPHx8dlwcHBvMTExPra2tr/5ubm/8LCwv+5ubf/0s3F//3x3v//89r//+zP///p - x///5r3//eGz//TSpf/rwZP/4rGB/9igcP/Qj1//xn1K/7tkLf+vXzH/tqqk/9LS0//b3N3/0NXW/aWr - r/16fHz9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMGMPDw2q+vr7AxMTE/NfX1//c3N3/vb/A/8G8 - tf/g073//+rF///nvf//4rP/9dKi/+vAkf/ir3//2J5q/8uOX/+7k3j/wLSt/9DW2v/V29//wcnP/6qe - mP+aakv/ljoN/4AoEbkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8sbwcHBbb29 - vcXCwsL80tPT/9HS1P+/vr7/y8Cw/+rTrv/40aD/6r6P/82rjP/Bs6f/yM3T/9Xc4v/Gz9b/saeg/6R1 - T/+jTQ7/pTsA/6A5AP+MIwD9hRkATwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMvLyx68vLxyurq6yb+/v/3Nzs//yczP/8G/vf/Dxsr/09nh/8vS2/+4rab/roFT/7Fe - Df+zTwD/r00A/6xLAP+nRAD/jygA/pIeAHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEIre4uners7zNwaqV/sakgP+3j1n/vnAP/8Ji - AP++YAD/uV0A/7dYAP+zVAD/rEsA/5EqAP+VIACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBqAGnNZQD70HcA/810 - AP/JcAD/xWoA/8BlAP+8YAD/uVwA/7JTAP+ULQD/kiQAmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALxeAAPldQCO1HMC/taE - AP/SfgD/zngA/8pzAP/GbgD/wmoA/79mAP+3WwD/lTAA/4smAKdaAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/dwAM3HIAsdd9 - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHgfcnJyWG9v - b1pxcXEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg4ODKnh4 - eLFycnL7iYmJ/oODg/5paWn2bm5ujnBwcBcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiI - iBGBgYGOdnZ2+JKSkv3MzMz9zc3N/83Nzf6/v7/+i4uL/mhoaPFubm6Dd3d3EQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACRkZEEiYmJZX19feiFhYX+srKy/szMzP3IyMj/xsbG/8XFxf/ExMT/x8fH/ri4uP6FhYX+aGho7G9v - b3h5eXkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJqamjyFhYXLhISE/qWlpf7Ozs786enp9u/v7/jZ2dn5xMTE/cPDw//Dw8P/wcHB/8HB - wf/ExMT+sbGx/n9/f/5paWnlb29vbWtrawgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACdnZ0Yk5OToIiIiPybm5v+w8PD/uDg4Pfy8vL58PDw/+/v7//w8PD+7Ozs+9XV - 1frAwMD9v7+//7+/v/+9vb3/vr6+/8DAwP6rq6v+enp6/mdnZ95xcXFidHR0BQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAsLCwBZubm26QkJDtl5eX/ru7u/7a2tr48PDw9/Ly8v7w8PD/7u7u/+/v - 7//x8fH/7+/v/+7u7v7p6en809PT+r29vf27u7v/u7u7/7u7u/+6urr/vLy8/qSkpP53d3f+aWlp1nBw - cFdeXl4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKw+l5eXz5WVlf6wsLD+1NTU+uzs7Pfz8/P98fHx/+/v - 7//v7+//8/Pz/+jo6P+ztbb/w8TG/+vr7P/u7u7/7Ozs/+np6fvR0dH6urq6/Li4uP+3t7f/t7e3/7a2 - tv+4uLj+nZ2d/nNzc/5paWnNeXl5TAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7u7Gaenp6Kbm5v8qamp/srKyvzo6Oj38/Pz+/Ly - 8v/x8fH/8PDw//Ly8v/s7O3/tbW3/6OgnP/m18D/18q2/6Oinv+7vcD/5ebm/+vr6//p6en/5+fn+87O - zvu3t7f8tLS0/7S0tP+zs7P/tLS0/7S0tP6Wlpb+cHBw/m5ubsR2dnZCAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWysrJvoqKi7qWlpf/BwcH+4ODg+PPz - 8/ny8vL/8vLy//Hx8f/z8/P/8PDw/7u7vP+dnJr/3tTE///02f//79H//+zM///sxv/fzrL/q6eg/7a4 - vP/f4OH/6erq/+fn5//k5OT8zs7O+rOzs/2wsLD/sLCw/7CwsP+wsLD/sLCw/pCQkP5ubm79bm5uunZ2 - djgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsLCPaysrM+mpqb+ubm5/9nZ - 2fnw8PD49PT0/vLy8v/y8vL/8/Pz//Pz8//CwsL/mZmX/9fQxv//+eX///Pc///v1v//7M///+nJ///o - w///57///+e5/+jQrP+yqp//s7a4/9na3P/m5+f/5OTk/+Li4vzJycn6sLCw/a2trf+srKz/rKys/62t - rf+qqqr+jIyM/mxsbPxvb2+vd3d3LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL6+vg29vb2bra2t/LKy - sv/Pz8/77Ozs+PX19f3z8/P/8vLy//T09P/19fX/xsbH/5aWl//Oy8j///zw///36f//8+H///Da///u - 1P//687//+nJ///nw///5b3//+S3///gsf/61qX/5MKa/7iqm/+xtLb/09XX/+Pk5P/i4uL/4eHh/MbG - xvqurq78qamp/6mpqf+oqKj/qamp/6ampv6Ghob+ampq+29vb6RxcXEmAAAAAAAAAAAAAAAAAAAAALS0 - tJu0tLT+xsbG/ebm5vj29vb79PT0//Pz8//09PT/9vb2/83Nzf+VlZX/x8fG/////P///fX///js///0 - 5f//8uD///Da///t1P//687//+nI///nwv//5b3//+S3//vdr//106T/8MmZ/+2+jf/esYX/u6aT/7K0 - tf/O0dP/4eLi/+Hh4f/e3t79xcXF+qurq/ympqb/paWl/6Wlpf+lpaX/oaGh/oKCgv5qamr4cXFxmW9v - bxsAAAAAAAAAALe3t+zf39/59/f3+vf39/709PT/8vLy//T09P/W1tb/mZmZ/8DAwP/////////////8 - +P//+fH///br///05f//8t///+/Z///t0///687//+nI///nwv//5Lz//+K4//zesP/10qT/7seZ/+i8 - jf/jsYL/3qd2/9Scbf+7nIb/s7Kz/8rN0P/d3t7/3t7e/9zc3P3ExMT6qKio/KKiov+ioqL/oaGh/6Ki - ov+bm5v+fHx8/mtra60AAAAAAAAAALu7u67Gxsb+2dnZ/u/v7/729vb+9PT0/+jo6P+Dg4P/ra2t/+zs - 7P/////////////99///+vD///br///05f//8t///+/Z///t0///683//+nH///nwv//5Lz//uK2//rc - rv/00aP/7saY/+i7jf/isYH/26Z2/9aba//QkF7/yoRT/7qQdP+1r63/yM3Q/9nb2//b29z/2tra/cLC - wvujo6P8nZ2d/56env+enp7/lJSU/mtra8EAAAAAAAAAAM/PzwTJyclTxsbGp7m5ufHDw8P+2NjY/u3t - 7f76+vr+29vb/6urq/+Xl5f/wMC///Pv6/////f///nt///15f//8d7//+/Y///t0///683//+nH///m - wf//5Lv//uK3//vbrf/00KL/7saX/+e7jP/hsIH/26V2/9Waav/Pj1//yIRU/8N4Rv+7azf/tH1d/7Wp - o//Gycv/1dbW/9nZ2f/Y2Nj9v7+/+6GhofycnJz/lZWV/29vb9EAAAAAAAAAAAAAAAAAAAAAAAAAANvb - 2wzIyMhVxcXFqre3t/LAwMD+2NjY/u/v7/7z8/T+0NDQ/6Wmpv+hoJ7/z8vC//zw4v//9uP///La///u - 0///68z//+jH///mwf//5Lv//uK1//ncrP/z0KH/7cWW/+e6i//hr4D/26R1/9SZav/Oj1//yINT/8F4 - R/+7azf/tFoj/65fMv+zopn/vr+//9bW1v/W1tb/2NjZ/9PV1v2vs7X7lpqb/nR2duAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3AzExMRYwcHBrbW1tfTAwMD+1dXV/uzs7P7s7Oz+x8jI/6Ok - pf+uqqX/29HA///u0///7s///+rH///nwP//5Lv//uO2//narf/zz6H/7cSV/+e5iv/grn//2qN0/9SZ - af/PjVz/yIBN/799T/+3kHb/uK+s/8XLzv/S1NX/2dnZ/9PU1v/EyMv/rbS3/5uRjf+XZUv/iCsO/3hk - XZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0A7Dw8NawMDAsbOz - s/a+vr7+09PT/unp6f7k5OX+wcLD/6Slpf+6sqn/5dW7///qwv//57v//+K1//rZq//yzqD/7MOV/+e4 - iv/hrn3/3aNw/9KXav/Am37/tqqg/7/EyP/Q09X/29zd/9bY2f/IzM7/sLa8/5+Vj/+aakz/nkUP/580 - AP+bMwD+hh4A/n8XADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAANfX1w/ExMRbvr6+s7Gxsfe8vLz+0dHR/ubm5v7c3d7+vL2//6mnp//HvKn/79ew//7c - qv/1z5//8MSU/+e3iP/NrIz/tqmd/7m7v//LztH/3N3e/9ja3P/JzdH/tLm//6KYkv+gcU3/plEP/6k/ - AP+lQAD/oz8A/585AP6MJwD+gRsAxIgAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM7OzhG+vr5fvLy8tbCwsPm7u7v+zs7O/uLi - 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 - Z//4qz3/9JkZ/+6HAP/nfQD/3XUA/9VuAP7MZQD80GIA4M9gAK7IWgB7yFcARcBRABUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD/mwBY74UA+vCIAP/ogQD/4XkA/Od5AOPldQCy4HAAedlsAETsbgAVAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/5QAJ/WFAFzzhQBE+4MAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA///5//// - AAD//+B///8AAP//gB///wAA//4AB///AAD//AAB//8AAP/wAAB//wAA/8AAAB//AAD/gAAAD/8AAP4A - AAAD/wAA+AAAAAD/AADwAAAAAD8AAMAAAAAADwAAgAAAAAADAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAB - AAD4AAAAAAEAAP8AAAAAAQAA/+AAAAADAAD//AAAAAMAAP//gAAABwAA///wAAAPAAD///4AAB8AAP// - /4AAPwAA////AAB/AAD///4AAP8AAP///AAB/wAA///4AAH/AAD///AAA/8AAP//wAAH/wAA//+AAA// - AAD//wAAH/8AAP/+AAA//wAA//wAAH//AAD/+AAA//8AAP/gAAH//wAA/8AAA///AAD/gAAP//8AAP8A - AD///wAA/wAH////AAD/AP////8AAP/f/////wAA////////AAD///////8AAP///////wAA - - - - Scan-Monitor - Unbearbeitete gescannte Dateien - - - ColumnHeader2 - - - System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageList1 - - - System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - pdfstatuslblPageNumber - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ToolStripDropDownButton1 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PdfFileOpenBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFileSaveAsBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfFileSaveAsBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFilePrintBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfFilePrintBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfPreviousPageBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfPreviousPageBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfNextPageBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfNextPageBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFindTextBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfFindTextBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoomOutBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoomOutBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoomInBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoomInBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfExactZoomListBarSubItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfExactZoomListBarSubItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom10CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom10CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom25CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom25CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom50CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom50CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom75CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom75CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom100CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom100CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom125CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom125CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom150CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom150CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom200CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom200CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom400CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom400CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoom500CheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoom500CheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfSetActualSizeZoomModeCheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfSetActualSizeZoomModeCheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfSetPageLevelZoomModeCheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfSetPageLevelZoomModeCheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfSetFitWidthZoomModeCheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfSetFitWidthZoomModeCheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfSetFitVisibleZoomModeCheckItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfSetFitVisibleZoomModeCheckItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfExportFormDataBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfExportFormDataBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfImportFormDataBarItem1 - - - DevExpress.XtraPdfViewer.Bars.PdfImportFormDataBarItem, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfRibbonPage1 - - - DevExpress.XtraPdfViewer.Bars.PdfRibbonPage, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFileRibbonPageGroup1 - - - DevExpress.XtraPdfViewer.Bars.PdfFileRibbonPageGroup, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfNavigationRibbonPageGroup1 - - - DevExpress.XtraPdfViewer.Bars.PdfNavigationRibbonPageGroup, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfZoomRibbonPageGroup1 - - - DevExpress.XtraPdfViewer.Bars.PdfZoomRibbonPageGroup, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFormDataRibbonPage1 - - - DevExpress.XtraPdfViewer.Bars.PdfFormDataRibbonPage, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfFormDataBarPageGroup1 - - - DevExpress.XtraPdfViewer.Bars.PdfFormDataBarPageGroup, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfBarController1 - - - DevExpress.XtraPdfViewer.Bars.PdfBarController, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - PdfBarController2 - - - DevExpress.XtraPdfViewer.Bars.PdfBarController, DevExpress.XtraPdfViewer.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - TimerCheckScanFiles - - - System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Timer2 - - - System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ToolTip1 - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - frmScanFiles - - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmScanFiles.vb b/app/DD-Record-Organizer/frmScanFiles.vb deleted file mode 100644 index f849578..0000000 --- a/app/DD-Record-Organizer/frmScanFiles.vb +++ /dev/null @@ -1,227 +0,0 @@ -Imports System.IO - -Public Class frmScanFiles - - Dim DragID - Dim MouseIsDown As Boolean = False - Private Shared _Instance As frmScanFiles = Nothing - - Public Shared Function Instance() As frmScanFiles - If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then - _Instance = New frmScanFiles - End If - _Instance.BringToFront() - Return _Instance - End Function - Private Sub frmScanFiles_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing - ClassWindowLocation.SaveFormLocationSize(Me, 9999, CURRENT_SCREEN_ID, Me.Name) - End Sub - Private Sub frmScanFiles_Load(sender As Object, e As EventArgs) Handles Me.Load - Load_Files() - ClassWindowLocation.LoadFormLocationSize(Me, 9999, CURRENT_SCREEN_ID, Me.Name) - End Sub - Sub Clear_and_Reload_Files() - Try - PdfViewer1.DocumentFilePath = "" - Dim del = "DELETE FROM TBPMO_FILES_USER where HANDLE_TYPE = 'SCAN' AND UPPER(USER_WORK) = UPPER('" & USER_USERNAME & "')" - If MYDB_ECM.ExecuteNonQuery(del) Then - ' Make a reference to a directory. - Dim di As New DirectoryInfo(CURRENT_SCAN_FOLDERWATCH) - ' Get a reference to each file in that directory. - Dim fiArr As FileInfo() = di.GetFiles() - ' Display the names of the files. - - Dim fri As FileInfo - For Each fri In fiArr - Dim irregular As Boolean = False - For Each row As DataRow In DTEXCLUDE_FILES.Rows - Dim content As String = row.Item(0).ToString.ToLower - If fri.Name.ToLower.Contains(content) Then - irregular = True - Exit For - End If - Next - If irregular = False Then - Dim handletype As String - If fri.FullName.EndsWith(".msg") Then - handletype = "SCAN_OUTLOOK_MESSAGE" - Else - handletype = "SCAN" - End If - ClassHelper.Insert_USER_File(fri.FullName, handletype) - End If - Next fri - ClassFolderWatcher.Check_Scan_Files() - Load_Files() - End If - Catch ex As Exception - - End Try - End Sub - Sub Load_Files() - Try - ListView1.Items.Clear() - Dim i = 0 - For Each row As DataRow In CURRENT_SCAN_TABLE.Rows - Dim extension = Path.GetExtension(row.Item("FILENAME2WORK").ToString) - Dim filestring = row.Item("FILENAME2WORK") - If ClassHelper.CheckFileIsInUse(filestring) = False Then - Dim filename = row.Item("FILENAME_ONLY").ToString - Dim ID = row.Item("GUID").ToString - 'We can only find associated exes by extension, so don't show any files that have no extension - If IsNothing(extension) Then - Else - If extension.Contains("pdf") Then - 'Add the file to the ListView, with the executable path as the key to the ImageList's image - ListView1.Items.Add(filename, 0) - Else - ListView1.Items.Add(filename) - End If - ListView1.Items(i).Tag = ID - i += 1 - End If - End If - Next - If CURRENT_SCAN_TABLE.Rows.Count = 0 Then - Me.Close() - End If - Catch ex As Exception - MsgBox("unexpected Error in Load Scanfiles:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - End Try - End Sub - - Private Sub btnrefresh_Click(sender As Object, e As EventArgs) Handles btnrefresh.Click - Clear_and_Reload_Files() - End Sub - - Private Sub PdfViewer1_CurrentPageChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfCurrentPageChangedEventArgs) Handles PdfViewer1.CurrentPageChanged - PDF_Pagenumber() - End Sub - Sub PDF_Pagenumber() - Try - pdfstatuslblPageNumber.Text = "Page " & PdfViewer1.CurrentPageNumber & "/" & PdfViewer1.PageCount - Catch ex As Exception - - End Try - End Sub - - Private Sub ListView1_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged - If ListView1.SelectedItems.Count = 1 Then - Dim i = ListView1.FocusedItem - Dim i1 = i.Text - If Not IsNothing(i) Then - If i.Text.ToLower.EndsWith("pdf") Then - Me.Cursor = Cursors.WaitCursor - Panel1.Visible = True - PdfViewer1.DocumentFilePath = "" - Dim docpath = CURRENT_SCAN_FOLDERWATCH & "\" & i.Text - PdfViewer1.LoadDocument(docpath) - 'PdfViewer1.HorizontalScroll.Visible = True - Else - Panel1.Visible = False - PdfViewer1.DocumentFilePath = "" - End If - End If - End If - Me.Cursor = Cursors.Default - End Sub - - Private Sub ToolStripDropDownButton1_Click(sender As Object, e As EventArgs) Handles ToolStripDropDownButton1.Click - PdfViewer1.ZoomFactor = 30 - End Sub - 'Private Sub ListView1_MouseDown(sender As Object, e As MouseEventArgs) Handles ListView1.MouseDown - ' If ListView1.SelectedItems.Count = 1 Then - ' Dim i = ListView1.FocusedItem - ' Dim i1 = i.Text - ' If Not IsNothing(i) Then - ' MouseIsDown = True - ' DragID = i.Tag - ' Console.WriteLine("Mouse Down") - ' End If - ' End If - 'End Sub - - Private Sub ListView1_MouseMove(sender As Object, e As MouseEventArgs) Handles ListView1.MouseMove - If MouseIsDown Then - 'Initiate dragging. - PdfViewer1.DocumentFilePath = "" - ListView1.DoDragDrop(DragID, DragDropEffects.Copy) - - End If - MouseIsDown = False - End Sub - - Private Sub ListView1_ItemDrag(sender As Object, e As ItemDragEventArgs) Handles ListView1.ItemDrag - If ListView1.SelectedItems.Count = 1 Then - Dim i = ListView1.FocusedItem - Dim i1 = i.Text - If Not IsNothing(i) Then - MouseIsDown = True - DragID = i.Tag - 'Console.WriteLine("Mouse Down") - PdfViewer1.DocumentFilePath = "" - ListView1.DoDragDrop("SCAN;" & DragID.ToString, DragDropEffects.Copy) - End If - End If - - End Sub - - Private Sub PdfViewer1_DocumentChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfDocumentChangedEventArgs) Handles PdfViewer1.DocumentChanged - PDF_Pagenumber() - End Sub - - Private Sub btndelete_Click(sender As Object, e As EventArgs) Handles btndelete.Click - Try - If ListView1.SelectedItems.Count = 1 Then - PdfViewer1.DocumentFilePath = "" - Dim i = ListView1.FocusedItem - Dim i1 = i.Text - If Not IsNothing(i) Then - Dim del = "DELETE FROM TBPMO_FILES_USER where GUID = " & i.Tag - If MYDB_ECM.ExecuteNonQuery(del) Then - ClassFolderWatcher.Check_Scan_Files() - Load_Files() - Else - MsgBox("Could not delete the entry. Check the logfile!", MsgBoxStyle.Information) - End If - End If - Else - MsgBox("Please choose a file!", MsgBoxStyle.Information) - End If - Catch ex As Exception - MsgBox("Unexpected Error in Delete Scanfile:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - End Try - - - End Sub - - Private Sub frmScanFiles_Shown(sender As Object, e As EventArgs) Handles Me.Shown - Me.BringToFront() - TimerCheckScanFiles.Start() - End Sub - - Private Sub chkInFront_CheckedChanged(sender As Object, e As EventArgs) Handles chkInFront.CheckedChanged - My.Settings.Save() - End Sub - Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles TimerCheckScanFiles.Tick - If CURRENT_SCAN_TABLE.Rows.Count <> ListView1.Items.Count Then - 'Dim result As MsgBoxResult - 'Dim msg = "Neue Dateien wurden gescann" - 'result = MessageBox.Show(msg, "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) - 'If result = MsgBoxResult.No Then - - 'End If - Load_Files() - End If - - End Sub - - Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click - PdfViewer1.DocumentFilePath = "" - Dim del = "DELETE FROM TBPMO_FILES_USER where HANDLE_TYPE = 'SCAN' AND UPPER(USER_WORK) = UPPER('" & USER_USERNAME & "')" - If MYDB_ECM.ExecuteNonQuery(del) Then - ClassFolderWatcher.Check_Scan_Files() - Load_Files() - End If - End Sub -End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmWM_IndexFile.resx b/app/DD-Record-Organizer/frmWM_IndexFile.resx index 439f3f3..e46c40f 100644 --- a/app/DD-Record-Organizer/frmWM_IndexFile.resx +++ b/app/DD-Record-Organizer/frmWM_IndexFile.resx @@ -247,7 +247,7 @@ 15, 27 - 559, 23 + 574, 23 1 @@ -294,9 +294,6 @@ 8 - - 891, 17 - Segoe UI Semibold, 9.75pt, style=Bold @@ -309,6 +306,9 @@ 3 + + 891, 17 + Auswahl der Dokumentart - Wird für nächste Eingabe gespeichert @@ -340,7 +340,7 @@ MiddleLeft - 416, 592 + 431, 444 158, 28 @@ -390,6 +390,18 @@ 5 + + Top, Left, Right + + + 85, 51 + + + 469, 23 + + + 9 + PATHTextBox @@ -402,6 +414,18 @@ 1 + + Top, Right + + + 504, 22 + + + 50, 23 + + + 7 + DOCTYPE_IDTextBox @@ -441,54 +465,6 @@ 5 - - Top, Left, Right - - - 85, 51 - - - 469, 23 - - - 9 - - - PATHTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox1 - - - 1 - - - Top, Right - - - 504, 22 - - - 50, 23 - - - 7 - - - DOCTYPE_IDTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GroupBox1 - - - 3 - Bottom, Left @@ -499,7 +475,7 @@ Verdana, 9.75pt, style=Italic - 24, 598 + 24, 450 177, 20 @@ -510,9 +486,6 @@ Lösche Ursprungsdatei - - 891, 17 - Die gedroppte Datei wird nach Ablage in windream gelöscht - Wird für nächste Eingabe gespeichert @@ -538,7 +511,7 @@ Verdana, 9.75pt, style=Bold, Italic - 24, 624 + 24, 476 519, 20 @@ -577,7 +550,7 @@ 15, 203 - 559, 336 + 574, 191 10 @@ -610,7 +583,7 @@ Segoe UI Semibold, 9pt, style=Bold, Italic - 21, 545 + 21, 397 134, 15 @@ -643,7 +616,7 @@ Segoe UI Semibold, 9pt, style=Bold, Italic - 24, 563 + 24, 415 551, 24 @@ -673,7 +646,7 @@ 7, 15 - 589, 661 + 604, 513 Segoe UI, 9pt diff --git a/app/DD-Record-Organizer/frmWM_IndexFile.vb b/app/DD-Record-Organizer/frmWM_IndexFile.vb index 34022cd..ec7ba03 100644 --- a/app/DD-Record-Organizer/frmWM_IndexFile.vb +++ b/app/DD-Record-Organizer/frmWM_IndexFile.vb @@ -13,7 +13,7 @@ Public Class frmWM_IndexFile Dim formloaded As Boolean = False Dim DTVWPMO_DOKUMENTTYPES As DataTable Dim FILE_WORKED As Boolean = False - + Dim FILE_HASH As String = "" Public Class SW Public label As String Public stopwatch As Stopwatch @@ -57,32 +57,43 @@ Public Class frmWM_IndexFile Dim existsonlyasMaster = False If WMMOD.TestFileExists(CURRENT_NEWFILENAME) = True Then - Dim msg = "Eine Datei mit identischem Namen existiert bereits! Wollen Sie die bestehende Datei ersetzen? (KEINE VERSIONIERUNG)" & vbNewLine & "Beachten Sie das vorhandene Versionen beim Ersetzen mit gelöscht werden!" + Dim msg As String If USER_LANGUAGE <> "de-DE" Then - msg = "There is already a file with the same name! Would You like to replace the file?" & vbNewLine & "All versions will also be deleted!" + msg = "A file with the same name already exists!" & vbCrLf & + "YES → Replace the existing file (all former versions will be deleted)" & vbCrLf & + "NO → Keep both files (your file will be versioned automatically)" + Else + msg = "Eine Datei mit identischem Namen existiert bereits!" & vbCrLf & + "JA → Bestehende Datei ersetzen (alle vorherigen Versionen werden dabei gelöscht)" & vbCrLf & + "NEIN → Beide Dateien behalten (Ihre Datei wird automatisch versioniert)" End If Dim result As MsgBoxResult result = MessageBox.Show(msg, "File already exists:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If result = MsgBoxResult.Yes Then - If WMMOD.RemoveFile(CURRENT_NEWFILENAME) Then - 'swWORK_FILE.Done() + If WMMOD.RemoveFile(CURRENT_NEWFILENAME) = False Then + ' Löschen fehlgeschlagen → Abbruch Return False + Else + Dim oNormPath = WMMOD.GetNormalizedPath(CURRENT_NEWFILENAME, 0) + + Dim oGetDoc = String.Format("select DOC_ID,RECORD_ID from TBPMO_DOC_RECORD_LINK RL INNER JOIN TBPMO_DOCRESULT_LIST DRL WITH (NOLOCK) ON RL.DOC_ID = DRL.DocID + WHERE FULL_FILENAME = '{0}'", oNormPath) + Dim oDT As DataTable = MYDB_ECM.GetDatatable(oGetDoc) + + For Each oRow As DataRow In oDT.Rows + Dim oDoc = New With { + .DocId = oRow("DOC_ID"), + .RecordId = oRow("RECORD_ID") + } + ClassFileResult.Delete_ResultFile(oDoc.DocId, oDoc.RecordId, 1) + Next + + ' Löschen erfolgreich → Import wird fortgesetzt End If Else CURRENT_NEWFILENAME = ClassHelper.Versionierung_Datei(CURRENT_NEWFILENAME) End If - Else - If WMMOD.TestFileExists(CURRENT_NEWFILENAME) = True Then - ClassHelper.InsertEssential_Log(CURRENT_RECORD_ID, "RECORD-ID", "FILE ALREADY EXISTED WITH NON-USER RIGHTS: " & CURRENT_NEWFILENAME) - CURRENT_NEWFILENAME = ClassHelper.Versionierung_Datei(CURRENT_NEWFILENAME) - existsonlyasMaster = True - Dim msg = "Eine Datei mit identischem Namen existiert bereits!" & vbNewLine & "Sie besitzen allerdings nicht die Rechte diese Datei zu bearbeiten." & vbNewLine & "Aus diesem Grund wird Ihre Datei versioniert!" - If USER_LANGUAGE <> "de-DE" Then - msg = "There is already a file with the same name!" & vbNewLine & "But You do not own the rights to work it." & vbNewLine & "Therefore Your file will be versioned!" - End If - MsgBox(msg, MsgBoxStyle.Information) - End If End If sw.Done() '################################################################# @@ -217,12 +228,12 @@ Public Class frmWM_IndexFile End If Else - 'MsgBox("Attention in Work-File:" & vbNewLine & "No indices were defined (1)!", MsgBoxStyle.Critical) + 'MsgBox("Attention in Work-File:" & vBCrlf & "No indices were defined (1)!", MsgBoxStyle.Critical) 'Return False End If Else 'swWORK_FILE.Done() - MsgBox("Attention in Work-File:" & vbNewLine & "No indices were defined (0)!", MsgBoxStyle.Critical) + MsgBox("Attention in Work-File:" & vbCrLf & "No indices were defined (0)!", MsgBoxStyle.Critical) Return False End If @@ -234,7 +245,7 @@ Public Class frmWM_IndexFile LOGGER.Info("oReldocpath: " & oReldocpath) CURRENT_WM_OBJECT = WMMOD.GetFileByPath(oReldocpath) If IsNothing(CURRENT_WM_OBJECT) Then - MsgBox("Attention in Work-File:" & vbNewLine & "Could not create final windream-object!", MsgBoxStyle.Critical) + MsgBox("Attention in Work-File:" & vbCrLf & "Could not create final windream-object!", MsgBoxStyle.Critical) Return False End If LOGGER.Info("...CURRENT_WM_OBJECT created: " & oReldocpath) @@ -293,7 +304,7 @@ Public Class frmWM_IndexFile FAU_AD_USER = "" ClassFileResult.DocID = CURRENT_DOC_ID ClassFileResult.SET_DOCID_INDICES() - If ClassDOC_SEARCH.CREATE_DOC_RELATED_LINKS(CURRENT_DOC_ID, CURRENT_RECORD_ID) = False Then + If ClassDOC_SEARCH.PROF_DOC_CREATE_UPDATE(CURRENT_DOC_ID, CURRENT_RECORD_ID, FILE_HASH) = False Then stg = "Unerwarteter Fehler: Der Record-Link konnte nicht erzeugt werden! Überprüfen Sie das Log." If USER_LANGUAGE <> "de-DE" Then @@ -303,7 +314,7 @@ Public Class frmWM_IndexFile Else sw = New SW("Setting_Rights") If ClassDOC_SEARCH.SET_WD_RIGHTS(CURRENT_WM_OBJECT, CURRENT_DOC_ID, CURRENT_FILEIN_WD, odeleteRights) = False Then - MsgBox("The rights for the new file could not be created! Please check the logfile!" & vbNewLine & + MsgBox("The rights for the new file could not be created! Please check the logfile!" & vbCrLf & "orgFLOW will try to give You at least reading rights!", MsgBoxStyle.Exclamation) DD_Rights.ClassRights.SetRightExplicit(CURRENT_DOC_ID, CURRENT_FILEIN_WD, USER_USERNAME, 1) ClassHelper.InsertEssential_Log(CURRENT_DOC_ID, "DOC-ID", "NEW FILE INDEXING - RIGHTS COULD NOT BE SET!!") @@ -333,7 +344,7 @@ Public Class frmWM_IndexFile Return False End If Catch ex As Exception - MsgBox("Unexpected error in Work-File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Unexpected error in Work-File:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) 'swWORK_FILE.Done() Return False End Try @@ -378,67 +389,100 @@ Public Class frmWM_IndexFile Try Me.Cursor = Cursors.WaitCursor SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain") - ' clsWM.MY_WDOBJECTTYPE = Me.OBJECT_TYPETextBox.Text - 'Multi-Indexer ist aktiv If chkMultiIndexer.Visible = True And chkMultiIndexer.Checked = True Then - 'Die erste Datei indexieren - If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = True Then - 'Und nun die folgenden - Dim DTFiles2Work As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_FILES_USER WHERE WORKED = 0 - AND GUID <> " & CURRENT_FILEID & " AND UPPER(USER_WORK) = UPPER('" & USER_USERNAME & "')") - If Not DTFiles2Work Is Nothing Then - Dim err = False - For Each filerow As DataRow In DTFiles2Work.Rows - FILE_WORKED = False - CURRENT_FILEID = filerow.Item("GUID") - CURRENT_FILENAME = filerow.Item("FILENAME2WORK") - Dim HandleType As String = filerow.Item("HANDLE_TYPE") - aktFiledropped = CURRENT_FILENAME - If HandleType = "@DROPFROMFSYSTEM@" Then - droptype = "dragdrop file" - ElseIf HandleType = "@OUTLOOK_ATTMNT@" Then - droptype = "dragdrop attachment" - ElseIf HandleType = "@OUTLOOKMESSAGE@" Then - droptype = "dragdrop message" - Else - droptype = filerow.Item("HANDLE_TYPE") - End If - If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then - err = True - Exit For - Else - FILE_WORKED = True - End If - Next - Me.Cursor = Cursors.Default - If err = False Then - NEW_FILES_ADDED = True - Dim stg As String = "Alle Dateien wurden mit Multiindexing erfolgreich nach windream übertragen!" - Dim stg1 As String = "Erfolgsmeldung" - If USER_LANGUAGE <> "de-DE" Then - stg = "All files were transferred via Multiindexing to windream" - stg1 = "Success:" - End If - MsgBox(stg, MsgBoxStyle.Information, stg1) - FILE_WORKED = True - Me.Close() - End If + ' ── Erste Datei: FILE_HASH sicherstellen ─────────────────────── + For Each oRow As DataRow In CURRENT_TBPMO_FILES_USER.Rows + If oRow.Item("GUID") = CURRENT_FILEID Then + FILE_HASH = oRow.Item("FILE_HASH") + Exit For End If + Next + If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then + Me.Cursor = Cursors.Default + Return False + End If + ' ── Erste Datei erfolgreich: GUID merken, Folgedateien laden ── + Dim firstFileId = CURRENT_FILEID + Dim DTFiles2Work As DataTable = MYDB_ECM.GetDatatable( + "SELECT * FROM TBPMO_FILES_USER WHERE WORKED = 0 " & + "AND GUID <> " & firstFileId & " AND USER_WORK = '" & USER_USERNAME & "'") + + If DTFiles2Work Is Nothing OrElse DTFiles2Work.Rows.Count = 0 Then + ' Keine weiteren Dateien – trotzdem Erfolg + NEW_FILES_ADDED = True + FILE_WORKED = True + Me.Cursor = Cursors.Default + Me.Close() + Return True End If - Else 'No MULTI INDEX + + Dim err As Boolean = False + For Each filerow As DataRow In DTFiles2Work.Rows + CURRENT_FILEID = filerow.Item("GUID") + CURRENT_FILENAME = filerow.Item("FILENAME2WORK") + FILE_HASH = filerow.Item("FILE_HASH") + aktFiledropped = CURRENT_FILENAME + + Dim handleType As String = filerow.Item("HANDLE_TYPE") + Select Case handleType + Case "@DROPFROMFSYSTEM@" + droptype = "dragdrop file" + Case "@OUTLOOK_ATTMNT@" + droptype = "dragdrop attachment" + Case "@OUTLOOKMESSAGE@" + droptype = "dragdrop message" + Case Else + droptype = handleType + End Select + + If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then + err = True + Exit For + End If + Next + + Me.Cursor = Cursors.Default + + If err = False Then + NEW_FILES_ADDED = True + FILE_WORKED = True + Dim stg As String = "Alle Dateien wurden mit Multiindexing erfolgreich nach windream übertragen!" + Dim stg1 As String = "Erfolgsmeldung" + If USER_LANGUAGE <> "de-DE" Then + stg = "All files were transferred via Multiindexing to windream" + stg1 = "Success:" + End If + MsgBox(stg, MsgBoxStyle.Information, stg1) + Me.Close() + Return True + End If + + Return False + + Else + ' ── Einzeldatei ─────────────────────────────────────────────── If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = True Then NEW_FILES_ADDED = True FILE_WORKED = True + Me.Cursor = Cursors.Default Me.Close() + Return True Else - MessageBox.Show("Import to windream was not successful." & vbNewLine & "Check the log for further information!", "Unexpected Error in windream-Stream:", MessageBoxButtons.OK, MessageBoxIcon.Error) + Me.Cursor = Cursors.Default + MessageBox.Show("Import to windream was not successful." & vbCrLf & + "Check the log for further information!", + "Unexpected Error in windream-Stream:", + MessageBoxButtons.OK, MessageBoxIcon.Error) + Return False End If End If Me.Cursor = Cursors.Default Catch ex As Exception - MsgBox("Error in Indexing_File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Indexing_File:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) + Finally + Me.Cursor = Cursors.Default End Try End Function Private Sub cmbDokumentart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDokumentart.SelectedIndexChanged @@ -453,7 +497,7 @@ Public Class frmWM_IndexFile End If Catch ex As Exception - MsgBox("Error in cmbDokumentart SelectedIndex:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in cmbDokumentart SelectedIndex:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try End Sub Sub Refresh_Indices_Manual() @@ -528,7 +572,7 @@ Public Class frmWM_IndexFile Me.Size = New Size(605, 430) End If Catch ex As Exception - MsgBox("Error in Refresh_Indices_Manual:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Refresh_Indices_Manual:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try End Sub @@ -554,7 +598,7 @@ Public Class frmWM_IndexFile End If End If Catch ex As Exception - MsgBox("Error in Check_Subfolder:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Check_Subfolder:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) lblSubfolder.Visible = False txtSubfolder.Visible = False CURRENT_CHECK_SUBFOLDER = False @@ -739,7 +783,7 @@ Public Class frmWM_IndexFile End If Catch ex As Exception - MsgBox("Error in Get_NextComboBoxResults:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Get_NextComboBoxResults:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub Renew_ComboboxResults(INDEX_GUID As Integer, SearchString As String, Resultvalue As String) @@ -835,7 +879,7 @@ Public Class frmWM_IndexFile Next End If Catch ex As Exception - LOGGER.Warn(" - Unvorhergesehener Unexpected error in Renew_ComboboxResults - Fehler: " & vbNewLine & ex.Message) + LOGGER.Warn(" - Unvorhergesehener Unexpected error in Renew_ComboboxResults - Fehler: " & vbCrLf & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in Renew_ComboboxResults:") End Try End Sub @@ -947,7 +991,7 @@ Public Class frmWM_IndexFile End If Catch ex As Exception - LOGGER.Warn(" - Unvorhergesehener Unexpected error in AddVorschlag_ComboBox - Indexname: " & indexname & " - Fehler: " & vbNewLine & ex.Message) + LOGGER.Warn(" - Unvorhergesehener Unexpected error in AddVorschlag_ComboBox - Indexname: " & indexname & " - Fehler: " & vbCrLf & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in AddVorschlag_ComboBox:") End Try End Sub @@ -1001,7 +1045,7 @@ Public Class frmWM_IndexFile ' lvwIndices.Items(Count).SubItems.Add(ParentID) ' End If 'Catch ex As Exception - ' MsgBox("Unexpected Error in Setting Parent-ID" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + ' MsgBox("Unexpected Error in Setting Parent-ID" & vBCrlf & ex.Message, MsgBoxStyle.Critical) 'End Try 'Count = Count + 1 ''den Record-Key auslesen @@ -1017,7 +1061,7 @@ Public Class frmWM_IndexFile End If Catch ex As Exception - MsgBox("Error in Refresh Indices for Indexing:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Refresh Indices for Indexing:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try End Sub @@ -1034,11 +1078,12 @@ Public Class frmWM_IndexFile chkdelete_origin.Visible = False Dim oReconnect = WMMOD.SessionReconnect '= New Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, WM_SERVER, WM_USER, WM_USER_PW, WM_DOMAIN) - Dim HandleType As String - For Each row As DataRow In CURRENT_TBPMO_FILES_USER.Rows - If row.Item("GUID") = CURRENT_FILEID Then - CURRENT_FILENAME = row.Item("FILENAME2WORK") - HandleType = row.Item("HANDLE_TYPE") + Dim oHandleType As String + For Each oRow As DataRow In CURRENT_TBPMO_FILES_USER.Rows + If oRow.Item("GUID") = CURRENT_FILEID Then + CURRENT_FILENAME = oRow.Item("FILENAME2WORK") + oHandleType = oRow.Item("HANDLE_TYPE") + FILE_HASH = oRow.Item("FILE_HASH") End If Next If CURRENT_FILENAME = "" Then @@ -1059,19 +1104,19 @@ Public Class frmWM_IndexFile End If aktFiledropped = CURRENT_FILENAME txtFilepath.Text = aktFiledropped - If HandleType = "@DROPFROMFSYSTEM@" Then + If oHandleType = "@DROPFROMFSYSTEM@" Then droptype = "dragdrop file" chkdelete_origin.Visible = True chkdelete_origin.Checked = WD_IndexDeleteDocs - ElseIf HandleType = "@OUTLOOK_ATTMNT@" Then + ElseIf oHandleType = "@OUTLOOK_ATTMNT@" Then droptype = "dragdrop attachment" chkdelete_origin.Visible = True chkdelete_origin.Checked = WD_IndexDeleteDocs - ElseIf HandleType = "@OUTLOOKMESSAGE@" Then + ElseIf oHandleType = "@OUTLOOKMESSAGE@" Then droptype = "dragdrop message" chkdelete_origin.Visible = True chkdelete_origin.Checked = WD_IndexDeleteDocs - ElseIf HandleType = "SCAM" Then + ElseIf oHandleType = "SCAM" Then droptype = "scan" End If Dim sql = String.Format("SELECT FORMVIEW_ID, FORM_ID, FORM_TITLE, DOKUMENTTYPE_ID, DOKUMENTTYPE, PATH, SHORTNAME, OBJECT_TYPE, FW_DOCTYPE_ID FROM VWPMO_DOKUMENTTYPES WHERE (FORMVIEW_ID = {0}) " & @@ -1088,7 +1133,7 @@ Public Class frmWM_IndexFile Dim FVID = MYDB_ECM.GetScalarValue(String.Format("SELECT GUID FROM TBPMO_FORM_VIEW WHERE FORM_ID = {0} and SCREEN_ID = 1", CURRENT_ENTITY_REDUNDANT_ID), True) 'Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, FVID) If DTVWPMO_DOKUMENTTYPES.Rows.Count = 0 Then 'DD_DMSDataSet.VWPMO_DOKUMENTTYPES.Rows.Count = 0 Then - MsgBox("No documenttypes for the redundant entity configured either! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation) + MsgBox("No documenttypes for the redundant entity configured either! Indexing is not possible!" & vbCrLf & "Please check the configuration!", MsgBoxStyle.Exclamation) Exit Sub Else LOGGER.Debug("Redundant EntityID: " & CURRENT_ENTITY_REDUNDANT_ID) @@ -1098,13 +1143,13 @@ Public Class frmWM_IndexFile CURRENT_FORMVIEW_ID = FVID End If Else - MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation) + MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbCrLf & "Please check the configuration!", MsgBoxStyle.Exclamation) Exit Sub End If End If Catch ex As Exception - MsgBox("Error in frmWD_Index_Dokart_Load:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in frmWD_Index_Dokart_Load:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try End Sub @@ -1146,7 +1191,7 @@ Public Class frmWM_IndexFile End If End If Catch ex As Exception - MsgBox("Error in Form Shown:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in Form Shown:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try formloaded = True End Sub @@ -1156,9 +1201,35 @@ Public Class frmWM_IndexFile End Sub Private Sub frmWM_IndexFile_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing - If FILE_WORKED = False Then - Dim oDelete = "DELETE FROM TBPMO_FILES_USER WHERE GUID = " & CURRENT_FILEID - MYDB_ECM.ExecuteNonQuery(oDelete) - End If + Try + If IsNothing(CURRENT_FILEID) OrElse CURRENT_FILEID.ToString = "" Then + Exit Sub + End If + + ' Direkt in der DB prüfen – nicht auf das Flag FILE_WORKED verlassen + Dim checkSql = $"SELECT WORKED FROM TBPMO_FILES_USER WHERE GUID = {CURRENT_FILEID}" + Dim workedValue = MYDB_ECM.GetScalarValue(checkSql) + + If IsNothing(workedValue) OrElse IsDBNull(workedValue) Then + ' Datensatz existiert nicht mehr – kein Löschen notwendig + Exit Sub + End If + + If CBool(workedValue) = False Then + Dim oDelete = $"DELETE FROM TBPMO_FILES_USER WHERE GUID = {CURRENT_FILEID} AND WORKED = 0" + MYDB_ECM.ExecuteNonQuery(oDelete) + LOGGER.Info($"TBPMO_FILES_USER: Eintrag GUID={CURRENT_FILEID} gelöscht (nicht verarbeitet).") + End If + Catch ex As Exception + LOGGER.Warn($"Fehler beim Bereinigen von TBPMO_FILES_USER (Closing): {ex.Message}") + End Try + End Sub + + Private Sub frmWM_IndexFile_Closed(sender As Object, e As EventArgs) Handles Me.Closed + Try + Cursor = Cursors.Default + Catch ex As Exception + + End Try End Sub End Class \ No newline at end of file