Versionierung windream, DocRecordLink, Overlay in NodeNavigation

This commit is contained in:
Developer01
2026-03-27 14:08:05 +01:00
parent e9cb352674
commit 0125d9b047
12 changed files with 421 additions and 336 deletions

View File

@@ -117,6 +117,10 @@
</setting> </setting>
</DevExpress.LookAndFeel.Design.AppSettings> </DevExpress.LookAndFeel.Design.AppSettings>
</applicationSettings> </applicationSettings>
<appSettings>
<!-- Verbose Grid Logging: nur für Diagnose auf True setzen! NIEMALS im Produktivbetrieb! -->
<add key="DocSearch_VerboseLogging" value="false" />
</appSettings>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>

View File

@@ -6,6 +6,19 @@ Public Class ClassDOC_SEARCH
Private Shared ENTITY_ID As Integer Private Shared ENTITY_ID As Integer
Private Shared RECORD_ID As Integer Private Shared RECORD_ID As Integer
Private Shared AsyncRunning As Boolean = False Private Shared AsyncRunning As Boolean = False
Private Shared EnableVerboseGridLogging As Boolean = ReadVerboseLoggingSetting()
Private Shared Function ReadVerboseLoggingSetting() As Boolean
Try
Dim oValue = System.Configuration.ConfigurationManager.AppSettings("DocSearch_VerboseLogging")
If Not String.IsNullOrWhiteSpace(oValue) Then
LOGGER.Info("DocSearch_VerboseLogging setting found: " & oValue)
Return Boolean.Parse(oValue)
End If
Catch ex As Exception
' Fehler beim Lesen → sicher auf False
End Try
Return False
End Function
Private Shared Function GET_DOCSEARCH_DATATABLE(Optional BG As Boolean = False) Private Shared Function GET_DOCSEARCH_DATATABLE(Optional BG As Boolean = False)
Try Try
Dim OPTION1 Dim OPTION1
@@ -188,16 +201,16 @@ Public Class ClassDOC_SEARCH
"VWPMO_DOC_SEARCH T " & vbCrLf & "VWPMO_DOC_SEARCH T " & vbCrLf &
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & 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_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 TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & 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 TRC WITH (NOLOCK) 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 TRC1 WITH (NOLOCK) 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 TRC2 WITH (NOLOCK) 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_DOCSEARCH_RESULTLIST_CONFIG TRC3 WITH (NOLOCK) 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 T1 WITH (NOLOCK) 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 T2 WITH (NOLOCK) 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 T3 WITH (NOLOCK) 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 & "LEFT JOIN TBPMO_CONTROL_VALUE T4 WITH (NOLOCK) 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) "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 ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT_SUBNODES" Then
Dim sqlft = SQL_FULLTEXT Dim sqlft = SQL_FULLTEXT
@@ -215,10 +228,10 @@ Public Class ClassDOC_SEARCH
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbCrLf & "[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbCrLf &
"FROM " & vbCrLf & "FROM " & vbCrLf &
"VWPMO_DOC_SEARCH T" & vbCrLf & "VWPMO_DOC_SEARCH T" & vbCrLf &
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf & "INNER JOIN TBPMO_DOC_RECORD_LINK TRL WITH (NOLOCK) ON T.DocID = TRL.DOC_ID" & vbCrLf &
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf & "INNER JOIN TBPMO_RECORD TR WITH (NOLOCK) ON TRL.RECORD_ID = TR.GUID" & vbCrLf &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf & "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf & "INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS WITH (NOLOCK) ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf &
"WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {2} AND TRIGHTS.dwUserOrGroupID = {3}" & 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) "AND T.DocID IN ({6})", USER_LANGUAGE, ENTITY_ID, USER_GUID, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft)
End If End If
@@ -392,7 +405,9 @@ Public Class ClassDOC_SEARCH
Dim fullpath = FILE_ROW.Item("FULL_FILENAME") Dim fullpath = FILE_ROW.Item("FULL_FILENAME")
Dim objecttype = FILE_ROW.Item("OBJECTTYPE") Dim objecttype = FILE_ROW.Item("OBJECTTYPE")
Dim DocID = FILE_ROW.Item("DocID") Dim DocID = FILE_ROW.Item("DocID")
LOGGER.Debug($"Creating Row for DocID [{DocID}]") If EnableVerboseGridLogging Then
LOGGER.Debug($"Creating Row for DocID [{DocID}]")
End If
'Dim Folderpath = Path.GetDirectoryName(fullpath) 'Dim Folderpath = Path.GetDirectoryName(fullpath)
Dim filename = Path.GetFileName(fullpath) Dim filename = Path.GetFileName(fullpath)
Dim extension = Path.GetExtension(fullpath) Dim extension = Path.GetExtension(fullpath)
@@ -446,7 +461,10 @@ Public Class ClassDOC_SEARCH
rowvalue = "" rowvalue = ""
End If End If
_step = "9.1 rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]" _step = "9.1 rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]"
LOGGER.Debug("rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]") If EnableVerboseGridLogging Then
LOGGER.Debug("rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]")
End If
Catch ex As Exception Catch ex As Exception
If CURRENT_SEARCH_TYPE = "RECORD" Then If CURRENT_SEARCH_TYPE = "RECORD" Then
LOGGER.Warn("Unexpected Error in GetVariableValue for Column [" & Colname & "] - Error: " & ex.Message) LOGGER.Warn("Unexpected Error in GetVariableValue for Column [" & Colname & "] - Error: " & ex.Message)

View File

@@ -343,9 +343,9 @@ Public Class ClassDocGrid
Dim sql = String.Format( Dim sql = String.Format(
"SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " & "SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " &
"T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " & "T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
"FROM TBPMO_DOC_VALUES T " & "FROM TBPMO_DOC_VALUES T WITH (NOLOCK) " &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON T.RECORD_ID = TTEMP.RECORD_ID " & "INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON T.RECORD_ID = TTEMP.RECORD_ID " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID " & "RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WITH (NOLOCK) ON T.CONFIG_ID = T1.GUID " &
"WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1", "WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1",
CURRENT_ENTITY_ID, USER_LANGUAGE) CURRENT_ENTITY_ID, USER_LANGUAGE)
Return MYDB_ECM.GetDatatable(sql) Return MYDB_ECM.GetDatatable(sql)
@@ -358,8 +358,8 @@ Public Class ClassDocGrid
Dim sql = String.Format( Dim sql = String.Format(
"SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " & "SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " &
"T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " & "T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
"FROM TBPMO_DOC_VALUES T " & "FROM TBPMO_DOC_VALUES T WITH (NOLOCK) " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID " & "RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WITH (NOLOCK) ON T.CONFIG_ID = T1.GUID " &
"WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1 AND T.RECORD_ID = {2}", "WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1 AND T.RECORD_ID = {2}",
CURRENT_ENTITY_ID, USER_LANGUAGE, RECORD_ID) CURRENT_ENTITY_ID, USER_LANGUAGE, RECORD_ID)
Return MYDB_ECM.GetDatatable(sql) Return MYDB_ECM.GetDatatable(sql)
@@ -434,6 +434,7 @@ Public Class ClassDocGrid
' ── 3. KRITISCH: Performance-optimiertes DataSource-Setzen ─────────── ' ── 3. KRITISCH: Performance-optimiertes DataSource-Setzen ───────────
_isGridRefreshing = True ' Flag setzen VOR DataSource-Änderung _isGridRefreshing = True ' Flag setzen VOR DataSource-Änderung
IsBulkSelectionActive = True '
Try Try
pDocGridView.BeginDataUpdate() ' Events unterdrücken pDocGridView.BeginDataUpdate() ' Events unterdrücken
pDocGridView.BeginUpdate() ' UI-Updates unterdrücken pDocGridView.BeginUpdate() ' UI-Updates unterdrücken
@@ -527,6 +528,7 @@ Public Class ClassDocGrid
' ── 6. KRITISCH: Flag ERST JETZT zurücksetzen! ──────────────────────────── ' ── 6. KRITISCH: Flag ERST JETZT zurücksetzen! ────────────────────────────
_isGridRefreshing = False _isGridRefreshing = False
IsBulkSelectionActive = False ' ← NEU: erst hier, NACH BestFitColumns
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt ' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
For Each column As GridColumn In pDocGridView.Columns For Each column As GridColumn In pDocGridView.Columns

Binary file not shown.

View File

@@ -0,0 +1,162 @@
10:26:37.5843|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> FocusedNodeChanged: NodeID=1889, NodeCaption='52 Kreispläne', NodeConfigID=23, RecordID=660188
10:26:37.5843|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.5843|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.5843|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBOF_MAP_RIGHT_NODE_ADD_USER WITH (NOLOCK) WHERE FK_TBPMO_SN_CONFIG_ID = 23 AND FK_TBDDUSER_ID = 0] and Parameters []
10:26:37.5843|frmNodeNavigation_Entity6|INFO >> MoveNext -> Node changed: NodeID=23, NodeGUID=835919, ConfigNodesFound=0, ButtonVisible=Never, HasAddRightForConfigNode=False, ConfigTableRows=0
10:26:37.5843|frmNodeNavigation_Entity6|DEBUG >> UpdateCreateNodeButtonState -> UpdateCreateNodeButtonState called - Visibility=Never, CurrentEnabled=False, AvailableNodes=0, ConfigTableExists=True, HasAddRightForConfigNode=False, RIGHT_RECORD_AND_FILE_READ_ONLY=False, USER_IS_ADMIN=True
10:26:37.5843|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.5843|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.5843|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBPMO_DOC_RECORD_LINK WHERE RECORD_ID = 660188] and Parameters []
10:26:37.5993|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.5993|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.5993|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT IN_WORK, IN_WORK_WHO FROM TBPMO_RECORD WHERE GUID = 660188] and Parameters []
10:26:37.5993|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.5993|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.5993|MSSQLServer|DEBUG >> ExecuteNonQueryWithConnectionObject -> ExecuteNonQueryWithConnectionObject: Running Command [EXEC PRPMO_RECORD_CHECK_INTEGRITY 660188,'digitaldata',False] and Parameters []
10:26:37.6713|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [OVERLAY] ShowOverlayForm called at 10:26:37.671
10:26:37.6713|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> Show_Selected_Record_Data_NonBlocking: RecordID=660188, LoadData=True
10:26:37.6713|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> RECORD ID: 660188
10:26:37.6713|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.6713|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.6713|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM VWPMO_VALUES WHERE RECORD_ID = 660188] and Parameters []
10:26:37.6753|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.6753|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.6753|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM VWPMO_CONTROL_HINT WHERE FORM_ID = 6] and Parameters []
10:26:37.6753|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.6753|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.6753|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT
ADDED_WHO,
CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN,
COALESCE(CHANGED_WHO,'') AS CHANGED_WHO,
COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN
FROM TBPMO_RECORD WITH (NOLOCK) WHERE GUID = 660188] and Parameters []
10:26:37.6753|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [OVERLAY] CloseOverlayForm (after ControlLoading) called at 10:26:37.683
10:26:37.6753|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] RUN_DOCSEARCH START at 10:26:37.687
10:26:37.6753|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] Get_DOC_RESULTTABLE START at 10:26:37.688
10:26:37.6753|ClassInit|DEBUG >> GET_DOCSEARCH_DATATABLE -> SQL_DOC_SEARCH: SELECT
CONVERT(BIGINT,T.DocID) DocID
,T.dwVersionID
,T.FULL_FILENAME
,T.[Filename]
,T.Doctype
,T.[Version]
,T.Creation_DateTime
,T.Change_DateTime
,T.OBJECTTYPE
,T.DISPLAY_NAME
,T.IN_WORK
,T.IN_WORK_USER
,T.IN_WORK_COMMENT,
ISNULL(T1.VALUE,'') AS OPTION1,
ISNULL(T2.VALUE,'') AS OPTION2,
ISNULL(T3.VALUE,'') AS OPTION3,
ISNULL(T4.VALUE,'') AS OPTION4,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX1') AS DOCIDX1,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX2') AS DOCIDX2,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX3') AS DOCIDX3,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX4') AS DOCIDX4,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN1','7',TRL.RECORD_ID) AS DROPDOWN1,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN2','7',TRL.RECORD_ID) AS DROPDOWN2,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN3','7',TRL.RECORD_ID) AS DROPDOWN3,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN4','7',TRL.RECORD_ID) AS DROPDOWN4,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID),'') AS VALUE1,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID),'') AS VALUE2,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID),'') AS VALUE3,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID),'') AS VALUE4,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC4.GUID),'') AS VALUE5,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC5.GUID),'') AS VALUE6,
dwAccessRight AS ACCESS_RIGHT
FROM
VWPMO_DOC_SEARCH T
INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID
INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID
INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = 'de-DE' AND TRC.GUID = 106
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = 'de-DE' AND TRC1.GUID = 107
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = 'de-DE' AND TRC2.GUID = 109
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = 'de-DE' AND TRC3.GUID = 0
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC4 ON TR.FORM_ID = TRC4.ENTITY_ID AND TRC4.LANGUAGE = 'de-DE' AND TRC4.GUID = 0
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC5 ON TR.FORM_ID = TRC5.ENTITY_ID AND TRC5.LANGUAGE = 'de-DE' AND TRC5.GUID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = 0
WHERE
TRL.RECORD_ID = 660188 AND TR.FORM_ID = 6 AND TRIGHTS.dwUserOrGroupID = 1001479
10:26:37.6753|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:37.6753|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:37.6753|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT
CONVERT(BIGINT,T.DocID) DocID
,T.dwVersionID
,T.FULL_FILENAME
,T.[Filename]
,T.Doctype
,T.[Version]
,T.Creation_DateTime
,T.Change_DateTime
,T.OBJECTTYPE
,T.DISPLAY_NAME
,T.IN_WORK
,T.IN_WORK_USER
,T.IN_WORK_COMMENT,
ISNULL(T1.VALUE,'') AS OPTION1,
ISNULL(T2.VALUE,'') AS OPTION2,
ISNULL(T3.VALUE,'') AS OPTION3,
ISNULL(T4.VALUE,'') AS OPTION4,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX1') AS DOCIDX1,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX2') AS DOCIDX2,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX3') AS DOCIDX3,
[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,6,'DOCIDX4') AS DOCIDX4,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN1','7',TRL.RECORD_ID) AS DROPDOWN1,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN2','7',TRL.RECORD_ID) AS DROPDOWN2,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN3','7',TRL.RECORD_ID) AS DROPDOWN3,
[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,6,'DROPDOWN4','7',TRL.RECORD_ID) AS DROPDOWN4,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID),'') AS VALUE1,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID),'') AS VALUE2,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID),'') AS VALUE3,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID),'') AS VALUE4,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC4.GUID),'') AS VALUE5,
COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC5.GUID),'') AS VALUE6,
dwAccessRight AS ACCESS_RIGHT
FROM
VWPMO_DOC_SEARCH T
INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID
INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID
INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = 'de-DE' AND TRC.GUID = 106
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = 'de-DE' AND TRC1.GUID = 107
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = 'de-DE' AND TRC2.GUID = 109
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = 'de-DE' AND TRC3.GUID = 0
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC4 ON TR.FORM_ID = TRC4.ENTITY_ID AND TRC4.LANGUAGE = 'de-DE' AND TRC4.GUID = 0
LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC5 ON TR.FORM_ID = TRC5.ENTITY_ID AND TRC5.LANGUAGE = 'de-DE' AND TRC5.GUID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = 0
LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = 0
WHERE
TRL.RECORD_ID = 660188 AND TR.FORM_ID = 6 AND TRIGHTS.dwUserOrGroupID = 1001479] and Parameters []
10:26:40.2543|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] Get_DOC_RESULTTABLE END at 10:26:40.254 - Rows=1236
10:26:40.2543|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] FillColumns START at 10:26:40.254
10:26:40.2543|ClassInit|DEBUG >> GetOrLoad -> Cache MISS: DocDetailValues_E6_R660188_Lde-DE - Loading from DB...
10:26:40.2543|MSSQLServer|DEBUG >> GetConnection -> The Following Connection is open: Server=ARNSR033;Database=DD_ECM;User Id=XXXXX;Password=XXXXX;
10:26:40.2543|MSSQLServer|DEBUG >> MaybeGetTransaction -> Transaction Mode: [WithTransaction]
10:26:40.2543|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject -> GetDatatableWithConnectionObject: Running Query [SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO FROM TBPMO_DOC_VALUES T WITH (NOLOCK) RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WITH (NOLOCK) ON T.CONFIG_ID = T1.GUID WHERE T1.ENTITY_ID = 6 AND LANGUAGE = 'de-DE' AND T1.CONFIG_COLUMNS = 1 AND T.RECORD_ID = 660188] and Parameters []
10:26:40.4074|ClassInit|DEBUG >> FillColumns -> Values loaded...
10:26:40.4074|ClassInit|DEBUG >> FillColumns -> tables added to ds.Tables...
10:26:40.4074|ClassInit|DEBUG >> FillColumns -> tables added to ds.Tables...
10:26:40.4074|ClassInit|DEBUG >> FillColumns -> parentColumn.DataType: System.Int32
10:26:40.4074|ClassInit|DEBUG >> FillColumns -> childColumn.DataType: System.Int32
10:26:40.4104|ClassInit|DEBUG >> FillColumns -> relationdocIdDetails created...
10:26:40.4564|ClassInit|DEBUG >> FillColumns -> Adapting DisplayFormat (DATETIME for Column Revisions-Datum
10:26:40.4813|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] FillColumns END at 10:26:40.481
10:26:40.4813|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> [DOCSEARCH] RUN_DOCSEARCH END at 10:26:40.482 - 1236 documents found
10:26:40.4813|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> Node_AfterSelect=True - DocView collapsed
10:26:40.4813|frmNodeNavigation_Entity6|DEBUG >> MoveNext -> Show_Selected_Record_Data_NonBlocking completed
10:26:40.4813|ClassInit|INFO >> Check_Set_Rights -> ClassRightManagement...NO DEFINTION FOR GROUP- OR USER-RIGHT!
10:26:40.4813|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_EDIT_R: False
10:26:40.4813|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_ADD_R: False
10:26:40.4874|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_DELETE_R: False
10:26:40.4874|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_ADD_DOC: False
10:26:40.4874|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_VIEW_DOC: True
10:26:40.4874|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_DELETE_DOC: False
10:26:40.4874|ClassInit|DEBUG >> Check_Set_Rights -> ClassRightManagement-RIGHT_READ_ONLY_DOC: False

View File

@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("3.7.3.0")> <Assembly: AssemblyVersion("3.7.4.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguageAttribute("")> <Assembly: NeutralResourcesLanguageAttribute("")>

View File

@@ -1726,7 +1726,7 @@
<None Include="MailLicense.xml"> <None Include="MailLicense.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<Content Include="Log_ewa.txt" /> <Content Include="Log_orgFLOW.txt" />
<Content Include="ORGFLOW_Icon_16x16.ico" /> <Content Include="ORGFLOW_Icon_16x16.ico" />
<Content Include="ORGFLOW_Icon_256x256.ico" /> <Content Include="ORGFLOW_Icon_256x256.ico" />
<Content Include="Resources\cube.ico" /> <Content Include="Resources\cube.ico" />

View File

@@ -1,182 +1,127 @@
Imports System.IO Imports System.IO
Imports DevExpress.XtraGrid.Columns Imports DevExpress.XtraGrid.Columns
Public Class frmDocRecordLink Public Class frmDocRecordLink
Public Property myDocuments As New List(Of ClassDocGrid.clsWMDoc) Public Property myDocuments As New List(Of ClassDocGrid.clsWMDoc)
Private CURRENT_LINK_ENTITY_ID As Integer = 0 Private CURRENT_LINK_ENTITY_ID As Integer = 0
Private ENTITY_LOAD_ACTIVE As Boolean = False Private ENTITY_LOAD_ACTIVE As Boolean = False
Private DT_ENTITYDATA As DataTable Private DT_ENTITYDATA As DataTable
Private Class ClassEntity Private Class ClassEntity
Public title As String Public title As String
Public id As Integer Public id As Integer
Public Overrides Function ToString() As String Public Overrides Function ToString() As String
Return Me.title Return Me.title
End Function End Function
End Class End Class
Private Function GET_CURRENT_ENTITY_DATA()
If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then
Return Nothing
End If
Dim oDatatable As DataTable = CURRENT_DT_ENTITY_RECORDS.Copy
Return oDatatable
End Function
Sub Refresh_Grid_Data(current As Boolean, ENTITY_DATATABLE As DataTable)
Dim DT_RECORDS As DataTable
If current = True Then
DT_RECORDS = GET_CURRENT_ENTITY_DATA()
Else Private Function GET_CURRENT_ENTITY_DATA() As DataTable
DT_RECORDS = ENTITY_DATATABLE If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then Return Nothing
End If Return CURRENT_DT_ENTITY_RECORDS.Copy()
End Function
''' <summary>
''' Lädt das Grid neu.
''' Wenn current=True wird versucht, die zuletzt gewählte Entity korrekt zu laden.
''' </summary>
Sub Refresh_Grid_Data(current As Boolean, ENTITY_DATATABLE As DataTable)
If CURRENT_LINK_ENTITY_ID = 0 Then If CURRENT_LINK_ENTITY_ID = 0 Then
CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID
End If End If
Dim DT_RECORDS As DataTable
If current = True Then
If CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID Then
DT_RECORDS = GET_CURRENT_ENTITY_DATA()
Else
DT_RECORDS = ReturnDataforEntity(CURRENT_LINK_ENTITY_ID)
DT_ENTITYDATA = DT_RECORDS
End If
Else
DT_RECORDS = ENTITY_DATATABLE
End If
Try Try
grvwGrid.Columns.Clear() grvwGrid.Columns.Clear()
dgEntityRecords.DataSource = DT_RECORDS dgEntityRecords.DataSource = DT_RECORDS
Catch ex As Exception Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in format grid", ex.Message, ex.StackTrace) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in format grid", ex.Message, ex.StackTrace)
End Try End Try
End Sub End Sub
Private Sub frmDocRecordLink_Load(sender As Object, e As EventArgs) Handles Me.Load Private Sub frmDocRecordLink_Load(sender As Object, e As EventArgs) Handles Me.Load
' OLD WAY ENTITY_LOAD_ACTIVE = True
If myDocuments.Count = 0 Then
ENTITY_LOAD_ACTIVE = True
If ClassDocGrid.DT_RESULTFILES.Rows.Count = 1 Then
txtFileInfo.Text = ClassDocGrid.DT_RESULTFILES.Rows(0).Item("DOC_PATH")
Else
txtFileInfo.Text = String.Format("{0} files selected for linking to record", ClassDocGrid.DT_RESULTFILES.Rows.Count)
End If
Try
If CURRENT_LINK_ENTITY_ID = 0 Then
Refresh_Grid_Data(True, Nothing)
CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID
Else
Dim DT_RESULT As DataTable
If CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID Then
DT_RESULT = CURRENT_DT_ENTITY_RECORDS
Else
DT_RESULT = ReturnDataforEntity(CURRENT_LINK_ENTITY_ID)
End If
If Not IsNothing(DT_RESULT) Then
Refresh_Grid_Data(False, DT_RESULT)
End If
End If
Dim DT_ENTITIES As DataTable = GetENTITIES()
Dim oSelectedIndex As Integer = 0
If DT_ENTITIES.Rows.Count = 0 Then
Exit Sub
End If
Dim oCount = 0
For Each row As DataRow In DT_ENTITIES.Rows
Dim entity As New ClassEntity
entity.title = row.Item("FORM_TITLE")
entity.id = row.Item("FORM_ID")
cmbConstructorForms.Items.Add(entity)
If CURRENT_LINK_ENTITY_ID = entity.id Then
txtcurrSichtData.Text = entity.title
oSelectedIndex = oCount
End If
oCount += 1
Next
If USER_LANGUAGE = "de-DE" Then
Me.Text = CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " Datei(en) mit Datensatz verknüpfen:"
Else
Me.Text = "Link " & CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " files with record:"
End If
' Den index der aktuell geöffneten ConstructorForm setzen
cmbConstructorForms.SelectedIndex = oSelectedIndex
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in frmDocRecordLink_Load", ex.Message, ex.StackTrace)
End Try
Load_DocGrid_Layout()
bsiInfo.Caption = "Waiting for record-Selection....."
End If
' Dateiinfo-Text setzen
If myDocuments.Count > 0 Then If myDocuments.Count > 0 Then
ENTITY_LOAD_ACTIVE = True txtFileInfo.Text = If(myDocuments.Count = 1,
If myDocuments.Count = 1 Then myDocuments.First.DocPath,
txtFileInfo.Text = myDocuments.First.DocPath String.Format("{0} files selected for linking to record", myDocuments.Count))
Else Else
txtFileInfo.Text = String.Format("{0} files selected for linking to record", myDocuments.Count) txtFileInfo.Text = If(ClassDocGrid.DT_RESULTFILES.Rows.Count = 1,
End If ClassDocGrid.DT_RESULTFILES.Rows(0).Item("DOC_PATH").ToString(),
Try String.Format("{0} files selected for linking to record", ClassDocGrid.DT_RESULTFILES.Rows.Count))
If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then
Me.Close()
End If
If CURRENT_LINK_ENTITY_ID = 0 Then
Refresh_Grid_Data(True, Nothing)
CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID
Else
Dim DT_RESULT As DataTable
If CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID Then
DT_RESULT = CURRENT_DT_ENTITY_RECORDS
Else
DT_RESULT = ReturnDataforEntity(CURRENT_LINK_ENTITY_ID)
End If
If Not IsNothing(DT_RESULT) Then
Refresh_Grid_Data(False, DT_RESULT)
End If
End If
Dim DT_ENTITIES As DataTable = GetENTITIES()
Dim oSelectedIndex As Integer = 0
If DT_ENTITIES.Rows.Count = 0 Then
Exit Sub
End If
Dim oCount = 0
For Each row As DataRow In DT_ENTITIES.Rows
Dim entity As New ClassEntity
entity.title = row.Item("FORM_TITLE")
entity.id = row.Item("FORM_ID")
cmbConstructorForms.Items.Add(entity)
If CURRENT_LINK_ENTITY_ID = entity.id Then
txtcurrSichtData.Text = entity.title
oSelectedIndex = oCount
End If
oCount += 1
Next
If USER_LANGUAGE = "de-DE" Then
Me.Text = CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " Datei(en) mit Datensatz verknüpfen:"
Else
Me.Text = "Link " & CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " files with record:"
End If
' Den index der aktuell geöffneten ConstructorForm setzen
cmbConstructorForms.SelectedIndex = oSelectedIndex
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in frmDocRecordLink_Load", ex.Message, ex.StackTrace)
End Try
Load_DocGrid_Layout()
bsiInfo.Caption = "Waiting for record-Selection....."
End If End If
Try
If myDocuments.Count > 0 AndAlso IsNothing(CURRENT_DT_ENTITY_RECORDS) Then
Me.Close()
Return
End If
If CURRENT_LINK_ENTITY_ID = 0 Then
Refresh_Grid_Data(True, Nothing)
CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID
DT_ENTITYDATA = GET_CURRENT_ENTITY_DATA()
Else
Dim DT_RESULT As DataTable
If CURRENT_LINK_ENTITY_ID = CURRENT_ENTITY_ID Then
DT_RESULT = CURRENT_DT_ENTITY_RECORDS
Else
DT_RESULT = ReturnDataforEntity(CURRENT_LINK_ENTITY_ID)
End If
If Not IsNothing(DT_RESULT) Then
DT_ENTITYDATA = DT_RESULT
Refresh_Grid_Data(False, DT_RESULT)
End If
End If
Dim DT_ENTITIES As DataTable = GetENTITIES()
If IsNothing(DT_ENTITIES) OrElse DT_ENTITIES.Rows.Count = 0 Then Exit Sub
Dim oSelectedIndex As Integer = 0
Dim oCount As Integer = 0
For Each row As DataRow In DT_ENTITIES.Rows
Dim entity As New ClassEntity
entity.title = row.Item("FORM_TITLE")
entity.id = row.Item("FORM_ID")
cmbConstructorForms.Items.Add(entity)
If CURRENT_LINK_ENTITY_ID = entity.id Then
txtcurrSichtData.Text = entity.title
oSelectedIndex = oCount
End If
oCount += 1
Next
Me.Text = If(USER_LANGUAGE = "de-DE",
CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " Datei(en) mit Datensatz verknüpfen:",
"Link " & CURRENT_DT_SELECTED_FILES.Rows.Count.ToString & " files with record:")
cmbConstructorForms.SelectedIndex = oSelectedIndex
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in frmDocRecordLink_Load", ex.Message, ex.StackTrace)
End Try
Load_DocGrid_Layout()
bsiInfo.Caption = "Waiting for record-Selection....."
End Sub End Sub
Private Function GetENTITIES() As DataTable Private Function GetENTITIES() As DataTable
Try Try
Dim SQL As String = String.Format("SELECT DISTINCT FORM_ID,FORM_TITLE,SEQUENCE FROM VWPMO_CONSTRUCTOR_FORMS where CONSTRUCT_ID in " & Dim SQL As String = String.Format("SELECT DISTINCT FORM_ID,FORM_TITLE,SEQUENCE FROM VWPMO_CONSTRUCTOR_FORMS " &
"(SELECT CONSTRUCT_ID FROM TBPMO_CONSTRUCTOR_USER WHERE USER_ID = {0}) ORDER BY SEQUENCE", USER_GUID) "where CONSTRUCT_ID in (SELECT CONSTRUCT_ID FROM TBPMO_CONSTRUCTOR_USER WHERE USER_ID = {0}) ORDER BY SEQUENCE", USER_GUID)
Dim dt As DataTable = MYDB_ECM.GetDatatable(SQL) Return MYDB_ECM.GetDatatable(SQL)
Return dt
Catch ex As Exception Catch ex As Exception
MsgBox("Entities could not be loaded in LinkToRecord: " & vbNewLine & ex.Message) MsgBox("Entities could not be loaded in LinkToRecord: " & vbNewLine & ex.Message)
Return Nothing Return Nothing
@@ -187,25 +132,23 @@ Public Class frmDocRecordLink
Try Try
If Not IsNothing(dgEntityRecords.DataSource) Then If Not IsNothing(dgEntityRecords.DataSource) Then
Dim RecordId As Integer = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("Record-ID")) Dim RecordId As Integer = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("Record-ID"))
bsiInfo.Caption = "Record (" & RecordId.ToString & ") selected!" bsiInfo.Caption = "Record (" & RecordId.ToString & ") selected!"
End If End If
Catch ex As Exception Catch ex As Exception
MsgBox("Could not get the RecordID: " & ex.Message, MsgBoxStyle.Exclamation) MsgBox("Could not get the RecordID: " & ex.Message, MsgBoxStyle.Exclamation)
End Try End Try
End Sub End Sub
Sub Save_DocGrid_Layout() Sub Save_DocGrid_Layout()
Try Try
Dim XMLPath = Get_DocGrid_Layout_Filename() Dim XMLPath = Get_DocGrid_Layout_Filename()
grvwGrid.SaveLayoutToXml(XMLPath) grvwGrid.SaveLayoutToXml(XMLPath)
bsiInfo.Caption = "Grid-Layout saved - " + Now.ToLongTimeString bsiInfo.Caption = "Grid-Layout saved - " + Now.ToLongTimeString
Catch ex As Exception Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Save_DocGrid_Layout", ex.Message, ex.StackTrace) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Save_DocGrid_Layout", ex.Message, ex.StackTrace)
End Try End Try
End Sub End Sub
Sub Load_DocGrid_Layout() Sub Load_DocGrid_Layout()
Try Try
Dim XMLPath = Get_DocGrid_Layout_Filename() Dim XMLPath = Get_DocGrid_Layout_Filename()
@@ -213,16 +156,17 @@ Public Class frmDocRecordLink
grvwGrid.RestoreLayoutFromXml(XMLPath) grvwGrid.RestoreLayoutFromXml(XMLPath)
grvwGrid.GuessAutoFilterRowValuesFromFilter() grvwGrid.GuessAutoFilterRowValuesFromFilter()
bsiInfo.Caption = "Grid-Layout loaded - " + Now.ToLongTimeString bsiInfo.Caption = "Grid-Layout loaded - " + Now.ToLongTimeString
End If End If
Catch ex As Exception Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Load_DocGrid_Layout", ex.Message, ex.StackTrace) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Load_DocGrid_Layout", ex.Message, ex.StackTrace)
End Try End Try
End Sub End Sub
Private Function Get_DocGrid_Layout_Filename()
Private Function Get_DocGrid_Layout_Filename() As String
Dim Filename As String = String.Format("GridViewDocRecordLink-{0}-UserLayout.xml", CURRENT_LINK_ENTITY_ID) Dim Filename As String = String.Format("GridViewDocRecordLink-{0}-UserLayout.xml", CURRENT_LINK_ENTITY_ID)
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename) Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
End Function End Function
Private Sub frmDocRecordLink_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing Private Sub frmDocRecordLink_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If ENTITY_LOAD_ACTIVE = False Then Save_DocGrid_Layout() If ENTITY_LOAD_ACTIVE = False Then Save_DocGrid_Layout()
End Sub End Sub
@@ -231,6 +175,7 @@ Public Class frmDocRecordLink
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
If cmbConstructorForms.SelectedIndex <> -1 Then If cmbConstructorForms.SelectedIndex <> -1 Then
Dim entity As ClassEntity = DirectCast(cmbConstructorForms.SelectedItem, ClassEntity) Dim entity As ClassEntity = DirectCast(cmbConstructorForms.SelectedItem, ClassEntity)
LOGGER.Debug("Selected Entity: {0} (ID: {1})", entity.title, entity.id)
ENTITY_LOAD_ACTIVE = True ENTITY_LOAD_ACTIVE = True
dgEntityRecords.DataSource = Nothing dgEntityRecords.DataSource = Nothing
grvwGrid.Columns.Clear() grvwGrid.Columns.Clear()
@@ -240,23 +185,26 @@ Public Class frmDocRecordLink
CURRENT_LINK_ENTITY_ID = entity.id CURRENT_LINK_ENTITY_ID = entity.id
txtcurrSichtData.Text = entity.title txtcurrSichtData.Text = entity.title
DT_ENTITYDATA = DT_RESULT DT_ENTITYDATA = DT_RESULT
LOGGER.Debug("Data for Entity {0} loaded with {1} records", entity.title, DT_RESULT.Rows.Count)
Refresh_Grid_Data(False, DT_RESULT) Refresh_Grid_Data(False, DT_RESULT)
End If End If
Load_DocGrid_Layout() Load_DocGrid_Layout()
Else Else
bsiInfo.Caption = "Bitte wöhlen Sie eine Sicht aus! " + Now.ToShortTimeString bsiInfo.Caption = "Bitte wählen Sie eine Sicht aus! " + Now.ToShortTimeString
End If End If
' FIX Problem A: ENTITY_LOAD_ACTIVE nach abgeschlossenem Ladevorgang zurücksetzen
ENTITY_LOAD_ACTIVE = False
Me.Cursor = Cursors.Default Me.Cursor = Cursors.Default
End Sub End Sub
Private Function ReturnDataforEntity(oEntityID As Integer) As DataTable Private Function ReturnDataforEntity(oEntityID As Integer) As DataTable
Dim ResultSQL, ResultViewName As String Dim ResultSQL, ResultViewName As String
LOGGER.Debug("GridType = Grid") LOGGER.Debug("GridType = Grid")
ResultViewName = $"VWPMO_ENTITY_TABLE{oEntityID}" ResultViewName = $"VWPMO_ENTITY_TABLE{oEntityID}"
bsitmSource.Caption = $"Source: " + ResultViewName bsitmSource.Caption = $"Source: " + ResultViewName
ResultSQL = $"SELECT T.* FROM {ResultViewName} T" ResultSQL = $"SELECT T.* FROM {ResultViewName} T"
LOGGER.Debug("ResultSQL: " & ResultSQL) LOGGER.Debug("Executing SQL to load entity data: " & ResultSQL)
Return MYDB_ECM.GetDatatable(ResultSQL) Return MYDB_ECM.GetDatatable(ResultSQL)
End Function End Function
@@ -269,15 +217,13 @@ Public Class frmDocRecordLink
Dim selectedRows As Integer() = grvwGrid.GetSelectedRows() Dim selectedRows As Integer() = grvwGrid.GetSelectedRows()
Dim oLinkCount As Integer = 0 Dim oLinkCount As Integer = 0
LOGGER.Info("Start der Verknüpfung - Es wurden [{0}] Datensätze ausgewählt!", selectedRows.Count) LOGGER.Info("Start der Verknüpfung - Es wurden [{0}] Datensätze ausgewählt!", selectedRows.Count)
For Each rowhandle As Integer In selectedRows For Each rowhandle As Integer In selectedRows
Dim oSelectedRecordID = grvwGrid.GetRowCellValue(rowhandle, "Record-ID") Dim oSelectedRecordID = grvwGrid.GetRowCellValue(rowhandle, "Record-ID")
If IsNothing(oSelectedRecordID) Then If IsNothing(oSelectedRecordID) Then Continue For
Continue For
End If
Try Try
For Each oRow As DataRow In CURRENT_DT_SELECTED_FILES.Rows For Each oRow As DataRow In CURRENT_DT_SELECTED_FILES.Rows
Dim oDocID As Integer Dim oDocID As Integer = oRow.Item("DOC_ID")
oDocID = oRow.Item("DOC_ID")
LOGGER.Info("DocID {0} will be linked with Record {1} ", oDocID.ToString, oSelectedRecordID.ToString) LOGGER.Info("DocID {0} will be linked with Record {1} ", oDocID.ToString, oSelectedRecordID.ToString)
Dim DOC_PATH = oRow.Item("FILEPATH") Dim DOC_PATH = oRow.Item("FILEPATH")
Dim _objecttype = oRow.Item("OBJECTTYPE") Dim _objecttype = oRow.Item("OBJECTTYPE")
@@ -307,12 +253,13 @@ Public Class frmDocRecordLink
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Linking Record to file", ex.Message, ex.StackTrace) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Linking Record to file", ex.Message, ex.StackTrace)
End Try End Try
Next Next
Dim omsg = $"[{oLinkCount}] Datensätze erfolgreich verknüpft! - {Now.ToShortTimeString}"
If USER_LANGUAGE <> "de-DE" Then Dim omsg = If(USER_LANGUAGE = "de-DE",
omsg = $"[{oLinkCount}] records successfully linked - {Now.ToShortTimeString}" $"[{oLinkCount}] Datensätze erfolgreich verknüpft! - {Now.ToShortTimeString}",
End If $"[{oLinkCount}] records successfully linked - {Now.ToShortTimeString}")
MsgBox(omsg, MsgBoxStyle.Information, "orgFLOW") MsgBox(omsg, MsgBoxStyle.Information, "orgFLOW")
DT_ENTITYDATA = ReturnDataforEntity(CURRENT_LINK_ENTITY_ID)
Refresh_Grid_Data(False, DT_ENTITYDATA) Refresh_Grid_Data(False, DT_ENTITYDATA)
Load_DocGrid_Layout() Load_DocGrid_Layout()
grvwGrid.ClearSelection() grvwGrid.ClearSelection()
@@ -325,14 +272,14 @@ Public Class frmDocRecordLink
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmresetlayout.ItemClick Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmresetlayout.ItemClick
Reset_View_layout() Reset_View_layout()
End Sub End Sub
Sub Reset_View_layout() Sub Reset_View_layout()
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
Try Try
Dim XMLPath = Get_DocGrid_Layout_Filename() Dim XMLPath = Get_DocGrid_Layout_Filename()
If File.Exists(XMLPath) Then If File.Exists(XMLPath) Then
File.Delete(XMLPath) File.Delete(XMLPath)
Refresh_Grid_Data(True, Nothing) Refresh_Grid_Data(False, DT_ENTITYDATA)
Else Else
MsgBox("Resetting the layout was not successful - File not existing!", MsgBoxStyle.Information) MsgBox("Resetting the layout was not successful - File not existing!", MsgBoxStyle.Information)
End If End If

View File

@@ -1,4 +1,5 @@
Imports System.Globalization Imports System.ComponentModel
Imports System.Globalization
Imports System.Net Imports System.Net
Imports System.Threading Imports System.Threading
'Imports DD_LIB_Standards' 'Imports DD_LIB_Standards'
@@ -985,14 +986,14 @@ Public Class frmMain
'ClassProxy.MyPROXYConnectionString = oSqlcon_Proxy 'ClassProxy.MyPROXYConnectionString = oSqlcon_Proxy
End If End If
Dim sql = String.Format("UPDATE TBPMO_CLIENT_CONN_SWITCH_USER SET ACTIVE = 1 WHERE GUID = {0}", oINACTIVE_GUID) Dim sql = String.Format("UPDATE TBPMO_CLIENT_CONN_SWITCH_USER SET ACTIVE = 1 WHERE GUID = {0}", oINACTIVE_GUID)
MYDB_ECM.GetScalarValue(SQL) MYDB_ECM.GetScalarValue(sql)
If ClassInit.InitDatabase = True Then If ClassInit.InitDatabase = True Then
ClassInit.InitUserLogin() ClassInit.InitUserLogin()
Load_Connection_Dep_Data() Load_Connection_Dep_Data()
sql = String.Format("UPDATE TBPMO_CLIENT_CONN_SWITCH_USER SET ACTIVE = 1 WHERE UPPER(CONN_NAME) = UPPER('{0}') AND USER_ID = {1}", oSQLDescription, USER_GUID) sql = String.Format("UPDATE TBPMO_CLIENT_CONN_SWITCH_USER SET ACTIVE = 1 WHERE UPPER(CONN_NAME) = UPPER('{0}') AND USER_ID = {1}", oSQLDescription, USER_GUID)
Dim oSuccess As Boolean = False Dim oSuccess As Boolean = False
If MYDB_ECM.ExecuteNonQuery(Sql) = True Then If MYDB_ECM.ExecuteNonQuery(sql) = True Then
oSuccess = True oSuccess = True
End If End If
If oSuccess = True Then If oSuccess = True Then
@@ -1029,4 +1030,19 @@ Public Class frmMain
Private Sub ADDIBeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ADDIBeendenToolStripMenuItem.Click Private Sub ADDIBeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ADDIBeendenToolStripMenuItem.Click
Me.Close() Me.Close()
End Sub End Sub
Private Sub frmMain_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
If Not IsNothing(WMMOD) Then
LOGGER.Debug("Closing frmMain - Now logging out...")
Try
WMMOD.Session.Logout()
LOGGER.Debug("WINDREAM_MOD Session logg ed out successfully.")
Catch ex As Exception
LOGGER.Warn("Error while logging out WINDREAM_MOD Session: {0}", ex.Message)
LOGGER.Error(ex)
End Try
End If
End Sub
End Class End Class

View File

@@ -178,7 +178,7 @@ Public Class frmNodeNavigation
' "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, oConstructID) ' "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, oConstructID)
'DT_VWPMO_CONSTRUCTOR_FORMS = MYDB_ECM.GetDatatable(Sql) 'DT_VWPMO_CONSTRUCTOR_FORMS = MYDB_ECM.GetDatatable(Sql)
CURRENT_DT_TBPMO_ENTITY_RIGHT_CONTROLS = MYDB_ECM.GetDatatable(String.Format("SELECT T.* FROM TBPMO_ENTITY_RIGHT_CONTROLS T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID where T1.CONSTRUCT_ID = {0}", CONSTRUCTORID)) CURRENT_DT_TBPMO_ENTITY_RIGHT_CONTROLS = MYDB_ECM.GetDatatable(String.Format("SELECT T.* FROM TBPMO_ENTITY_RIGHT_CONTROLS T WITH (NOLOCK) INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID where T1.CONSTRUCT_ID = {0}", CONSTRUCTORID))
Try Try
If DocumentViewer.Init(LOGCONFIG, MYGDPICTURE_LICENSE_KEY, New DigitalData.Controls.DocumentViewer.DocumentViewer.ToolbarSettings() With { If DocumentViewer.Init(LOGCONFIG, MYGDPICTURE_LICENSE_KEY, New DigitalData.Controls.DocumentViewer.DocumentViewer.ToolbarSettings() With {
.ShowPrintButton = True, .ShowPrintButton = True,
@@ -214,8 +214,8 @@ Public Class frmNodeNavigation
'End If 'End If
ClassWindowLocation.LoadFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "NODE_NAVIGATION") ClassWindowLocation.LoadFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "NODE_NAVIGATION")
Try Try
DT_CONSTRUCT_VIEW = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WHERE GUID = " & CONSTRUCTORID) DT_CONSTRUCT_VIEW = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WITH (NOLOCK) WHERE GUID = " & CONSTRUCTORID)
Dim SEL1 = String.Format("SELECT * FROM TBPMO_FORM WHERE GUID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {0} AND CONSTRUCT_ID = {1})", CURRENT_SCREEN_ID, CONSTRUCTORID) Dim SEL1 = String.Format("SELECT * FROM TBPMO_FORM WITH (NOLOCK) WHERE GUID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {0} AND CONSTRUCT_ID = {1})", CURRENT_SCREEN_ID, CONSTRUCTORID)
DT_ENTITY_DATA = MYDB_ECM.GetDatatable(SEL1) DT_ENTITY_DATA = MYDB_ECM.GetDatatable(SEL1)
SEL1 = String.Format("SELECT *, dbo.FNPMO_GET_CONTROL_CAPTION ('{0}', 1, CONTROL_ID) AS 'CAPTION' FROM VWPMO_CONTROL_SCREEN", USER_LANGUAGE) SEL1 = String.Format("SELECT *, dbo.FNPMO_GET_CONTROL_CAPTION ('{0}', 1, CONTROL_ID) AS 'CAPTION' FROM VWPMO_CONTROL_SCREEN", USER_LANGUAGE)
@@ -255,7 +255,7 @@ Public Class frmNodeNavigation
Dim oTable = Await ClassNodeCommands.LoadNodes(CURRENT_ENTITY_ID) Dim oTable = Await ClassNodeCommands.LoadNodes(CURRENT_ENTITY_ID)
DT_STRUCTURE_NODES = oTable DT_STRUCTURE_NODES = oTable
Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID) Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T WITH (NOLOCK) INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID)
Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql) Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql)
Dim imageInit = TryCast(ImageCollection1, System.ComponentModel.ISupportInitialize) Dim imageInit = TryCast(ImageCollection1, System.ComponentModel.ISupportInitialize)
@@ -375,9 +375,6 @@ Public Class frmNodeNavigation
RPGNodes.Enabled = True RPGNodes.Enabled = True
Dim oNodeId = e.Node.Id Dim oNodeId = e.Node.Id
Console.Write($"Node ID: {oNodeId}")
Dim oRowObject = TreeListDevexpress.GetRow(oNodeId) Dim oRowObject = TreeListDevexpress.GetRow(oNodeId)
@@ -385,9 +382,7 @@ Public Class frmNodeNavigation
Exit Sub Exit Sub
End If End If
'If oNodeId = 0 Then NNLogger.Debug($"FocusedNodeChanged: NodeID={oNodeId}, NodeCaption='{e.Node.GetDisplayText("NODE_CAPTION")}', NodeConfigID={e.Node.GetValue("NODE_CONFIG_ID")}, RecordID={e.Node.GetValue("RECORD_ID")}")
' Exit Sub
'End If
Dim oRowView As DataRowView = oRowObject Dim oRowView As DataRowView = oRowObject
Dim oRow As DataRow = oRowView.Row Dim oRow As DataRow = oRowView.Row
@@ -716,7 +711,7 @@ Public Class frmNodeNavigation
End Sub End Sub
Sub Load_Adding_users() Sub Load_Adding_users()
Try Try
Dim oSql = String.Format("SELECT * FROM TBPMO_ENTITY_USERRIGHT_ADDING where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID) Dim oSql = String.Format("SELECT * FROM TBPMO_ENTITY_USERRIGHT_ADDING WITH (NOLOCK) where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID)
DT_ADDING_USERS = MYDB_ECM.GetDatatable(oSql) DT_ADDING_USERS = MYDB_ECM.GetDatatable(oSql)
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex) NNLogger.Error(ex)
@@ -726,7 +721,7 @@ Public Class frmNodeNavigation
Private Sub Load_Configurable_Nodes() Private Sub Load_Configurable_Nodes()
Try Try
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never 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) Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION WITH (NOLOCK) where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID)
DT_CONFIGURABLE_NODES = MYDB_ECM.GetDatatable(oSql) DT_CONFIGURABLE_NODES = MYDB_ECM.GetDatatable(oSql)
NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " & NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " &
@@ -863,7 +858,7 @@ Public Class frmNodeNavigation
ADD_RECORDS_CONSTR = True ADD_RECORDS_CONSTR = True
End Try End Try
If ENTITY_TYPE = "Personal file" Then If ENTITY_TYPE = "Personal file" Then
Dim oSQL = "SELECT CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'PA_NODE_GUID_STAMM'" Dim oSQL = "SELECT CAT_STRING FROM TBDD_CATALOG WITH (NOLOCK) WHERE CAT_TITLE = 'PA_NODE_GUID_STAMM'"
PA_NODE_GUID_STAMM = MYDB_ECM.GetScalarValue(oSQL) PA_NODE_GUID_STAMM = MYDB_ECM.GetScalarValue(oSQL)
oSQL = "SELECT CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'PA_NODE_CONFIG_USER_STAMM'" oSQL = "SELECT CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'PA_NODE_CONFIG_USER_STAMM'"
PA_NODE_CONFIG_USER_STAMM = MYDB_ECM.GetScalarValue(oSQL) PA_NODE_CONFIG_USER_STAMM = MYDB_ECM.GetScalarValue(oSQL)
@@ -886,9 +881,9 @@ Public Class frmNodeNavigation
'sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = {0} AND oEntityID = {1}", USER_GUID, oEntityID) 'sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = {0} AND oEntityID = {1}", USER_GUID, oEntityID)
DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & _ENTITY_ID, "") DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & _ENTITY_ID, "")
expression = String.Format("") expression = String.Format("")
sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", _ENTITY_ID, USER_GUID) sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WITH (NOLOCK) WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WITH (NOLOCK) WHERE USER_ID = {1})", _ENTITY_ID, USER_GUID)
DT_RIGHTS_GROUP = MYDB_ECM.GetDatatable(sql) DT_RIGHTS_GROUP = MYDB_ECM.GetDatatable(sql)
sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, _ENTITY_ID, USER_GUID) sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WITH (NOLOCK) WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, _ENTITY_ID, USER_GUID)
_RECORD_ID = 0 _RECORD_ID = 0
@@ -935,7 +930,6 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile") ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile")
Else Else
CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & _ENTITY_ID CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & _ENTITY_ID
' Dim SQL_AutoValues = "SELECT GUID AS CONTROL_ID, CONNECTION_ID_1 AS CONNECTION_ID, SQL_COMMAND_1 AS SQL_COMMAND FROM TBPMO_CONTROL WHERE CONNECTION_ID_1 <> '' AND SQL_COMMAND_1 <> '' AND FORM_ID = " & oEntityID
Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & _ENTITY_ID, "") Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & _ENTITY_ID, "")
@@ -980,7 +974,7 @@ Public Class frmNodeNavigation
CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN, CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN,
COALESCE(CHANGED_WHO,'') AS CHANGED_WHO, COALESCE(CHANGED_WHO,'') AS CHANGED_WHO,
COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN
FROM TBPMO_RECORD WHERE GUID = {RecordId}" FROM TBPMO_RECORD WITH (NOLOCK) WHERE GUID = {RecordId}"
Dim oTable As DataTable Dim oTable As DataTable
oTable = MYDB_ECM.GetDatatable(oSql) oTable = MYDB_ECM.GetDatatable(oSql)
@@ -1032,64 +1026,48 @@ Public Class frmNodeNavigation
Private Async Function Show_Selected_Record_Data(pRecordId As Integer, pLoadRecordData As Boolean) As Task Private Async Function Show_Selected_Record_Data(pRecordId As Integer, pLoadRecordData As Boolean) As Task
Dim oHandle As IOverlaySplashScreenHandle = Nothing Dim oHandle As IOverlaySplashScreenHandle = Nothing
Try Try
' ✅ 1. SPLASHSCREEN FÜR CRITICAL-PATH (Control-Loading)
oHandle = SplashScreenManager.ShowOverlayForm(Me) oHandle = SplashScreenManager.ShowOverlayForm(Me)
NNLogger.Debug("[OVERLAY] ShowOverlayForm called at {0}", Now.ToString("HH:mm:ss.fff"))
' ✅ 2. DEBUG LOGGING (wie Original)
NNLogger.Debug("Show_Selected_Record_Data_NonBlocking: RecordID={0}, LoadData={1}", pRecordId, pLoadRecordData) NNLogger.Debug("Show_Selected_Record_Data_NonBlocking: RecordID={0}, LoadData={1}", pRecordId, pLoadRecordData)
' ✅ 3. ENTITY-ROW laden (wie Original)
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable() Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
Select form Select form
Where form.Item("GUID") = _ENTITY_ID).Single() Where form.Item("GUID") = _ENTITY_ID).Single()
NNLogger.Debug("RECORD ID: {0}", pRecordId) NNLogger.Debug("RECORD ID: {0}", pRecordId)
' ✅ 4. GLOBALE VARIABLEN setzen (wie Original)
CURRENT_PARENT_RECORD_ID = 0 CURRENT_PARENT_RECORD_ID = 0
RIGHT_CONTROL_CHANGED = False RIGHT_CONTROL_CHANGED = False
ENTITY_RELOAD_AFT_CONTROL_LOAD = False ENTITY_RELOAD_AFT_CONTROL_LOAD = False
' ✅ 5. PANEL aktivieren
If pnlControls.Enabled = False Then pnlControls.Enabled = True If pnlControls.Enabled = False Then pnlControls.Enabled = True
' ✅ 6. CONTROL-LOADING (CRITICAL PATH - blockierend mit Splashscreen)
Dim sw As New SW("Show_Selected_Record_Data - Control Loading") Dim sw As New SW("Show_Selected_Record_Data - Control Loading")
If pLoadRecordData = True Then If pLoadRecordData = True Then
CtrlBuilder.WatchRecordChanges = False CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValues(_RECORD_ID, 0, _ENTITY_ID, CtrlBuilder.AllControls, _ENTITY_ID) ClassControlValues.LoadControlValues(_RECORD_ID, 0, _ENTITY_ID, CtrlBuilder.AllControls, _ENTITY_ID)
CtrlBuilder.WatchRecordChanges = True CtrlBuilder.WatchRecordChanges = True
End If End If
sw.Done() sw.Done()
' ✅ 7. RECORD_CHANGED zurücksetzen (wie Original)
RECORD_CHANGED = False RECORD_CHANGED = False
' ✅ 8. RECORD-LABEL aktualisieren (synchron, schnell)
Update_Record_Label(_RECORD_ID) Update_Record_Label(_RECORD_ID)
' ✅ 9. SPLASHSCREEN SCHLIESSEN - Critical-Path abgeschlossen! ' ── ControlLoading abgeschlossen, Overlay bleibt bis DocSearch fertig ──
If oHandle IsNot Nothing Then NNLogger.Debug("[OVERLAY] Kept open - handing to RUN_DOCSEARCH at {0}", Now.ToString("HH:mm:ss.fff"))
SplashScreenManager.CloseOverlayForm(oHandle)
oHandle = Nothing
End If
' ══════════════════════════════════════════════════════════════ Update_Document_Label(0)
' ✅ AB HIER: NON-BLOCKING BACKGROUND-TASKS Update_Notification_Label(True, "Loading documents...", "Blue")
' ══════════════════════════════════════════════════════════════
' ✅ 10. UI-FEEDBACK: Zeige dass DocSearch läuft
Update_Document_Label(0) ' "Loading documents..."
Update_Notification_Label(True, "Loading documents in background...", "Blue")
RibbonPageGroupDocResult.Enabled = False RibbonPageGroupDocResult.Enabled = False
' ✅ 11. DOCSEARCH IM HINTERGRUND (ohne UI-Freeze) NNLogger.Debug("[DOCSEARCH] RUN_DOCSEARCH START at {0}", Now.ToString("HH:mm:ss.fff"))
NNLogger.Debug("Starting background DocSearch for RecordID={0}", pRecordId)
Dim oDocumentsFound As Integer = 0 Dim oDocumentsFound As Integer = 0
Try Try
' DocSearch ohne Splashscreen ausführen ' ✅ FIX: oHandle wird übergeben RUN_DOCSEARCH schließt es nach FillColumns
oDocumentsFound = Await RUN_DOCSEARCH(False) oDocumentsFound = Await RUN_DOCSEARCH(False, oHandle)
oHandle = Nothing ' ← Ownership übertragen, nicht nochmal schließen
NNLogger.Debug("DocSearch completed: {0} documents found", oDocumentsFound) NNLogger.Debug("[DOCSEARCH] RUN_DOCSEARCH END at {0} - {1} documents found", Now.ToString("HH:mm:ss.fff"), oDocumentsFound)
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex, "Error in background DocSearch") NNLogger.Error(ex, "Error in background DocSearch")
@@ -1097,22 +1075,17 @@ Public Class frmNodeNavigation
oDocumentsFound = 0 oDocumentsFound = 0
End Try End Try
' ✅ 12. UI-UPDATE NACH DOCSEARCH
Update_Document_Label(oDocumentsFound) Update_Document_Label(oDocumentsFound)
Update_Notification_Label(False, "", "") ' Notification ausblenden Update_Notification_Label(False, "", "")
' ✅ 13. DOCVIEWER-HANDLING (wie Original)
If DocViewInitialized Then If DocViewInitialized Then
If oDocumentsFound = 0 Then If oDocumentsFound = 0 Then
Close_Document_Viewer() Close_Document_Viewer()
RibbonPageGroupDocResult.Enabled = False RibbonPageGroupDocResult.Enabled = False
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
NNLogger.Debug("No documents found - DocViewer collapsed") NNLogger.Debug("No documents found - DocViewer collapsed")
Else Else
RibbonPageGroupDocResult.Enabled = True RibbonPageGroupDocResult.Enabled = True
' ✅ Original-Logik: Node_AfterSelect-Check
If Node_AfterSelect = False Then If Node_AfterSelect = False Then
UpdateDocViewCollapsedState() UpdateDocViewCollapsedState()
NNLogger.Debug("Documents found - DocView state updated") NNLogger.Debug("Documents found - DocView state updated")
@@ -1120,9 +1093,6 @@ Public Class frmNodeNavigation
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
NNLogger.Debug("Node_AfterSelect=True - DocView collapsed") NNLogger.Debug("Node_AfterSelect=True - DocView collapsed")
End If End If
' ✅ OPTIONAL: DocView im Hintergrund laden (falls aktiviert)
' ✅ Direkt awaiten statt Task.Run wir sind bereits im Async-Kontext
If checkShowPreview.Checked AndAlso Not Node_AfterSelect Then If checkShowPreview.Checked AndAlso Not Node_AfterSelect Then
NNLogger.Debug("Starting DocView loading") NNLogger.Debug("Starting DocView loading")
Await DocView_DisplaySelectedDoc(AfterNodeChange:=False) Await DocView_DisplaySelectedDoc(AfterNodeChange:=False)
@@ -1135,11 +1105,11 @@ Public Class frmNodeNavigation
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex, "Error in Show_Selected_Record_Data_NonBlocking") NNLogger.Error(ex, "Error in Show_Selected_Record_Data_NonBlocking")
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in SelectedRecord_ShowData: ", ex.Message) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in SelectedRecord_ShowData: ", ex.Message)
Finally Finally
' ✅ SICHERSTELLEN: Splashscreen wird IMMER geschlossen ' ✅ Sicherheitsnetz: schließen falls RUN_DOCSEARCH es nicht übernommen hat
If oHandle IsNot Nothing Then If oHandle IsNot Nothing Then
Try Try
NNLogger.Debug("[OVERLAY] CloseOverlayForm (Finally-Fallback) at {0}", Now.ToString("HH:mm:ss.fff"))
SplashScreenManager.CloseOverlayForm(oHandle) SplashScreenManager.CloseOverlayForm(oHandle)
Catch ex As Exception Catch ex As Exception
NNLogger.Warn(ex, "Could not close overlay form") NNLogger.Warn(ex, "Could not close overlay form")
@@ -1742,7 +1712,7 @@ Public Class frmNodeNavigation
#End Region #End Region
Private Sub Customer_Run_Procedures() Private Sub Customer_Run_Procedures()
Try Try
Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & _ENTITY_ID) Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WITH (NOLOCK) WHERE FORM_ID = " & _ENTITY_ID)
If Not DT Is Nothing Then If Not DT Is Nothing Then
For Each row As DataRow In DT.Rows For Each row As DataRow In DT.Rows
Dim prsql As String = row.Item("EXECUTE_COMMAND") Dim prsql As String = row.Item("EXECUTE_COMMAND")
@@ -1757,17 +1727,19 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Customer_Run_Procedures: ", ex.Message) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Customer_Run_Procedures: ", ex.Message)
End Try End Try
End Sub End Sub
Private Async Function RUN_DOCSEARCH(pShowSplashscreen As Boolean) As Task(Of Integer) Private Async Function RUN_DOCSEARCH(pShowSplashscreen As Boolean,
Dim oHandle As IOverlaySplashScreenHandle Optional pExternalHandle As IOverlaySplashScreenHandle = Nothing) As Task(Of Integer)
Dim oHandle As IOverlaySplashScreenHandle = pExternalHandle ' ← externer Handle übernommen
If pShowSplashscreen Then If pShowSplashscreen Then
oHandle = SplashScreenManager.ShowOverlayForm(Me) oHandle = SplashScreenManager.ShowOverlayForm(Me)
NNLogger.Debug("[OVERLAY] RUN_DOCSEARCH ShowOverlayForm at {0}", Now.ToString("HH:mm:ss.fff"))
End If End If
Dim sw As New SW("RUN_WDSEARCH_GRID") Dim sw As New SW("RUN_WDSEARCH_GRID")
Dim oFilesFound As Integer = 0 Dim oFilesFound As Integer = 0
Try Try
If _RECORD_ID = 0 Then If _RECORD_ID = 0 Then
GridControlDocSearch.DataSource = Nothing GridControlDocSearch.DataSource = Nothing
Return 0 Return 0
@@ -1775,59 +1747,58 @@ Public Class frmNodeNavigation
bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Always bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
If CURRENT_SEARCH_TYPE = "NODE_DOWN" Then If CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
Dim sql = String.Format("DECLARE @return_value int " & vbNewLine & Dim sql = String.Format("DECLARE @return_value int " & vbNewLine &
"EXEC @return_value = [dbo].[PRPMO_NODES_GET_CHILD_RECORDS] @USER_ID = {0}, @NODE_ID = {1} " & vbNewLine & "EXEC @return_value = [dbo].[PRPMO_NODES_GET_CHILD_RECORDS] @USER_ID = {0}, @NODE_ID = {1} " & vbNewLine &
"SELECT 'Return Value' = @return_value", USER_GUID, _NODE_GUID) "SELECT 'Return Value' = @return_value", USER_GUID, _NODE_GUID)
Dim DT_ASYNC As DataTable = Await MYDB_ECM.GetDatatableAsync(sql) Dim DT_ASYNC As DataTable = Await MYDB_ECM.GetDatatableAsync(sql)
If Not IsNothing(DT_ASYNC) Then If Not IsNothing(DT_ASYNC) Then
Dim result = DT_ASYNC.Rows(0).Item(0) Dim result = DT_ASYNC.Rows(0).Item(0)
If result <> 0 Then If result <> 0 Then
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting SubNodes-Structure", "Check the logfile") ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting SubNodes-Structure", "Check the logfile")
End If End If
End If End If
End If End If
NNLogger.Debug("[DOCSEARCH] Get_DOC_RESULTTABLE START at {0}", Now.ToString("HH:mm:ss.fff"))
Dim DT_RESULT As DataTable Dim DT_RESULT As DataTable
DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _ENTITY_ID, _RECORD_ID, True) DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _ENTITY_ID, _RECORD_ID, True)
NNLogger.Debug("[DOCSEARCH] Get_DOC_RESULTTABLE END at {0} - Rows={1}", Now.ToString("HH:mm:ss.fff"), If(IsNothing(DT_RESULT), "Nothing", DT_RESULT.Rows.Count.ToString()))
If IsNothing(DT_RESULT) Then If IsNothing(DT_RESULT) Then
Dim msg = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data" GridViewDoc_Search.ViewCaption = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data"
GridViewDoc_Search.ViewCaption = msg
oFilesFound = 0 oFilesFound = 0
Else Else
If DT_RESULT.Rows.Count > 0 Then 'Es gibt Suchergebnisse If DT_RESULT.Rows.Count > 0 Then
If CURRENT_SEARCH_TYPE = "FULLTEXT" Then
If DT_RESULT.Rows.Count > 0 Then GridViewDoc_Search.ShowFindPanel()
If CURRENT_SEARCH_TYPE = "FULLTEXT" Then GridViewDoc_Search.FindFilterText = CURRENT_FULLTEXT_PATTERN
GridViewDoc_Search.ShowFindPanel() End If
GridViewDoc_Search.FindFilterText = CURRENT_FULLTEXT_PATTERN If Not IsNothing(DT_DOCRESULT_DROPDOWN_ITEMS) AndAlso DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
End If NNLogger.Info($"RUN_WDSEARCH_GRID - DT_DOCRESULT_DROPDOWN_ITEMS [{DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count}]!")
If Not IsNothing(DT_DOCRESULT_DROPDOWN_ITEMS) Then End If
If DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
NNLogger.Info($"RUN_WDSEARCH_GRID - DT_DOCRESULT_DROPDOWN_ITEMS [{DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count}]!") NNLogger.Debug("[DOCSEARCH] FillColumns START at {0}", Now.ToString("HH:mm:ss.fff"))
End If ClassDocGrid.FillColumns(
End If GridViewDoc_Search,
DT_RESULT,
DT_COLUMNS_GRID_ENTITY,
ClassDocGrid.FillColumns( DT_DOCRESULT_DROPDOWN_ITEMS,
GridViewDoc_Search, AddressOf OnCBSelectedValueChanged,
DT_RESULT, AddressOf OnDateSelectedValueChanged,
DT_COLUMNS_GRID_ENTITY, AddressOf OnTextSelectedValueChanged,
DT_DOCRESULT_DROPDOWN_ITEMS, AddressOf OnCheckboxValueChanged,
AddressOf OnCBSelectedValueChanged, CURRENT_SEARCH_TYPE, _RECORD_ID)
AddressOf OnDateSelectedValueChanged, NNLogger.Debug("[DOCSEARCH] FillColumns END at {0}", Now.ToString("HH:mm:ss.fff"))
AddressOf OnTextSelectedValueChanged,
AddressOf OnCheckboxValueChanged, ' ✅ FIX: Overlay NACH FillColumns schließen
CURRENT_SEARCH_TYPE, _RECORD_ID) If oHandle IsNot Nothing Then
NNLogger.Debug("[OVERLAY] CloseOverlayForm after FillColumns at {0}", Now.ToString("HH:mm:ss.fff"))
SplashScreenManager.CloseOverlayForm(oHandle)
oHandle = Nothing
End If End If
'BbtnitmDocSearch.Enabled = TruefRe
oFilesFound = DT_RESULT.Rows.Count oFilesFound = DT_RESULT.Rows.Count
Else Else
GridControlDocSearch.DataSource = Nothing GridControlDocSearch.DataSource = Nothing
oFilesFound = 0 oFilesFound = 0
End If End If
@@ -1840,10 +1811,16 @@ Public Class frmNodeNavigation
sw.Done() sw.Done()
bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Never bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Update_Notification_Label(False, "", "") Update_Notification_Label(False, "", "")
If pShowSplashscreen Then
' ✅ Sicherheitsnetz: Handle schließen falls FillColumns-Pfad nicht erreicht wurde (0 Rows / Fehler)
If oHandle IsNot Nothing Then
NNLogger.Debug("[OVERLAY] CloseOverlayForm (RUN_DOCSEARCH Finally-Fallback) at {0}", Now.ToString("HH:mm:ss.fff"))
SplashScreenManager.CloseOverlayForm(oHandle) SplashScreenManager.CloseOverlayForm(oHandle)
End If End If
If pShowSplashscreen Then
NNLogger.Debug("[OVERLAY] RUN_DOCSEARCH own handle closed at {0}", Now.ToString("HH:mm:ss.fff"))
End If
End Try End Try
Return oFilesFound Return oFilesFound
@@ -1851,7 +1828,7 @@ Public Class frmNodeNavigation
Private Sub RUN_ENTITY_DOC_SEARCH() Private Sub RUN_ENTITY_DOC_SEARCH()
Dim sw As New SW("RUN_ENTITY_DOC_SEARCH") Dim sw As New SW("RUN_ENTITY_DOC_SEARCH")
Try Try
Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {_ENTITY_ID}" Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WITH (NOLOCK) WHERE GUID = {_ENTITY_ID}"
CURRENT_DOCSEARCH_SQL = MYDB_ECM.GetScalarValue(oSQL) CURRENT_DOCSEARCH_SQL = MYDB_ECM.GetScalarValue(oSQL)
If CURRENT_DOCSEARCH_SQL <> String.Empty Then If CURRENT_DOCSEARCH_SQL <> String.Empty Then
Dim oText = $"Die sichtweite Suche wird im Hintergrund ausgeführt und in einem separaten Fenster angezeigt sobald sie fertig ist." Dim oText = $"Die sichtweite Suche wird im Hintergrund ausgeführt und in einem separaten Fenster angezeigt sobald sie fertig ist."
@@ -2555,7 +2532,7 @@ Public Class frmNodeNavigation
Dim oErrorCount As Integer = 0 Dim oErrorCount As Integer = 0
For Each pDocId In pDocIds For Each pDocId In pDocIds
Dim oSql = $"IF NOT EXISTS (SELECT 1 FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = {pDocId} AND RECORD_ID = {_RECORD_ID}) " & Dim oSql = $"IF NOT EXISTS (SELECT 1 FROM TBPMO_DOC_RECORD_LINK WITH (NOLOCK) WHERE DOC_ID = {pDocId} AND RECORD_ID = {_RECORD_ID}) " &
$"INSERT INTO TBPMO_DOC_RECORD_LINK (DOC_ID, RECORD_ID, ADDED_WHO, ADDED_WHEN) " & $"INSERT INTO TBPMO_DOC_RECORD_LINK (DOC_ID, RECORD_ID, ADDED_WHO, ADDED_WHEN) " &
$"VALUES ({pDocId}, {_RECORD_ID}, '{USER_USERNAME}', GETDATE())" $"VALUES ({pDocId}, {_RECORD_ID}, '{USER_USERNAME}', GETDATE())"
@@ -2950,7 +2927,7 @@ Public Class frmNodeNavigation
Dim oDocuments = Current_DocList.SelectedDocuments Dim oDocuments = Current_DocList.SelectedDocuments
If oDocuments.Count = 1 Then If oDocuments.Count = 1 Then
Try Try
Dim oSQLDRList = $"Select COALESCE(IN_WORK_USER,'') IN_WORK_USER, COALESCE(IN_WORK_COMMENT,'') IN_WORK_COMMENT,IN_WORK FROM TBPMO_DOCRESULT_LIST where DocID = {oDocuments.First.DocId}" Dim oSQLDRList = $"Select COALESCE(IN_WORK_USER,'') IN_WORK_USER, COALESCE(IN_WORK_COMMENT,'') IN_WORK_COMMENT,IN_WORK FROM TBPMO_DOCRESULT_LIST WITH (NOLOCK) where DocID = {oDocuments.First.DocId}"
Dim oDT As DataTable = MYDB_ECM.GetDatatable(oSQLDRList) Dim oDT As DataTable = MYDB_ECM.GetDatatable(oSQLDRList)
If Not IsNothing(oDT) Then If Not IsNothing(oDT) Then
If oDT.Rows.Count = 1 Then If oDT.Rows.Count = 1 Then
@@ -3261,6 +3238,7 @@ Public Class frmNodeNavigation
ClassFileResult.DocID = oDocuments.First.DocId ClassFileResult.DocID = oDocuments.First.DocId
ClassFileResult.ParentID = oDocuments.First.ParentID ClassFileResult.ParentID = oDocuments.First.ParentID
ClassFileResult.FileName = oDocuments.First.Filename ClassFileResult.FileName = oDocuments.First.Filename
ClassFileResult.DocumentPath = oDocuments.First.DocPath
frmWM_CreateVersion.ShowDialog() frmWM_CreateVersion.ShowDialog()
Await RUN_DOCSEARCH(True) Await RUN_DOCSEARCH(True)
Else Else
@@ -3783,7 +3761,7 @@ Public Class frmNodeNavigation
Dim oDElWMFile As Boolean = False Dim oDElWMFile As Boolean = False
Dim oCountLinks As Integer Dim oCountLinks As Integer
If Not IsNothing(oDoc.DocId) Then If Not IsNothing(oDoc.DocId) Then
oCountLinks = MYDB_ECM.GetScalarValue("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & oDoc.DocId) oCountLinks = MYDB_ECM.GetScalarValue("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WITH (NOLOCK) WHERE DOC_ID = " & oDoc.DocId)
If oCountLinks > 1 And CURRENT_SEARCH_TYPE = "RECORD" Then If oCountLinks > 1 And CURRENT_SEARCH_TYPE = "RECORD" Then
msg = "Diese Datei ist noch mit anderen Datensätzen verknüpft! Wollen Sie diese Verknüpfungen ebenfalls löschen?" msg = "Diese Datei ist noch mit anderen Datensätzen verknüpft! Wollen Sie diese Verknüpfungen ebenfalls löschen?"
If USER_LANGUAGE <> "de-DE" Then If USER_LANGUAGE <> "de-DE" Then
@@ -3839,7 +3817,7 @@ Public Class frmNodeNavigation
Private Sub TimerFileHandle_Tick(sender As Object, e As EventArgs) Handles TimerFileHandle.Tick Private Sub TimerFileHandle_Tick(sender As Object, e As EventArgs) Handles TimerFileHandle.Tick
Try Try
Dim oSql = $"SELECT GUID FROM TBPMO_DOC_USER_REFRESH_VIEW WHERE USER_ID IN ({USER_GUID},0) AND REFRESHED_WHEN IS NULL" Dim oSql = $"SELECT GUID FROM TBPMO_DOC_USER_REFRESH_VIEW WITH (NOLOCK) WHERE USER_ID IN ({USER_GUID},0) AND REFRESHED_WHEN IS NULL"
Dim oDTGUID As DataTable = MYDB_ECM.GetDatatable(oSql) Dim oDTGUID As DataTable = MYDB_ECM.GetDatatable(oSql)
If oDTGUID.Rows.Count >= 1 Then If oDTGUID.Rows.Count >= 1 Then
Dim omsg = "Attention: The DocID of one document changed or a document has been versioned! The DocSearch has been refreshed!" Dim omsg = "Attention: The DocID of one document changed or a document has been versioned! The DocSearch has been refreshed!"
@@ -3984,7 +3962,7 @@ Public Class frmNodeNavigation
If mySelectedDocs.Count = 1 Then If mySelectedDocs.Count = 1 Then
Dim oDocId As Integer = mySelectedDocs.First.DocId Dim oDocId As Integer = mySelectedDocs.First.DocId
Dim oJumpToDocSQL = String.Format("DECLARE @PID BIGINT Dim oJumpToDocSQL = String.Format("DECLARE @PID BIGINT
SELECT @PID = dwParentID FROM TBPMO_DOCRESULT_LIST WHERE DocID = {0} SELECT @PID = dwParentID FROM TBPMO_DOCRESULT_LIST WITH (NOLOCK) WHERE DocID = {0}
SELECT GUID FROM VWPMO_STRUCTURE_NODES WHERE ENTITY_ID = {1} AND ISNUMERIC(ID1) = 1 AND ID1 = @PID", oDocId, OF_FILESTORE_ENTITY) SELECT GUID FROM VWPMO_STRUCTURE_NODES WHERE ENTITY_ID = {1} AND ISNUMERIC(ID1) = 1 AND ID1 = @PID", oDocId, OF_FILESTORE_ENTITY)
Dim ojumpID As Integer = MYDB_ECM.GetScalarValue(oJumpToDocSQL) Dim ojumpID As Integer = MYDB_ECM.GetScalarValue(oJumpToDocSQL)
If Not IsNothing(ojumpID) AndAlso ojumpID <> 0 Then If Not IsNothing(ojumpID) AndAlso ojumpID <> 0 Then

View File

@@ -13,11 +13,11 @@ Public Class frmWM_CreateVersion
'Dim odwVersionId = MYDB_ECM.GetScalarValue(oSql) 'Dim odwVersionId = MYDB_ECM.GetScalarValue(oSql)
'Dim oInsert = $"INSERT INTO TBPMO_DOC_ID_CHANGED (USER_ID,PROCESS_ID,VERSION_ID,OLD_DOC_ID,DOC_PATH) VALUES ({USER_GUID},'{ProcID.ToString}',{odwVersionId},{BW_DocID},'{BW_DocPath}')" 'Dim oInsert = $"INSERT INTO TBPMO_DOC_ID_CHANGED (USER_ID,PROCESS_ID,VERSION_ID,OLD_DOC_ID,DOC_PATH) VALUES ({USER_GUID},'{ProcID.ToString}',{odwVersionId},{BW_DocID},'{BW_DocPath}')"
'MYDB_ECM.ExecuteNonQuery(oInsert) 'MYDB_ECM.ExecuteNonQuery(oInsert)
Dim sql = $"SELECT DocID from VWPMO_DOC_SYNC Where dwParentID = {ClassFileResult.ParentID} and Filename = '{ClassFileResult.FileName}'" Dim sql = $"SELECT Version from VWPMO_DOC_SYNC Where dwParentID = {ClassFileResult.ParentID} and Filename = '{ClassFileResult.FileName}'"
Dim VERSION = MYDB_ECM.GetScalarValue(sql) Dim oVERSION = MYDB_ECM.GetScalarValue(sql)
If Not IsNothing(VERSION) Then If Not IsNothing(oVERSION) Then
VERSION = VERSION + 1 oVERSION = oVERSION
Dim upd = String.Format("UPDATE TBPMO_DOCRESULT_LIST SET Version = {0},Change_DateTime = GETDATE() WHERE DocID = {1}", VERSION, ClassFileResult.DocID) Dim upd = String.Format("UPDATE TBPMO_DOCRESULT_LIST SET Version = {0},Change_DateTime = GETDATE() WHERE DocID = {1}", oVERSION, ClassFileResult.DocID)
MYDB_ECM.ExecuteNonQuery(upd) MYDB_ECM.ExecuteNonQuery(upd)
End If End If

View File

@@ -9,8 +9,6 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RecordOrganizer_RightManage
EndProject EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup_NoUpdaterVS19", "Setup_NoUpdaterVS19\Setup_NoUpdaterVS19.wixproj", "{A7F7585A-C46A-4436-9F6E-17629325CE58}" Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup_NoUpdaterVS19", "Setup_NoUpdaterVS19\Setup_NoUpdaterVS19.wixproj", "{A7F7585A-C46A-4436-9F6E-17629325CE58}"
EndProject EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Windream", "..\..\..\2_DLL Projekte\DDModules\Windream\Windream.vbproj", "{C602BA85-5E75-6E19-C485-79D912038170}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
CD_ROM|Any CPU = CD_ROM|Any CPU CD_ROM|Any CPU = CD_ROM|Any CPU
@@ -143,46 +141,6 @@ Global
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x64.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x64.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.Build.0 = Release|x86
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|x64.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|x64.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|x86.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.CD_ROM|x86.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|x64.ActiveCfg = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|x64.Build.0 = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|x86.ActiveCfg = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Debug|x86.Build.0 = Debug|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|Any CPU.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|Any CPU.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|Mixed Platforms.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|Mixed Platforms.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|x64.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|x64.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|x86.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.DVD-5|x86.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|Any CPU.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|x64.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|x64.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|x86.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.Release|x86.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|Any CPU.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|x64.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|x64.Build.0 = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|x86.ActiveCfg = Release|Any CPU
{C602BA85-5E75-6E19-C485-79D912038170}.SingleImage|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE