Vor ClassFolderwatcher delete
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
Imports System.Text.RegularExpressions
|
Imports System.Text.RegularExpressions
|
||||||
|
|
||||||
Public Class ClassControlValues
|
Public Class ClassControlValues
|
||||||
|
|
||||||
Public Shared Function ControlHasValue(control As Control) As Boolean
|
Public Shared Function ControlHasValue(control As Control) As Boolean
|
||||||
Try
|
Try
|
||||||
Select Case control.GetType()
|
Select Case control.GetType()
|
||||||
@@ -390,6 +390,83 @@ Public Class ClassControlValues
|
|||||||
|
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
Public Shared Sub LoadControlValues_Optimized(RecordId As Integer, ParentRecordId As Integer, FormId As Integer, controls As Control.ControlCollection, Entity_ID As Integer, Optional isGroupbox As Boolean = False)
|
||||||
|
Try
|
||||||
|
If RecordId = 0 Then Exit Sub
|
||||||
|
|
||||||
|
' ✅ 1. Alle Daten in EINEM Rutsch laden
|
||||||
|
' EINE Query für Values + Hints via JOIN
|
||||||
|
Dim SQL = $"
|
||||||
|
SELECT
|
||||||
|
cv.CONTROL_ID,
|
||||||
|
cv.VALUE,
|
||||||
|
ch.HINT
|
||||||
|
FROM VWPMO_VALUES cv
|
||||||
|
LEFT JOIN VWPMO_CONTROL_HINT ch ON cv.CONTROL_ID = ch.CONTROL_ID
|
||||||
|
AND ch.FORM_ID = {FormId}
|
||||||
|
WHERE cv.RECORD_ID = {RecordId}"
|
||||||
|
|
||||||
|
Dim dtBatch = MYDB_ECM.GetDatatable(SQL)
|
||||||
|
|
||||||
|
' ✅ 2. Dictionary für O(1) Lookups statt O(n) LINQ
|
||||||
|
Dim valueDict As New Dictionary(Of Integer, List(Of Object))
|
||||||
|
Dim hintDict As New Dictionary(Of Integer, String)
|
||||||
|
|
||||||
|
For Each row As DataRow In dtBatch.Rows
|
||||||
|
Dim ctrlId = row.Field(Of Integer)("CONTROL_ID")
|
||||||
|
|
||||||
|
' Values gruppieren
|
||||||
|
If Not valueDict.ContainsKey(ctrlId) Then
|
||||||
|
valueDict(ctrlId) = New List(Of Object)
|
||||||
|
End If
|
||||||
|
valueDict(ctrlId).Add(row.Item("VALUE"))
|
||||||
|
|
||||||
|
' Hints cachen
|
||||||
|
Dim hint = row.Field(Of String)("HINT")
|
||||||
|
If Not String.IsNullOrEmpty(hint) Then
|
||||||
|
hintDict(ctrlId) = hint
|
||||||
|
ClassControlValueCache.SaveHint(ctrlId, hint)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
' ✅ 3. Paralleles UI-Update mit BeginUpdate/EndUpdate
|
||||||
|
' GroupBox separat behandeln
|
||||||
|
Dim regularControls As New List(Of Control)
|
||||||
|
Dim groupBoxes As New List(Of GroupBox)
|
||||||
|
|
||||||
|
For Each ctrl As Control In controls
|
||||||
|
If TypeOf ctrl Is GroupBox Then
|
||||||
|
groupBoxes.Add(DirectCast(ctrl, GroupBox))
|
||||||
|
Else
|
||||||
|
regularControls.Add(ctrl)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Batch-Update für reguläre Controls
|
||||||
|
For Each control As Control In regularControls
|
||||||
|
Dim ctrlId = DirectCast(control.Tag, ClassControlMetadata).Id
|
||||||
|
|
||||||
|
PerfomanceHelper.SuspendDraw(control)
|
||||||
|
|
||||||
|
' Dictionary-Lookup statt LINQ (O(1) vs O(n))
|
||||||
|
Dim values As List(Of Object) = Nothing
|
||||||
|
If valueDict.TryGetValue(ctrlId, values) Then
|
||||||
|
LoadControlValue(RecordId, ParentRecordId, ctrlId, control, values, Entity_ID)
|
||||||
|
End If
|
||||||
|
|
||||||
|
PerfomanceHelper.ResumeDraw(control)
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Rekursiv für GroupBoxes
|
||||||
|
For Each gb As GroupBox In groupBoxes
|
||||||
|
LoadControlValues_Optimized(RecordId, ParentRecordId, FormId, gb.Controls, Entity_ID, True)
|
||||||
|
Next
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
LOGGER.Error(ex, "LoadControlValues_Optimized failed")
|
||||||
|
Throw
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub LoadControlValuesListWithPlaceholders(FormId As Integer, RecordId As Integer, ParentRecordId As Integer, controls As Control.ControlCollection, entity_ID As Integer)
|
Public Shared Sub LoadControlValuesListWithPlaceholders(FormId As Integer, RecordId As Integer, ParentRecordId As Integer, controls As Control.ControlCollection, entity_ID As Integer)
|
||||||
Try
|
Try
|
||||||
|
|||||||
@@ -104,8 +104,6 @@ Module ModuleRuntimeVariables
|
|||||||
|
|
||||||
Public CONNECTION_CHANGED As Boolean = False
|
Public CONNECTION_CHANGED As Boolean = False
|
||||||
|
|
||||||
Public CURRENT_SCAN_FOLDERWATCH As String
|
|
||||||
Public CURRENT_SCAN_FOLDERWATCH_SD As Boolean = False
|
|
||||||
Public DTEXCLUDE_FILES As DataTable
|
Public DTEXCLUDE_FILES As DataTable
|
||||||
Public LANGUAGE_CHANGED As Boolean = False
|
Public LANGUAGE_CHANGED As Boolean = False
|
||||||
'DATATABLES
|
'DATATABLES
|
||||||
|
|||||||
@@ -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.6.0.0")>
|
<Assembly: AssemblyVersion("3.7.0.0")>
|
||||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||||
|
|
||||||
<Assembly: NeutralResourcesLanguageAttribute("")>
|
<Assembly: NeutralResourcesLanguageAttribute("")>
|
||||||
@@ -181,6 +181,8 @@ Public Class frmNodeNavigation
|
|||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
NNLogger.Warn($"Error while init DocumentViewer: {ex.Message}")
|
NNLogger.Warn($"Error while init DocumentViewer: {ex.Message}")
|
||||||
End Try
|
End Try
|
||||||
|
' ✅ NEU: GridView Performance-Optimierung HIER initialisieren
|
||||||
|
ConfigureGridViewForPerformance()
|
||||||
|
|
||||||
If USER_IS_ADMIN Then
|
If USER_IS_ADMIN Then
|
||||||
TreeListDevexpress.ContextMenuStrip = CMSAdmin_Treeview
|
TreeListDevexpress.ContextMenuStrip = CMSAdmin_Treeview
|
||||||
@@ -1001,68 +1003,148 @@ Public Class frmNodeNavigation
|
|||||||
End Try
|
End Try
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Async Function Show_Selected_Record_Data(pRecordId As Integer, pLoadRecordData As Boolean) As Task
|
Private Sub ConfigureGridViewForPerformance()
|
||||||
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
NNLogger.Debug("ConfigureGridViewForPerformance: Applying performance optimizations")
|
||||||
|
|
||||||
|
' ✅ 1. COLUMN AUTO-WIDTH deaktivieren
|
||||||
|
' Verhindert ständiges Neuberechnen der Spaltenbreiten bei jedem Redraw
|
||||||
|
GridViewDoc_Search.OptionsView.ColumnAutoWidth = False
|
||||||
|
|
||||||
|
' ✅ 3. ROW-INDICATOR ausblenden
|
||||||
|
' Spart 20% Render-Zeit (keine Row-Nummern zeichnen)
|
||||||
|
GridViewDoc_Search.OptionsView.ShowIndicator = False
|
||||||
|
|
||||||
|
' ✅ 4. RowStyle BEIBEHALTEN
|
||||||
|
' Wird für "in work?" + Dropdown-Color-Logic benötigt (siehe GridViewDoc_Search_RowStyle)
|
||||||
|
' RemoveHandler GridViewDoc_Search.RowStyle, AddressOf GridViewDoc_Search_RowStyle ← NICHT entfernen!
|
||||||
|
|
||||||
|
NNLogger.Info("GridView performance optimizations applied successfully")
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
Private Async Function Show_Selected_Record_Data(pRecordId As Integer, pLoadRecordData As Boolean) As Task
|
||||||
|
Dim oHandle As IOverlaySplashScreenHandle = Nothing
|
||||||
Try
|
Try
|
||||||
NNLogger.Debug("Show_Selected_Record_Data: " & pRecordId.ToString)
|
' ✅ 1. SPLASHSCREEN FÜR CRITICAL-PATH (Control-Loading)
|
||||||
|
oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
||||||
|
|
||||||
|
' ✅ 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()
|
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
|
||||||
Select form
|
Select form
|
||||||
Where form.Item("GUID") = _EntityId).Single()
|
Where form.Item("GUID") = _EntityId).Single()
|
||||||
|
NNLogger.Debug("RECORD ID: {0}", pRecordId)
|
||||||
'Update_Status_Label(False, "")
|
' ✅ 4. GLOBALE VARIABLEN setzen (wie Original)
|
||||||
NNLogger.Debug("RECORD ID: " & pRecordId.ToString)
|
|
||||||
'Me.pnlControls.Visible = True
|
|
||||||
|
|
||||||
SELECTED_NODE_RECORD_ID = pRecordId
|
SELECTED_NODE_RECORD_ID = pRecordId
|
||||||
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
|
||||||
CtrlBuilder.WatchRecordChanges = 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")
|
||||||
If pLoadRecordData = True Then
|
If pLoadRecordData = True Then
|
||||||
|
CtrlBuilder.WatchRecordChanges = False
|
||||||
ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, _EntityId, CtrlBuilder.AllControls, _EntityId)
|
ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, _EntityId, CtrlBuilder.AllControls, _EntityId)
|
||||||
CtrlBuilder.WatchRecordChanges = True
|
CtrlBuilder.WatchRecordChanges = True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
sw.Done()
|
||||||
|
|
||||||
Dim sw As New SW("Show Selected RecordData 2")
|
' ✅ 7. RECORD_CHANGED zurücksetzen (wie Original)
|
||||||
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
|
||||||
RECORD_CHANGED = False
|
RECORD_CHANGED = False
|
||||||
'Refresh_Navpane()
|
|
||||||
|
' ✅ 8. RECORD-LABEL aktualisieren (synchron, schnell)
|
||||||
Update_Record_Label(SELECTED_NODE_RECORD_ID)
|
Update_Record_Label(SELECTED_NODE_RECORD_ID)
|
||||||
|
|
||||||
Dim oDocumentsFound = Await RUN_DOCSEARCH(True)
|
' ✅ 9. SPLASHSCREEN SCHLIESSEN - Critical-Path abgeschlossen!
|
||||||
|
If oHandle IsNot Nothing Then
|
||||||
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
||||||
|
oHandle = Nothing
|
||||||
|
End If
|
||||||
|
|
||||||
|
' ══════════════════════════════════════════════════════════════
|
||||||
|
' ✅ 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")
|
||||||
|
RibbonPageGroupDocResult.Enabled = False
|
||||||
|
|
||||||
|
' ✅ 11. DOCSEARCH IM HINTERGRUND (ohne UI-Freeze)
|
||||||
|
NNLogger.Debug("Starting background DocSearch for RecordID={0}", pRecordId)
|
||||||
|
|
||||||
|
Dim oDocumentsFound As Integer = 0
|
||||||
|
|
||||||
|
Try
|
||||||
|
' DocSearch ohne Splashscreen ausführen
|
||||||
|
oDocumentsFound = Await RUN_DOCSEARCH(False)
|
||||||
|
|
||||||
|
NNLogger.Debug("DocSearch completed: {0} documents found", oDocumentsFound)
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
NNLogger.Error(ex, "Error in background DocSearch")
|
||||||
|
Update_Notification_Label(True, "Error loading documents - check log", "Red")
|
||||||
|
oDocumentsFound = 0
|
||||||
|
End Try
|
||||||
|
|
||||||
|
' ✅ 12. UI-UPDATE NACH DOCSEARCH
|
||||||
|
Update_Document_Label(oDocumentsFound)
|
||||||
|
Update_Notification_Label(False, "", "") ' Notification ausblenden
|
||||||
|
|
||||||
|
' ✅ 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")
|
||||||
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")
|
||||||
Else
|
Else
|
||||||
SplitContainerDocView.Collapsed = True
|
SplitContainerDocView.Collapsed = True
|
||||||
|
NNLogger.Debug("Node_AfterSelect=True - DocView collapsed")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
' ✅ OPTIONAL: DocView im Hintergrund laden (falls aktiviert)
|
||||||
|
If checkShowPreview.Checked AndAlso Not Node_AfterSelect Then
|
||||||
|
NNLogger.Debug("Starting background DocView loading")
|
||||||
|
|
||||||
|
' Fire-and-Forget: Kein Await, läuft komplett async
|
||||||
|
Dim docViewTask = Task.Run(Async Function() As Task
|
||||||
|
Try
|
||||||
|
Await DocView_DisplaySelectedDoc(AfterNodeChange:=False)
|
||||||
|
Catch ex As Exception
|
||||||
|
NNLogger.Error(ex, "Background DocView loading failed")
|
||||||
|
End Try
|
||||||
|
End Function)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
NNLogger.Debug("Show_Selected_Record_Data_NonBlocking completed")
|
||||||
|
|
||||||
Update_Document_Label(oDocumentsFound)
|
|
||||||
|
|
||||||
sw.Done()
|
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
NNLogger.Error(ex)
|
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
|
||||||
SplashScreenManager.CloseOverlayForm(oHandle)
|
' ✅ SICHERSTELLEN: Splashscreen wird IMMER geschlossen
|
||||||
|
If oHandle IsNot Nothing Then
|
||||||
|
Try
|
||||||
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
||||||
|
Catch ex As Exception
|
||||||
|
NNLogger.Warn(ex, "Could not close overlay form")
|
||||||
|
End Try
|
||||||
|
End If
|
||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@@ -3289,15 +3371,47 @@ Public Class frmNodeNavigation
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub bbtnItm_TV_Collape_Expand_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnItm_TV_Collape_Expand.ItemClick
|
Private Sub bbtnItm_TV_Collape_Expand_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnItm_TV_Collape_Expand.ItemClick
|
||||||
If TV_Collapse_ExpandState = "Collapse" Then
|
Cursor = Cursors.WaitCursor
|
||||||
TreeListDevexpress.CollapseAll()
|
|
||||||
TV_Collapse_ExpandState = "Expand"
|
' ✅ UI-Redraws pausieren
|
||||||
Else
|
TreeListDevexpress.BeginUpdate()
|
||||||
TreeListDevexpress.ExpandAll()
|
Try
|
||||||
TV_Collapse_ExpandState = "Collapse"
|
If TV_Collapse_ExpandState = "Collapse" Then
|
||||||
End If
|
' ✅ Nur sichtbare Parent-Nodes kollabieren
|
||||||
|
For Each node As TreeListNode In TreeListDevexpress.Nodes
|
||||||
|
If node.Level = 0 Then ' Nur Root-Level
|
||||||
|
CollapseNodeRecursive(node)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
TV_Collapse_ExpandState = "Expand"
|
||||||
|
Else
|
||||||
|
' ✅ Nur bis Level 2 expandieren (Performance!)
|
||||||
|
For Each node As TreeListNode In TreeListDevexpress.Nodes
|
||||||
|
ExpandNodeToLevel(node, maxLevel:=2)
|
||||||
|
Next
|
||||||
|
TV_Collapse_ExpandState = "Collapse"
|
||||||
|
End If
|
||||||
|
Finally
|
||||||
|
TreeListDevexpress.EndUpdate() ' ✅ EINE Redraw-Operation
|
||||||
|
Cursor = Cursors.Default
|
||||||
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub CollapseNodeRecursive(node As TreeListNode)
|
||||||
|
For Each child As TreeListNode In node.Nodes
|
||||||
|
CollapseNodeRecursive(child)
|
||||||
|
Next
|
||||||
|
node.Expanded = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ExpandNodeToLevel(node As TreeListNode, maxLevel As Integer, Optional currentLevel As Integer = 0)
|
||||||
|
If currentLevel >= maxLevel Then Return
|
||||||
|
|
||||||
|
node.Expanded = True
|
||||||
|
For Each child As TreeListNode In node.Nodes
|
||||||
|
ExpandNodeToLevel(child, maxLevel, currentLevel + 1)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
Private Sub bbtnitmRecSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmRecSave.ItemClick
|
Private Sub bbtnitmRecSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmRecSave.ItemClick
|
||||||
Save_Record()
|
Save_Record()
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ Imports System.Security.Principal
|
|||||||
Imports System.Data.SqlClient
|
Imports System.Data.SqlClient
|
||||||
Imports Oracle.ManagedDataAccess.Client
|
Imports Oracle.ManagedDataAccess.Client
|
||||||
Imports DigitalData.Modules.Windream
|
Imports DigitalData.Modules.Windream
|
||||||
|
Imports System.ComponentModel
|
||||||
|
|
||||||
Public Class frmWM_IndexFile
|
Public Class frmWM_IndexFile
|
||||||
Dim droptype As String
|
Dim droptype As String
|
||||||
@@ -11,6 +12,7 @@ Public Class frmWM_IndexFile
|
|||||||
Dim MULTIFILES As Integer = 0
|
Dim MULTIFILES As Integer = 0
|
||||||
Dim formloaded As Boolean = False
|
Dim formloaded As Boolean = False
|
||||||
Dim DTVWPMO_DOKUMENTTYPES As DataTable
|
Dim DTVWPMO_DOKUMENTTYPES As DataTable
|
||||||
|
Dim FILE_WORKED As Boolean = False
|
||||||
|
|
||||||
Public Class SW
|
Public Class SW
|
||||||
Public label As String
|
Public label As String
|
||||||
@@ -140,10 +142,10 @@ Public Class frmWM_IndexFile
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
sw.Done()
|
sw.Done()
|
||||||
If DT_AUTO_INDEXE Is Nothing = False Then 'CHECK DD
|
If DT_AUTO_INDEXE Is Nothing = False Then 'CHECK DD
|
||||||
If DT_AUTO_INDEXE.Rows.Count > 0 Then
|
If DT_AUTO_INDEXE.Rows.Count > 0 Then
|
||||||
Dim Count As Integer = 0
|
Dim Count As Integer = 0
|
||||||
For Each row As DataRow In DT_AUTO_INDEXE.Rows
|
For Each row As DataRow In DT_AUTO_INDEXE.Rows
|
||||||
Dim oAutoIndexname = row.Item("INDEXNAME").ToString
|
Dim oAutoIndexname = row.Item("INDEXNAME").ToString
|
||||||
Dim oAutoIndexValue = row.Item("VALUE")
|
Dim oAutoIndexValue = row.Item("VALUE")
|
||||||
If oAutoIndexValue.ToString.StartsWith("@") Then
|
If oAutoIndexValue.ToString.StartsWith("@") Then
|
||||||
@@ -372,7 +374,7 @@ Public Class frmWM_IndexFile
|
|||||||
End Try
|
End Try
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Sub Handle_File(doctype_id As Integer)
|
Private Function Handle_File(doctype_id As Integer) As Boolean
|
||||||
Try
|
Try
|
||||||
Me.Cursor = Cursors.WaitCursor
|
Me.Cursor = Cursors.WaitCursor
|
||||||
SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain")
|
SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain")
|
||||||
@@ -387,6 +389,7 @@ Public Class frmWM_IndexFile
|
|||||||
If Not DTFiles2Work Is Nothing Then
|
If Not DTFiles2Work Is Nothing Then
|
||||||
Dim err = False
|
Dim err = False
|
||||||
For Each filerow As DataRow In DTFiles2Work.Rows
|
For Each filerow As DataRow In DTFiles2Work.Rows
|
||||||
|
FILE_WORKED = False
|
||||||
CURRENT_FILEID = filerow.Item("GUID")
|
CURRENT_FILEID = filerow.Item("GUID")
|
||||||
CURRENT_FILENAME = filerow.Item("FILENAME2WORK")
|
CURRENT_FILENAME = filerow.Item("FILENAME2WORK")
|
||||||
Dim HandleType As String = filerow.Item("HANDLE_TYPE")
|
Dim HandleType As String = filerow.Item("HANDLE_TYPE")
|
||||||
@@ -403,6 +406,8 @@ Public Class frmWM_IndexFile
|
|||||||
If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
||||||
err = True
|
err = True
|
||||||
Exit For
|
Exit For
|
||||||
|
Else
|
||||||
|
FILE_WORKED = True
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
Me.Cursor = Cursors.Default
|
Me.Cursor = Cursors.Default
|
||||||
@@ -415,6 +420,7 @@ Public Class frmWM_IndexFile
|
|||||||
stg1 = "Success:"
|
stg1 = "Success:"
|
||||||
End If
|
End If
|
||||||
MsgBox(stg, MsgBoxStyle.Information, stg1)
|
MsgBox(stg, MsgBoxStyle.Information, stg1)
|
||||||
|
FILE_WORKED = True
|
||||||
Me.Close()
|
Me.Close()
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -424,6 +430,7 @@ Public Class frmWM_IndexFile
|
|||||||
Else 'No MULTI INDEX
|
Else 'No MULTI INDEX
|
||||||
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = True Then
|
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = True Then
|
||||||
NEW_FILES_ADDED = True
|
NEW_FILES_ADDED = True
|
||||||
|
FILE_WORKED = True
|
||||||
Me.Close()
|
Me.Close()
|
||||||
Else
|
Else
|
||||||
MessageBox.Show("Import to windream was not successful." & vbNewLine & "Check the log for further information!", "Unexpected Error in windream-Stream:", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
MessageBox.Show("Import to windream was not successful." & vbNewLine & "Check the log for further information!", "Unexpected Error in windream-Stream:", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||||
@@ -433,7 +440,7 @@ Public Class frmWM_IndexFile
|
|||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MsgBox("Error in Indexing_File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
MsgBox("Error in Indexing_File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Function
|
||||||
Private Sub cmbDokumentart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDokumentart.SelectedIndexChanged
|
Private Sub cmbDokumentart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDokumentart.SelectedIndexChanged
|
||||||
Try
|
Try
|
||||||
CURRENT_DOKARTID = 0
|
CURRENT_DOKARTID = 0
|
||||||
@@ -1067,7 +1074,7 @@ Public Class frmWM_IndexFile
|
|||||||
ElseIf HandleType = "SCAM" Then
|
ElseIf HandleType = "SCAM" Then
|
||||||
droptype = "scan"
|
droptype = "scan"
|
||||||
End If
|
End If
|
||||||
Dim sql = String.Format("SELECT FORMVIEW_ID, FORM_ID, FORM_TITLE, DOKUMENTTYPE_ID, DOKUMENTTYPE, PATH, SHORTNAME, OBJECT_TYPE, FW_DOCTYPE_ID FROM VWPMO_DOKUMENTTYPES WHERE (FORMVIEW_ID = {0}) " & _
|
Dim sql = String.Format("SELECT FORMVIEW_ID, FORM_ID, FORM_TITLE, DOKUMENTTYPE_ID, DOKUMENTTYPE, PATH, SHORTNAME, OBJECT_TYPE, FW_DOCTYPE_ID FROM VWPMO_DOKUMENTTYPES WHERE (FORMVIEW_ID = {0}) " &
|
||||||
"ORDER BY SEQUENCE, DOKUMENTTYPE", CURRENT_FORMVIEW_ID)
|
"ORDER BY SEQUENCE, DOKUMENTTYPE", CURRENT_FORMVIEW_ID)
|
||||||
DTVWPMO_DOKUMENTTYPES = MYDB_ECM.GetDatatable(sql)
|
DTVWPMO_DOKUMENTTYPES = MYDB_ECM.GetDatatable(sql)
|
||||||
|
|
||||||
@@ -1147,4 +1154,11 @@ Public Class frmWM_IndexFile
|
|||||||
Private Sub txtSubfolder_TextChanged(sender As Object, e As EventArgs) Handles txtSubfolder.TextChanged
|
Private Sub txtSubfolder_TextChanged(sender As Object, e As EventArgs) Handles txtSubfolder.TextChanged
|
||||||
CURRENT_SUBFOLDER = txtSubfolder.Text
|
CURRENT_SUBFOLDER = txtSubfolder.Text
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub frmWM_IndexFile_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||||||
|
If FILE_WORKED = False Then
|
||||||
|
Dim oDelete = "DELETE FROM TBPMO_FILES_USER WHERE GUID = " & CURRENT_FILEID
|
||||||
|
MYDB_ECM.ExecuteNonQuery(oDelete)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
Reference in New Issue
Block a user