Versionierung windream, DocRecordLink, Overlay in NodeNavigation
This commit is contained in:
@@ -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)
|
||||
'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
|
||||
If DocumentViewer.Init(LOGCONFIG, MYGDPICTURE_LICENSE_KEY, New DigitalData.Controls.DocumentViewer.DocumentViewer.ToolbarSettings() With {
|
||||
.ShowPrintButton = True,
|
||||
@@ -214,8 +214,8 @@ Public Class frmNodeNavigation
|
||||
'End If
|
||||
ClassWindowLocation.LoadFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "NODE_NAVIGATION")
|
||||
Try
|
||||
DT_CONSTRUCT_VIEW = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR 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)
|
||||
DT_CONSTRUCT_VIEW = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WITH (NOLOCK) WHERE GUID = " & 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)
|
||||
|
||||
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)
|
||||
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 imageInit = TryCast(ImageCollection1, System.ComponentModel.ISupportInitialize)
|
||||
@@ -375,9 +375,6 @@ Public Class frmNodeNavigation
|
||||
RPGNodes.Enabled = True
|
||||
|
||||
Dim oNodeId = e.Node.Id
|
||||
Console.Write($"Node ID: {oNodeId}")
|
||||
|
||||
|
||||
|
||||
Dim oRowObject = TreeListDevexpress.GetRow(oNodeId)
|
||||
|
||||
@@ -385,9 +382,7 @@ Public Class frmNodeNavigation
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'If oNodeId = 0 Then
|
||||
' Exit Sub
|
||||
'End If
|
||||
NNLogger.Debug($"FocusedNodeChanged: NodeID={oNodeId}, NodeCaption='{e.Node.GetDisplayText("NODE_CAPTION")}', NodeConfigID={e.Node.GetValue("NODE_CONFIG_ID")}, RecordID={e.Node.GetValue("RECORD_ID")}")
|
||||
|
||||
Dim oRowView As DataRowView = oRowObject
|
||||
Dim oRow As DataRow = oRowView.Row
|
||||
@@ -716,7 +711,7 @@ Public Class frmNodeNavigation
|
||||
End Sub
|
||||
Sub Load_Adding_users()
|
||||
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)
|
||||
Catch ex As Exception
|
||||
NNLogger.Error(ex)
|
||||
@@ -726,7 +721,7 @@ Public Class frmNodeNavigation
|
||||
Private Sub Load_Configurable_Nodes()
|
||||
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)
|
||||
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)
|
||||
|
||||
NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " &
|
||||
@@ -863,7 +858,7 @@ Public Class frmNodeNavigation
|
||||
ADD_RECORDS_CONSTR = True
|
||||
End Try
|
||||
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)
|
||||
oSQL = "SELECT CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'PA_NODE_CONFIG_USER_STAMM'"
|
||||
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)
|
||||
DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & _ENTITY_ID, "")
|
||||
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)
|
||||
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
|
||||
@@ -935,7 +930,6 @@ Public Class frmNodeNavigation
|
||||
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile")
|
||||
Else
|
||||
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, "")
|
||||
|
||||
@@ -980,7 +974,7 @@ Public Class frmNodeNavigation
|
||||
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 WHERE GUID = {RecordId}"
|
||||
FROM TBPMO_RECORD WITH (NOLOCK) WHERE GUID = {RecordId}"
|
||||
|
||||
Dim oTable As DataTable
|
||||
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
|
||||
Dim oHandle As IOverlaySplashScreenHandle = Nothing
|
||||
Try
|
||||
' ✅ 1. SPLASHSCREEN FÜR CRITICAL-PATH (Control-Loading)
|
||||
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)
|
||||
|
||||
' ✅ 3. ENTITY-ROW laden (wie Original)
|
||||
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
|
||||
Select form
|
||||
Where form.Item("GUID") = _ENTITY_ID).Single()
|
||||
NNLogger.Debug("RECORD ID: {0}", pRecordId)
|
||||
' ✅ 4. GLOBALE VARIABLEN setzen (wie Original)
|
||||
|
||||
CURRENT_PARENT_RECORD_ID = 0
|
||||
RIGHT_CONTROL_CHANGED = False
|
||||
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
||||
' ✅ 5. PANEL aktivieren
|
||||
|
||||
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")
|
||||
If pLoadRecordData = True Then
|
||||
CtrlBuilder.WatchRecordChanges = False
|
||||
ClassControlValues.LoadControlValues(_RECORD_ID, 0, _ENTITY_ID, CtrlBuilder.AllControls, _ENTITY_ID)
|
||||
CtrlBuilder.WatchRecordChanges = True
|
||||
End If
|
||||
|
||||
sw.Done()
|
||||
|
||||
' ✅ 7. RECORD_CHANGED zurücksetzen (wie Original)
|
||||
RECORD_CHANGED = False
|
||||
|
||||
' ✅ 8. RECORD-LABEL aktualisieren (synchron, schnell)
|
||||
Update_Record_Label(_RECORD_ID)
|
||||
|
||||
' ✅ 9. SPLASHSCREEN SCHLIESSEN - Critical-Path abgeschlossen!
|
||||
If oHandle IsNot Nothing Then
|
||||
SplashScreenManager.CloseOverlayForm(oHandle)
|
||||
oHandle = Nothing
|
||||
End If
|
||||
' ── ControlLoading abgeschlossen, Overlay bleibt bis DocSearch fertig ──
|
||||
NNLogger.Debug("[OVERLAY] Kept open - handing to RUN_DOCSEARCH at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
|
||||
' ══════════════════════════════════════════════════════════════
|
||||
' ✅ AB HIER: NON-BLOCKING BACKGROUND-TASKS
|
||||
' ══════════════════════════════════════════════════════════════
|
||||
|
||||
' ✅ 10. UI-FEEDBACK: Zeige dass DocSearch läuft
|
||||
Update_Document_Label(0) ' "Loading documents..."
|
||||
Update_Notification_Label(True, "Loading documents in background...", "Blue")
|
||||
Update_Document_Label(0)
|
||||
Update_Notification_Label(True, "Loading documents...", "Blue")
|
||||
RibbonPageGroupDocResult.Enabled = False
|
||||
|
||||
' ✅ 11. DOCSEARCH IM HINTERGRUND (ohne UI-Freeze)
|
||||
NNLogger.Debug("Starting background DocSearch for RecordID={0}", pRecordId)
|
||||
|
||||
NNLogger.Debug("[DOCSEARCH] RUN_DOCSEARCH START at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
Dim oDocumentsFound As Integer = 0
|
||||
|
||||
Try
|
||||
' DocSearch ohne Splashscreen ausführen
|
||||
oDocumentsFound = Await RUN_DOCSEARCH(False)
|
||||
|
||||
NNLogger.Debug("DocSearch completed: {0} documents found", oDocumentsFound)
|
||||
' ✅ FIX: oHandle wird übergeben – RUN_DOCSEARCH schließt es nach FillColumns
|
||||
oDocumentsFound = Await RUN_DOCSEARCH(False, oHandle)
|
||||
oHandle = Nothing ' ← Ownership übertragen, nicht nochmal schließen
|
||||
NNLogger.Debug("[DOCSEARCH] RUN_DOCSEARCH END at {0} - {1} documents found", Now.ToString("HH:mm:ss.fff"), oDocumentsFound)
|
||||
|
||||
Catch ex As Exception
|
||||
NNLogger.Error(ex, "Error in background DocSearch")
|
||||
@@ -1097,22 +1075,17 @@ Public Class frmNodeNavigation
|
||||
oDocumentsFound = 0
|
||||
End Try
|
||||
|
||||
' ✅ 12. UI-UPDATE NACH DOCSEARCH
|
||||
Update_Document_Label(oDocumentsFound)
|
||||
Update_Notification_Label(False, "", "") ' Notification ausblenden
|
||||
Update_Notification_Label(False, "", "")
|
||||
|
||||
' ✅ 13. DOCVIEWER-HANDLING (wie Original)
|
||||
If DocViewInitialized Then
|
||||
If oDocumentsFound = 0 Then
|
||||
Close_Document_Viewer()
|
||||
RibbonPageGroupDocResult.Enabled = False
|
||||
SplitContainerDocView.Collapsed = True
|
||||
|
||||
NNLogger.Debug("No documents found - DocViewer collapsed")
|
||||
Else
|
||||
RibbonPageGroupDocResult.Enabled = True
|
||||
|
||||
' ✅ Original-Logik: Node_AfterSelect-Check
|
||||
If Node_AfterSelect = False Then
|
||||
UpdateDocViewCollapsedState()
|
||||
NNLogger.Debug("Documents found - DocView state updated")
|
||||
@@ -1120,9 +1093,6 @@ Public Class frmNodeNavigation
|
||||
SplitContainerDocView.Collapsed = True
|
||||
NNLogger.Debug("Node_AfterSelect=True - DocView collapsed")
|
||||
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
|
||||
NNLogger.Debug("Starting DocView loading")
|
||||
Await DocView_DisplaySelectedDoc(AfterNodeChange:=False)
|
||||
@@ -1135,11 +1105,11 @@ Public Class frmNodeNavigation
|
||||
Catch ex As Exception
|
||||
NNLogger.Error(ex, "Error in Show_Selected_Record_Data_NonBlocking")
|
||||
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in SelectedRecord_ShowData: ", ex.Message)
|
||||
|
||||
Finally
|
||||
' ✅ SICHERSTELLEN: Splashscreen wird IMMER geschlossen
|
||||
' ✅ Sicherheitsnetz: schließen falls RUN_DOCSEARCH es nicht übernommen hat
|
||||
If oHandle IsNot Nothing Then
|
||||
Try
|
||||
NNLogger.Debug("[OVERLAY] CloseOverlayForm (Finally-Fallback) at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
SplashScreenManager.CloseOverlayForm(oHandle)
|
||||
Catch ex As Exception
|
||||
NNLogger.Warn(ex, "Could not close overlay form")
|
||||
@@ -1742,7 +1712,7 @@ Public Class frmNodeNavigation
|
||||
#End Region
|
||||
Private Sub Customer_Run_Procedures()
|
||||
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
|
||||
For Each row As DataRow In DT.Rows
|
||||
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)
|
||||
End Try
|
||||
End Sub
|
||||
Private Async Function RUN_DOCSEARCH(pShowSplashscreen As Boolean) As Task(Of Integer)
|
||||
Dim oHandle As IOverlaySplashScreenHandle
|
||||
Private Async Function RUN_DOCSEARCH(pShowSplashscreen As Boolean,
|
||||
Optional pExternalHandle As IOverlaySplashScreenHandle = Nothing) As Task(Of Integer)
|
||||
Dim oHandle As IOverlaySplashScreenHandle = pExternalHandle ' ← externer Handle übernommen
|
||||
|
||||
If pShowSplashscreen Then
|
||||
oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
||||
NNLogger.Debug("[OVERLAY] RUN_DOCSEARCH ShowOverlayForm at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
End If
|
||||
|
||||
Dim sw As New SW("RUN_WDSEARCH_GRID")
|
||||
Dim oFilesFound As Integer = 0
|
||||
|
||||
Try
|
||||
|
||||
If _RECORD_ID = 0 Then
|
||||
GridControlDocSearch.DataSource = Nothing
|
||||
Return 0
|
||||
@@ -1775,59 +1747,58 @@ Public Class frmNodeNavigation
|
||||
|
||||
bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
||||
If CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
|
||||
|
||||
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 &
|
||||
"SELECT 'Return Value' = @return_value", USER_GUID, _NODE_GUID)
|
||||
Dim DT_ASYNC As DataTable = Await MYDB_ECM.GetDatatableAsync(sql)
|
||||
|
||||
If Not IsNothing(DT_ASYNC) Then
|
||||
Dim result = DT_ASYNC.Rows(0).Item(0)
|
||||
If result <> 0 Then
|
||||
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting SubNodes-Structure", "Check the logfile")
|
||||
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
|
||||
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
|
||||
Dim msg = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data"
|
||||
GridViewDoc_Search.ViewCaption = msg
|
||||
GridViewDoc_Search.ViewCaption = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data"
|
||||
oFilesFound = 0
|
||||
Else
|
||||
If DT_RESULT.Rows.Count > 0 Then 'Es gibt Suchergebnisse
|
||||
|
||||
If DT_RESULT.Rows.Count > 0 Then
|
||||
If CURRENT_SEARCH_TYPE = "FULLTEXT" Then
|
||||
GridViewDoc_Search.ShowFindPanel()
|
||||
GridViewDoc_Search.FindFilterText = CURRENT_FULLTEXT_PATTERN
|
||||
End If
|
||||
If Not IsNothing(DT_DOCRESULT_DROPDOWN_ITEMS) Then
|
||||
If DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
|
||||
NNLogger.Info($"RUN_WDSEARCH_GRID - DT_DOCRESULT_DROPDOWN_ITEMS [{DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count}]!")
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
ClassDocGrid.FillColumns(
|
||||
GridViewDoc_Search,
|
||||
DT_RESULT,
|
||||
DT_COLUMNS_GRID_ENTITY,
|
||||
DT_DOCRESULT_DROPDOWN_ITEMS,
|
||||
AddressOf OnCBSelectedValueChanged,
|
||||
AddressOf OnDateSelectedValueChanged,
|
||||
AddressOf OnTextSelectedValueChanged,
|
||||
AddressOf OnCheckboxValueChanged,
|
||||
CURRENT_SEARCH_TYPE, _RECORD_ID)
|
||||
|
||||
If DT_RESULT.Rows.Count > 0 Then
|
||||
If CURRENT_SEARCH_TYPE = "FULLTEXT" Then
|
||||
GridViewDoc_Search.ShowFindPanel()
|
||||
GridViewDoc_Search.FindFilterText = CURRENT_FULLTEXT_PATTERN
|
||||
End If
|
||||
If Not IsNothing(DT_DOCRESULT_DROPDOWN_ITEMS) AndAlso DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
|
||||
NNLogger.Info($"RUN_WDSEARCH_GRID - DT_DOCRESULT_DROPDOWN_ITEMS [{DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count}]!")
|
||||
End If
|
||||
|
||||
NNLogger.Debug("[DOCSEARCH] FillColumns START at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
ClassDocGrid.FillColumns(
|
||||
GridViewDoc_Search,
|
||||
DT_RESULT,
|
||||
DT_COLUMNS_GRID_ENTITY,
|
||||
DT_DOCRESULT_DROPDOWN_ITEMS,
|
||||
AddressOf OnCBSelectedValueChanged,
|
||||
AddressOf OnDateSelectedValueChanged,
|
||||
AddressOf OnTextSelectedValueChanged,
|
||||
AddressOf OnCheckboxValueChanged,
|
||||
CURRENT_SEARCH_TYPE, _RECORD_ID)
|
||||
NNLogger.Debug("[DOCSEARCH] FillColumns END at {0}", Now.ToString("HH:mm:ss.fff"))
|
||||
|
||||
' ✅ FIX: Overlay NACH FillColumns schließen
|
||||
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
|
||||
'BbtnitmDocSearch.Enabled = TruefRe
|
||||
|
||||
oFilesFound = DT_RESULT.Rows.Count
|
||||
Else
|
||||
|
||||
GridControlDocSearch.DataSource = Nothing
|
||||
oFilesFound = 0
|
||||
End If
|
||||
@@ -1840,10 +1811,16 @@ Public Class frmNodeNavigation
|
||||
sw.Done()
|
||||
bsitmtInfoDoc.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
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)
|
||||
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
|
||||
|
||||
Return oFilesFound
|
||||
@@ -1851,7 +1828,7 @@ Public Class frmNodeNavigation
|
||||
Private Sub RUN_ENTITY_DOC_SEARCH()
|
||||
Dim sw As New SW("RUN_ENTITY_DOC_SEARCH")
|
||||
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)
|
||||
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."
|
||||
@@ -2555,7 +2532,7 @@ Public Class frmNodeNavigation
|
||||
Dim oErrorCount As Integer = 0
|
||||
|
||||
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) " &
|
||||
$"VALUES ({pDocId}, {_RECORD_ID}, '{USER_USERNAME}', GETDATE())"
|
||||
|
||||
@@ -2950,7 +2927,7 @@ Public Class frmNodeNavigation
|
||||
Dim oDocuments = Current_DocList.SelectedDocuments
|
||||
If oDocuments.Count = 1 Then
|
||||
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)
|
||||
If Not IsNothing(oDT) Then
|
||||
If oDT.Rows.Count = 1 Then
|
||||
@@ -3261,6 +3238,7 @@ Public Class frmNodeNavigation
|
||||
ClassFileResult.DocID = oDocuments.First.DocId
|
||||
ClassFileResult.ParentID = oDocuments.First.ParentID
|
||||
ClassFileResult.FileName = oDocuments.First.Filename
|
||||
ClassFileResult.DocumentPath = oDocuments.First.DocPath
|
||||
frmWM_CreateVersion.ShowDialog()
|
||||
Await RUN_DOCSEARCH(True)
|
||||
Else
|
||||
@@ -3783,7 +3761,7 @@ Public Class frmNodeNavigation
|
||||
Dim oDElWMFile As Boolean = False
|
||||
Dim oCountLinks As Integer
|
||||
If Not IsNothing(oDoc.DocId) Then
|
||||
oCountLinks = MYDB_ECM.GetScalarValue("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & oDoc.DocId)
|
||||
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
|
||||
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
|
||||
@@ -3839,7 +3817,7 @@ Public Class frmNodeNavigation
|
||||
|
||||
Private Sub TimerFileHandle_Tick(sender As Object, e As EventArgs) Handles TimerFileHandle.Tick
|
||||
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)
|
||||
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!"
|
||||
@@ -3984,7 +3962,7 @@ Public Class frmNodeNavigation
|
||||
If mySelectedDocs.Count = 1 Then
|
||||
Dim oDocId As Integer = mySelectedDocs.First.DocId
|
||||
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)
|
||||
Dim ojumpID As Integer = MYDB_ECM.GetScalarValue(oJumpToDocSQL)
|
||||
If Not IsNothing(ojumpID) AndAlso ojumpID <> 0 Then
|
||||
|
||||
Reference in New Issue
Block a user