8 Commits

Author SHA1 Message Date
Developer01
bca424f50f Optimierungen 2026-01-30 14:40:02 +01:00
Developer01
11d27cd860 Create_Basic_View 2026-01-30 13:02:55 +01:00
Developer01
969f27a91f frm main Load Grid Optimierung 2026-01-30 13:00:16 +01:00
Developer01
b7d427b5eb Decide_Load_Speed 2026-01-30 12:56:36 +01:00
Developer01
0f936c71e6 Speed Otimizing Lookp etc 2026-01-30 12:53:01 +01:00
Developer01
a53bfee8d5 ComboBOx Optimierung 2026-01-30 12:13:08 +01:00
Developer01
df4a8df25a Optimierung Speed Load_Next Document 2026-01-30 12:09:21 +01:00
Developer01
0e6848aa69 Hotspots 2026-01-30 11:23:35 +01:00
9 changed files with 699 additions and 512 deletions

View File

@@ -7,6 +7,8 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "SetupVS19", "SetupVS19\Setu
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "taskFLOW", "TaskFlow\taskFLOW.vbproj", "{6ACA1432-09A2-47EF-A704-C0AA73905756}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DocumentViewer", "..\..\..\2_DLL Projekte\Controls.DocumentViewer\DocumentViewer.vbproj", "{0958CDDF-4A16-41F6-8837-8335F71D599C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CD_ROM|Any CPU = CD_ROM|Any CPU
@@ -61,6 +63,26 @@ Global
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|Any CPU.Build.0 = Release|x86
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|x86.ActiveCfg = Debug|x86
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|x86.Build.0 = Debug|x86
{0958CDDF-4A16-41F6-8837-8335F71D599C}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.CD_ROM|x86.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.CD_ROM|x86.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Debug|x86.ActiveCfg = Debug|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Debug|x86.Build.0 = Debug|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.DVD-5|Any CPU.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.DVD-5|Any CPU.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.DVD-5|x86.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.DVD-5|x86.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Release|Any CPU.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Release|x86.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.Release|x86.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.SingleImage|Any CPU.Build.0 = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.SingleImage|x86.ActiveCfg = Release|Any CPU
{0958CDDF-4A16-41F6-8837-8335F71D599C}.SingleImage|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -332,7 +332,7 @@ Public Class ClassControlCreator
End If
If Not designMode Then
'oControl.ReadOnly = oReadOnly
oControl.ReadOnly = oReadOnly
oControl.TabStop = Not oReadOnly
oControl.BackColor = IIf(oReadOnly, Color.LightGray, Color.White)

View File

@@ -34,7 +34,7 @@ Module ModuleRuntimeVariables
Public Property BASEDATA_TBDD_COLUMNS_FORMAT As DataTable
Public Property BASEDATA_TBPM_PROFILE_CONTROLS As DataTable
Public Property CURRENT_ProfilGUID As Integer
Public Property CURRENT_ProfilName As String

View File

@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.7.7.0")>
<Assembly: AssemblyVersion("2.7.8.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguage("")>

View File

@@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw
CAAAAk1TRnQBSQFMAgEBAgEAAYABCwGAAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CAAAAk1TRnQBSQFMAgEBAgEAAZABCwGQAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@@ -962,82 +962,97 @@ Public Class frmMain
End Sub
Async Function Load_single_Profile(Optional ForceReload As Boolean = False) As Tasks.Task
Dim gridUpdateStarted As Boolean = False
Dim viewUpdateStarted As Boolean = False
Try
FRONTEND_ACTION = "Load_single_Profile"
Load_Profiles_for_User()
GridControlWorkflows_Visible()
Dim expression As String
expression = "GUID = " & CURRENT_CLICKED_PROFILE_ID
Dim TEMP_TABLE = CURR_DT_VWPM_PROFILE_ACTIVE
Dim foundRows() As DataRow
foundRows = TEMP_TABLE.Select(expression)
Dim result = 0
For i = 0 To foundRows.GetUpperBound(0)
result += 1
Next
If result = 1 Then
Dim oSQL = foundRows(0)("SQL_VIEW")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceUserValues(oSQL)
oSQL = oSQL.Replace("@USER_ID", USER_ID)
oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
oSQL = oSQL.Replace("@MACHINE_NAME", System.Environment.MachineName)
oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQL)
If ForceReload = True Then
LOGGER.Info("ForceReload is true!")
End If
If Not IsNothing(DT_CURR_WF_ITEMS) Then
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And OVERVIEW_COUNT = oCOUNT Then
If ForceReload = False Then
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
Exit Function
End If
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, CURRENT_CLICKED_PROFILE_TITLE)
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Else
NO_WORKFLOWITEMS = False
lblCaptionMainGrid.Text = CURRENT_CLICKED_PROFILE_TITLE
End If
Create_Basic_View()
RestoreLayout()
End If
Dim expression As String = "GUID = " & CURRENT_CLICKED_PROFILE_ID
Dim foundRow As DataRow = CURR_DT_VWPM_PROFILE_ACTIVE.Select(expression).FirstOrDefault()
If foundRow Is Nothing Then
Exit Function
End If
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
GridViewWorkflows.BeginUpdate()
viewUpdateStarted = True
End If
Dim oSQL = foundRow.Item("SQL_VIEW")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceUserValues(oSQL)
oSQL = oSQL.Replace("@USER_ID", USER_ID)
oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
oSQL = oSQL.Replace("@MACHINE_NAME", System.Environment.MachineName)
oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQL)
If IsNothing(DT_CURR_WF_ITEMS) Then
Exit Function
End If
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If ForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And OVERVIEW_COUNT = oCOUNT Then
Exit Function
End If
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, CURRENT_CLICKED_PROFILE_TITLE)
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Exit Function
End If
NO_WORKFLOWITEMS = False
lblCaptionMainGrid.Text = CURRENT_CLICKED_PROFILE_TITLE
Create_Basic_View()
RestoreLayout()
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Load_single_Profile - Error: " & ex.Message)
Finally
If viewUpdateStarted Then
GridViewWorkflows.EndUpdate()
End If
If gridUpdateStarted Then
GridControlWorkflows.EndUpdate()
End If
FRONTEND_ACTION = FA_NONE
End Try
FRONTEND_ACTION = FA_NONE
End Function
Sub Create_Basic_View()
Dim gridUpdateStarted As Boolean = False
Dim viewUpdateStarted As Boolean = False
Try
FRONTEND_ACTION = "Create_Basic_View"
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
GridViewWorkflows.BeginUpdate()
viewUpdateStarted = True
End If
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
@@ -1045,20 +1060,20 @@ Public Class frmMain
LOGGER.Error(ex)
LOGGER.Warn("Could not clear GridViewWorkflows.Columns")
End Try
If TL_ICON = True Then
' Spalte für Status Icon erstellen
Dim columnStateIcon As New DataColumn()
columnStateIcon.DataType = GetType(Image)
columnStateIcon.ColumnName = "ICON"
columnStateIcon.Caption = ""
If TL_ICON = True AndAlso DT_CURR_WF_ITEMS IsNot Nothing AndAlso DT_CURR_WF_ITEMS.Columns.Contains("ICON") = False Then
Dim columnStateIcon As New DataColumn() With {
.DataType = GetType(Image),
.ColumnName = "ICON",
.Caption = ""
}
DT_CURR_WF_ITEMS.Columns.Add(columnStateIcon)
End If
RedDocuments = 0
YellowDocuments = 0
GreenDocuments = 0
If TL_ICON = True Then
If TL_ICON = True AndAlso DT_CURR_WF_ITEMS IsNot Nothing Then
For Each row As DataRow In DT_CURR_WF_ITEMS.Rows
Dim State As Integer = row.Item("TL_STATE")
Select Case State
@@ -1075,94 +1090,31 @@ Public Class frmMain
Next
End If
'If IDB_ACTIVE = True Then
' ' Spalte für Conversation erstellen
' Dim columnConvIcon As New DataColumn()
' columnConvIcon.DataType = GetType(Image)
' columnConvIcon.ColumnName = "CONVERSATION"
' columnConvIcon.Caption = ""
' DT_CURR_WF_ITEMS.Columns.Add(columnConvIcon)
'End If
'For Each oRow As DataRow In DT_CURR_WF_ITEMS.Rows
' Try
' Dim oCONVYN As Boolean
' Try
' oCONVYN = oRow.Item("CONV_YN")
' Catch ex As Exception
' LOGGER.Warn($"Please check Your select/view Config - Column CONV_YN is missing [{ex.Message}]")
' Exit For
' End Try
' Select Case oCONVYN
' Case True
' oRow.Item("CONVERSATION") = My.Resources.conversation
' End Select
' Catch ex As Exception
' LOGGER.Warn("Create_Basic_View1 - Column CONVERSATION obviously is not part of GridViewWorkflows")
' End Try
'Next
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
GridControlWorkflows.DataSource = bindsourcegrid
Dim objectCount_Descr = GridViewWorkflows.RowCount.ToString
'Dim ocapt = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("DescItems")
Dim ocapt = String.Format(S._0__Vorgänge, objectCount_Descr)
objectCount_Descr = $"{objectCount_Descr} {ocapt}"
'tslblObjectCount.Text = objectCount_Descr
'GridControlDocRow.ForceInitialize()
RestoreLayout()
COLUMNS_INVISIBLE()
Try
If TL_ICON = True Then
If TL_ICON = True AndAlso GridViewWorkflows.Columns.Count > 0 Then
GridViewWorkflows.Columns.Item("ICON").MaxWidth = 24
GridViewWorkflows.Columns.Item("ICON").MinWidth = 24
GridViewWorkflows.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewWorkflows.Columns.Item("ICON").Fixed = FixedStyle.Left
End If
Catch ex As Exception
End Try
'If IDB_ACTIVE = True Then
' Try
' GridViewWorkflows.Columns.Item("CONVERSATION").MaxWidth = 24
' GridViewWorkflows.Columns.Item("CONVERSATION").MinWidth = 24
' GridViewWorkflows.Columns.Item("CONVERSATION").Fixed = FixedStyle.Left
' Catch ex As Exception
' LOGGER.Info("Create_Basic_View2 - Column CONVERSATION obviously is not part of GridViewWorkflows - Trying to Rest Layout")
' ResetLayout()
' FRONTEND_ACTION = FA_NONE
' Exit Sub
' End Try
'End If
' GridViewWorkflows.OptionsView.ShowIndicator = False
Try
Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "")
oReducedColName = oReducedColName.Replace("]", "")
'GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime
'GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "").Replace("]", "")
Catch ex As Exception
Try
'GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
'GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
Catch ex1 As Exception
LOGGER.Warn("(CreateBasicView)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL")
End Try
End Try
LOGGER.Debug("All columns in CreateBasicView created")
Try
GridViewWorkflows.Columns.Item("GROUP_TEXT").Visible = False
GridViewWorkflows.Columns.Item("GROUP_COLOR").Visible = False
@@ -1170,13 +1122,19 @@ Public Class frmMain
If OverviewOrDEtail = "OVERVIEW" Then
LOGGER.Warn("ATTENTION: GROUP COLUMNS NOT PART OF GRID")
End If
End Try
LOGGER.Debug("All columns in CreateBasicView created")
Catch ex As Exception
LOGGER.Error(ex)
Finally
If viewUpdateStarted Then
GridViewWorkflows.EndUpdate()
End If
If gridUpdateStarted Then
GridControlWorkflows.EndUpdate()
End If
FRONTEND_ACTION = FA_NONE
End Try
FRONTEND_ACTION = FA_NONE
End Sub
Private Function GridLayoutChanged() As Boolean
Try
@@ -1329,35 +1287,46 @@ Public Class frmMain
BringMonitor2Front()
End Sub
Private Async Function Decide_Load(pIsFormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task
Dim refreshWasEnabled As Boolean = False
Dim showLoadingPanel As Boolean = False
Dim useWaitCursorApplied As Boolean = False
Dim previousMessage As String = bsiMessage.Caption
Try
LOGGER.Debug($"Decide_Load: pIsFormLoad [{pIsFormLoad}] - ForceReload [{ForceReload}] - GRID_LOAD_TYPE [{GRID_LOAD_TYPE}] ")
If pIsFormLoad = True Then
FormShown = False
End If
GridIsLoaded = False
If USER_EXISTS = False Then
LOGGER.Warn($"USER IS NOT EXISTING - CHECK FNDD_LOGIN_USER_MODULE")
Exit Function
End If
If TimerRefresh.Enabled = True Then
LOGGER.Debug($"Decide_Load: TimerRefresh.Enabled = True")
If TimerRefresh.Enabled Then
refreshWasEnabled = True
TimerRefresh.Enabled = False
End If
If Me.UseWaitCursor = False Then
Me.UseWaitCursor = True
useWaitCursorApplied = True
End If
bsiMessage.Caption = "Daten werden geladen..."
GridViewWorkflows.ShowLoadingPanel()
showLoadingPanel = True
TimerRefresh.Stop()
FRONTEND_ACTION = "DECIDE_LOAD"
LOGGER.Debug($"Decide_Load: pIsFormLoad [{pIsFormLoad}] - ForceReload [{ForceReload}] - GRID_LOAD_TYPE [{GRID_LOAD_TYPE}] ")
If GRID_LOAD_TYPE = "OVERVIEW" Then
If GRID_LOAD_TYPE = "OVERVIEW" Then
Await Load_Grid_Overview(pIsFormLoad, ForceReload, False)
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
Await Load_single_Profile(ForceReload)
End If
FRONTEND_ACTION = FA_NONE
GridViewWorkflows.HideLoadingPanel()
TimerRefresh.Start()
If SHOW_MASS_VALIDATOR = False Then
GridViewWorkflows.OptionsSelection.MultiSelect = False
@@ -1365,29 +1334,40 @@ Public Class frmMain
BarButtonItemMassValidation.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Else
BarButtonItemMassValidation.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
GridViewWorkflows.OptionsSelection.MultiSelect = True
GridViewWorkflows.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
End If
If GridViewWorkflows.OptionsView.ShowAutoFilterRow = True Then
BarCheckItemAutofilter.Checked = True
End If
If GridViewWorkflows.OptionsFind.AlwaysVisible Then
BarCheckItemShowSearch.Checked = True
End If
COLUMNS_INVISIBLE()
GridIsLoaded = True
Catch ex As Exception
GridIsLoaded = True
LOGGER.Error(ex)
LOGGER.Info("Unexpected error in Decide_load: " & ex.Message)
Finally
FRONTEND_ACTION = FA_NONE
If showLoadingPanel Then
GridViewWorkflows.HideLoadingPanel()
End If
If useWaitCursorApplied Then
Me.UseWaitCursor = False
End If
bsiMessage.Caption = previousMessage
If refreshWasEnabled Then
TimerRefresh.Enabled = True
End If
TimerRefresh.Start()
If pIsFormLoad = True Then
FormShown = True
End If
End Try
If TimerRefresh.Enabled = False Then
TimerRefresh.Enabled = True
End If
If pIsFormLoad = True Then
FormShown = True
End If
End Function
Private Sub ToolStripButton2_Click_2(sender As Object, e As EventArgs)
@@ -1906,12 +1886,30 @@ Public Class frmMain
End Sub
Async Function Load_Grid_Overview(pFormLoad As Boolean, pForceReload As Boolean, pNavbarClick As Boolean) As Tasks.Task
Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)")
Dim gridUpdateStarted As Boolean = False
Dim viewUpdateStarted As Boolean = False
Dim layoutRestored As Boolean = False
Dim resetLayoutTriggered As Boolean = False
Dim showLoadingPanel As Boolean = False
Dim useWaitCursorApplied As Boolean = False
Dim previousMessage As String = bsiMessage.Caption
Dim loadingMessageApplied As Boolean = False
GridControlWorkflows_Visible()
GRID_LOAD_TYPE = "OVERVIEW"
CURRENT_CLICKED_PROFILE_ID = 0
Try
bsiMessage.Caption = ""
If Me.UseWaitCursor = False Then
Me.UseWaitCursor = True
useWaitCursorApplied = True
End If
bsiMessage.Caption = "Daten werden geladen..."
loadingMessageApplied = True
GridViewWorkflows.ShowLoadingPanel()
showLoadingPanel = True
If BASEDATA_DT_VW_PROFILE_USER.Rows.Count = 0 Then
LOGGER.Info("Attention: No profiles for user: '" & USER_USERNAME & "' configured!", False)
@@ -1919,22 +1917,25 @@ Public Class frmMain
bsiMessage.Caption = "NO PROFILES FOR USER"
bsiMessage.ItemAppearance.Normal.BackColor = Color.Red
bsiMessage.ItemAppearance.Normal.ForeColor = Color.Black
If GridControlWorkflows.Visible = True Then
GridControlWorkflows.Visible = False
End If
oStopWatch.Done()
GridControlWorkflows.Visible = False
Exit Function
End If
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
GridViewWorkflows.BeginUpdate()
viewUpdateStarted = True
End If
Dim oStopWatch1 As New RefreshHelper.SW("LGO#Load_Profiles_for_User")
Load_Profiles_for_User()
oStopWatch1.Done()
'ClassInit.InitBasics()
Dim oStopWatch2 As New RefreshHelper.SW("LGO#build CURR_DT_OVERVIEW")
Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
If IsDBNull(oSQLOverview) Then
bsiMessage.Caption = "No SQL_PROFILE_MAIN_VIEW in Baseconfig"
oStopWatch.Done()
oStopWatch2.Done()
Exit Function
End If
If oSQLOverview.ToString.Contains("GROUP_TEXT") = False Then
@@ -1949,15 +1950,12 @@ Public Class frmMain
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
oSQLOverview = clsPatterns.ReplaceInternalValues(oSQLOverview)
oSQLOverview = clsPatterns.ReplaceUserValues(oSQLOverview)
oSQLOverview = oSQLOverview.Replace("@USER_ID", USER_ID)
oSQLOverview = oSQLOverview.Replace("@USERNAME", USER_USERNAME)
oSQLOverview = oSQLOverview.Replace("@MACHINE_NAME", System.Environment.MachineName)
@@ -1967,205 +1965,126 @@ Public Class frmMain
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQLOverview)
oStopWatch2.Done()
If Not IsNothing(DT_CURR_WF_ITEMS) Then
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {DT_CURR_WF_ITEMS.Rows.Count} rows")
If GridControlWorkflows.Visible = False Then
GridControlWorkflows.Visible = True
End If
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If pForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then
If pForceReload = False Then
LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview")
Exit Function
End If
Else
LOGGER.Info("Differences on OverviewHash")
LOGGER.Debug($"oADDED/OVERVIEW_ADDED_WHEN: {oADDED}/{OVERVIEW_ADDED_WHEN}#oADDED/OVERVIEW_ADDED_WHEN: {oChanged}/{OVERVIEW_CHANGED_WHEN}")
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
End If
NO_WORKFLOWITEMS = False
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, "")
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
GridControlWorkflows.Visible = True
If TL_ICON = True Then
'Spalte für Status Icon erstellen
Dim columnStateIcon As New DataColumn()
columnStateIcon.DataType = GetType(Image)
columnStateIcon.ColumnName = "ICON"
columnStateIcon.Caption = ""
DT_CURR_WF_ITEMS.Columns.Add(columnStateIcon)
End If
RedDocuments = 0
YellowDocuments = 0
GreenDocuments = 0
If TL_ICON = True Then
For Each row As DataRow In DT_CURR_WF_ITEMS.Rows
Dim State As Integer = row.Item("TL_STATE")
Select Case State
Case 1
RedDocuments += 1
row.Item("ICON") = My.Resources.bullet_red
Case 2
YellowDocuments += 1
row.Item("ICON") = My.Resources.bullet_orange
Case 3
GreenDocuments += 1
row.Item("ICON") = My.Resources.bullet_green
End Select
Next
End If
'If IDB_ACTIVE = True Then
' ' Spalte für Conversation erstellen
' Dim columnConvIcon As New DataColumn()
' columnConvIcon.DataType = GetType(Image)
' columnConvIcon.ColumnName = "CONVERSATION"
' columnConvIcon.Caption = ""
' DT_CURR_WF_ITEMS.Columns.Add(columnConvIcon)
' For Each oRow As DataRow In DT_CURR_WF_ITEMS.Rows
' Try
' Dim oCONVYN As Boolean
' Try
' oCONVYN = oRow.Item("CONV_YN")
' Catch ex As Exception
' LOGGER.Warn("Load_Grid_Overview - Column CONV_YN obviously is not part of CURR_DT_OVERVIEW")
' Exit For
' End Try
' Select Case oCONVYN
' Case True
' oRow.Item("CONVERSATION") = My.Resources.conversation
' End Select
' Catch ex As Exception
' LOGGER.Warn("Load_Grid_Overview - Column CONVERSATION obviously is not part of GridViewWorkflows")
' Exit For
' End Try
' Next
'End If
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
GridControlWorkflows.DataSource = bindsourcegrid
GridControlWorkflows.ForceInitialize()
Create_View_Caption()
Dim oColNotPartofLayout As Boolean
oColNotPartofLayout = False
'GridControlDocRow.ForceInitialize()
' GridControl1.DataSource = CURR_DT_PROFILEGRID
'If pFormLoad = True Then
' If IDB_ACTIVE = True Then
' oColNotPartofLayout = Column_inGridViewLayout("CONV_YN")
' End If
'End If
If pNavbarClick = False Then
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
'ResetLayout()
'SaveGridLayout()
LOGGER.Debug("Now GridLayout_Reset..")
Await GridLayout_Reset(False)
Else
If oColNotPartofLayout = False Then
RestoreLayout()
End If
End If
Else
RestoreLayout()
End If
Try
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
Create_GroupBy_Parts()
COLUMNS_INVISIBLE()
End If
If TL_ICON = True Then
Try
GridViewWorkflows.Columns.Item("ICON").MaxWidth = 24
GridViewWorkflows.Columns.Item("ICON").MinWidth = 24
GridViewWorkflows.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewWorkflows.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
Catch ex As Exception
End Try
End If
LOGGER.Debug("GridViewWorkflows.Columns loaded...")
Try
Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "")
oReducedColName = oReducedColName.Replace("]", "")
'If Not IsNothing(GridViewWorkflows.Columns(oReducedColName)) Then
' GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime
' GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
'ElseIf Not IsNothing(GridViewWorkflows.Columns("Zuletzt bearbeitet")) Then
' GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
' GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
'End If
Catch ex As Exception
LOGGER.Warn("(Warning LoadGridOverview)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL")
End Try
LOGGER.Debug("finished Formatting Grid!")
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Unexpected Error in Formatting Grid: " & ex.Message)
End Try
If GridViewWorkflows.Columns.Count <= 5 Then
LOGGER.Info("GridViewWorkflows.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False)
Await Reset_GridLayout(pFormLoad)
End If
Else
If IsNothing(DT_CURR_WF_ITEMS) Then
NO_WORKFLOWITEMS = True
GridControlWorkflows.Visible = False
'BindingNavigator1.Dock = DockStyle.None
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
RestoreLayout()
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {DT_CURR_WF_ITEMS.Rows.Count} rows")
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If pForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then
LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview")
Exit Function
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
End If
NO_WORKFLOWITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
If NO_WORKFLOWITEMS Then
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, "")
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
If TL_ICON = True AndAlso DT_CURR_WF_ITEMS.Columns.Contains("ICON") = False Then
Dim columnStateIcon As New DataColumn() With {
.DataType = GetType(Image),
.ColumnName = "ICON",
.Caption = ""
}
DT_CURR_WF_ITEMS.Columns.Add(columnStateIcon)
End If
RedDocuments = 0
YellowDocuments = 0
GreenDocuments = 0
If TL_ICON = True Then
For Each row As DataRow In DT_CURR_WF_ITEMS.Rows
Dim State As Integer = row.Item("TL_STATE")
Select Case State
Case 1
RedDocuments += 1
row.Item("ICON") = My.Resources.bullet_red
Case 2
YellowDocuments += 1
row.Item("ICON") = My.Resources.bullet_orange
Case 3
GreenDocuments += 1
row.Item("ICON") = My.Resources.bullet_green
End Select
Next
End If
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
GridControlWorkflows.DataSource = bindsourcegrid
GridControlWorkflows.ForceInitialize()
Create_View_Caption()
Dim oColNotPartofLayout As Boolean = False
If pNavbarClick = False Then
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
LOGGER.Debug("Now GridLayout_Reset..")
Await GridLayout_Reset(False)
resetLayoutTriggered = True
ElseIf oColNotPartofLayout = False Then
RestoreLayout()
layoutRestored = True
End If
Else
RestoreLayout()
layoutRestored = True
End If
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
Create_GroupBy_Parts()
End If
If TL_ICON = True Then
Try
GridViewWorkflows.Columns.Item("ICON").MaxWidth = 24
GridViewWorkflows.Columns.Item("ICON").MinWidth = 24
GridViewWorkflows.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewWorkflows.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
Catch ex As Exception
End Try
End If
If GridViewWorkflows.Columns.Count <= 5 Then
LOGGER.Info("GridViewWorkflows.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False)
Await Reset_GridLayout(pFormLoad)
resetLayoutTriggered = True
End If
If Not layoutRestored And Not resetLayoutTriggered Then
RestoreLayout()
End If
COLUMNS_INVISIBLE()
Try
For Each oColumn As DevExpress.XtraGrid.Columns.GridColumn In GridViewWorkflows.Columns
For Each oRow As DataRow In BASEDATA_TBDD_COLUMNS_FORMAT.Rows
Dim colName = oRow("COLUMN_TITLE").ToString()
@@ -2173,7 +2092,6 @@ Public Class frmMain
Dim oSollFormatType = oRow("TYPE2FORMAT").ToString()
If oSollFormatType = "DateTime" Then
If oColumn.ColumnType <> GetType(DateTime) Then
oColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime
End If
@@ -2193,11 +2111,26 @@ Public Class frmMain
LOGGER.Warn("Fehler beim Anwenden der Formatierung aus TBDD_COLUMNS_FORMAT: " & ex.Message)
End Try
oStopWatch.Done()
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message)
Finally
If viewUpdateStarted Then
GridViewWorkflows.EndUpdate()
End If
If gridUpdateStarted Then
GridControlWorkflows.EndUpdate()
End If
If showLoadingPanel Then
GridViewWorkflows.HideLoadingPanel()
End If
If useWaitCursorApplied Then
Me.UseWaitCursor = False
End If
If loadingMessageApplied AndAlso bsiMessage.Caption = "Daten werden geladen..." Then
bsiMessage.Caption = previousMessage
End If
oStopWatch.Done()
End Try
End Function
Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click
@@ -2496,6 +2429,10 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
.FilterExpression = "TYPE = 'SQL'",
.SortByColumn = "PROFILE_ID,TAB_INDEX"
})
oSQL = String.Format("SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{0}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS", {USER_LANGUAGE})
BASEDATA_TBPM_PROFILE_CONTROLS = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_LANGUAGE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = String.Format("LANGUAGE = '{0}'", {USER_LANGUAGE})
})
If pMode = "Load" Then
BASEDATA_DT_PROFILE_SEARCHES_SQL = BASEDATA_DT_PROFILES_SEARCHES_SQL.Clone()
End If

View File

@@ -259,8 +259,8 @@ Partial Class frmValidator
'DocumentViewer1
'
Me.DocumentViewer1.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.DocumentViewer1.FileLoaded = False
resources.ApplyResources(Me.DocumentViewer1, "DocumentViewer1")
Me.DocumentViewer1.FileLoaded = False
Me.DocumentViewer1.Name = "DocumentViewer1"
Me.DocumentViewer1.Viewer_ForceTemporaryMode = False
'

View File

@@ -630,6 +630,9 @@
<data name="&gt;&gt;SplitContainer1.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="DocumentViewer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="DocumentViewer1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
@@ -637,7 +640,7 @@
<value>4, 4, 4, 4</value>
</data>
<data name="DocumentViewer1.Size" type="System.Drawing.Size, System.Drawing">
<value>1121, 683</value>
<value>669, 422</value>
</data>
<data name="DocumentViewer1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>

View File

@@ -126,6 +126,8 @@ Public Class frmValidator
Private frmMessages As frmValidator_Messages
Private ReadOnly _SqlDataCache As New Dictionary(Of String, DataTable)(StringComparer.OrdinalIgnoreCase)
Private ReadOnly _SqlScalarCache As New Dictionary(Of String, Object)(StringComparer.OrdinalIgnoreCase)
Private _SqlControlsByGuid As Dictionary(Of Integer, List(Of DataRow))
Private _LookupControlsByRepository As Dictionary(Of RepositoryItemLookupControl3, LookupControl3)
Private Class Translation_Strings
Inherits My.Resources.frmValidator_Strings
End Class
@@ -749,6 +751,35 @@ Public Class frmValidator
End Try
End Sub
Private Sub EnsureSqlControlLookup()
If _SqlControlsByGuid IsNot Nothing Then
Return
End If
_SqlControlsByGuid = New Dictionary(Of Integer, List(Of DataRow))()
If DTCONTROLS_WITH_SQL Is Nothing OrElse DTCONTROLS_WITH_SQL.Rows.Count = 0 Then
Return
End If
For Each row As DataRow In DTCONTROLS_WITH_SQL.Rows
If row.ItemEx("PROFIL_ID", 0) <> CURRENT_ProfilGUID Then
Continue For
End If
Dim controlId As Integer
If Not Integer.TryParse(row.Item("GUID").ToString(), controlId) Then
Continue For
End If
Dim list As List(Of DataRow) = Nothing
If Not _SqlControlsByGuid.TryGetValue(controlId, list) Then
list = New List(Of DataRow)()
_SqlControlsByGuid(controlId) = list
End If
list.Add(row)
Next
End Sub
Sub LoadSQLData(control As Control, pControlId As Integer)
Try
If TypeOf control Is Label Then
@@ -757,14 +788,14 @@ Public Class frmValidator
MyValidationLogger.Debug($"in LoadSQLData for ControlID [{pControlId}]...")
Dim oDTforControl As DataTable = DTCONTROLS_WITH_SQL.Clone()
Dim oExpression = $"GUID = {pControlId} AND PROFIL_ID = {CURRENT_ProfilGUID}"
DTCONTROLS_WITH_SQL.Select(oExpression).CopyToDataTable(oDTforControl, LoadOption.PreserveChanges)
EnsureSqlControlLookup()
If IsNothing(oDTforControl) Then Exit Sub
If oDTforControl.Rows.Count = 0 Then Exit Sub
Dim rows As List(Of DataRow) = Nothing
If _SqlControlsByGuid Is Nothing OrElse Not _SqlControlsByGuid.TryGetValue(pControlId, rows) Then
Exit Sub
End If
For Each row As DataRow In oDTforControl.Rows
For Each row As DataRow In rows
Dim name As String = row.Item("NAME")
Dim oGUID As String = row.Item("GUID")
Dim oReadOnly As Boolean = row.Item("READ_ONLY")
@@ -787,12 +818,12 @@ Public Class frmValidator
Dim oSQLStatement As String = row.Item("SQL_UEBERPRUEFUNG")
Dim oConnectionId As Integer = row.Item("CONNECTION_ID")
If IsNothing(oSQLStatement) Then
If String.IsNullOrWhiteSpace(oSQLStatement) Then
Continue For
End If
oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, PanelValidatorControl, True)
If IsNothing(oSQLStatement) Then
If String.IsNullOrWhiteSpace(oSQLStatement) Then
Continue For
End If
If clsPatterns.HasComplexPatterns(oSQLStatement) Then
@@ -800,18 +831,9 @@ Public Class frmValidator
Continue For
End If
Dim oDTContent As DataTable = Nothing
Dim cacheKey = $"{oConnectionId}|{oSQLStatement}"
If Not _SqlDataCache.TryGetValue(cacheKey, oDTContent) Then
oDTContent = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLStatement, DatabaseType.ECM) With {
.ConnectionId = oConnectionId
})
If IsNothing(oDTContent) Then
MyValidationLogger.Warn($"SQL-Query [{oSQLStatement}] for control {control.Name} is invalid.")
Exit Sub
End If
_SqlDataCache(cacheKey) = oDTContent
Dim oDTContent As DataTable = GetCachedDatatable(oSQLStatement, oConnectionId)
If oDTContent Is Nothing OrElse oDTContent.Rows.Count = 0 Then
Continue For
End If
Dim oValue
@@ -824,7 +846,6 @@ Public Class frmValidator
lookup.Properties.ValueMember = oDTContent.Columns.Item(0).ColumnName
lookup.Properties.DisplayMember = oDTContent.Columns.Item(0).ColumnName
Catch ex As Exception
MyValidationLogger.Warn("Error in LookUpLoadSQLData: " & ex.Message)
End Try
@@ -838,7 +859,6 @@ Public Class frmValidator
oValue = value
Catch ex As Exception
MyValidationLogger.Warn("Error in TextBoxLoadSQLData: " & ex.Message)
End Try
ElseIf TypeOf control Is Windows.Forms.ComboBox Then
Try
@@ -863,10 +883,12 @@ Public Class frmValidator
Dim dataGridView As GridControl = control
Dim oDataSource As DataTable = dataGridView.DataSource
If oDataSource Is Nothing OrElse oDataSource.Rows.Count = 0 Then
Dim oDatatable As DataTable = oDTContent.Clone()
If oDataSource Is Nothing Then
oDataSource = oDTContent.Clone()
End If
For Each oColumn As DataColumn In oDatatable.Columns
If oDataSource.Rows.Count = 0 Then
For Each oColumn As DataColumn In oDTContent.Columns
If oDataSource.Columns(oColumn.ColumnName) Is Nothing Then
oDataSource.Columns.Add(oColumn.ColumnName, oColumn.DataType)
End If
@@ -913,6 +935,7 @@ Public Class frmValidator
Try
PanelValidatorControl.Controls.Clear()
_LookupControlsByRepository = New Dictionary(Of RepositoryItemLookupControl3, LookupControl3)()
Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC"
DT_CONTROLS = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_LANGUAGE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}",
@@ -983,6 +1006,7 @@ Public Class frmValidator
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
AddHandler txt.KeyDown, AddressOf OnTextBoxKeyDown
AddHandler txt.EditValueChanged, AddressOf OnTextBoxEditValueChanged
oMyControl = txt
@@ -1041,16 +1065,19 @@ Public Class frmValidator
MyValidationLogger.Debug("SQL HasOnlySimplePatterns!")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True)
'Dim oDT As DataTable = ClassDatabase.Return_Datatable_ConId(oSQL, oCONID, $"CreateControls - oControlID: {oControlID}")
Dim oDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.ConnectionId = oCONID
})
If Not IsNothing(oDT) Then
Dim oDT As DataTable = GetCachedDatatable(oSQL, oCONID)
oComboBox.BeginUpdate()
oComboBox.DataSource = Nothing
If Not IsNothing(oDT) AndAlso oDT.Rows.Count > 0 Then
Dim list As New List(Of String)
For Each oRow As DataRow In oDT.Rows
oComboBox.Items.Add(oRow.Item(0))
list.Add(oRow.Item(0))
Next
oComboBox.DataSource = list
End If
oComboBox.SelectedIndex = -1
oComboBox.EndUpdate()
End If
Catch ex As Exception
MyValidationLogger.Warn($"Unexpected error in CMB GetValues SQL - Error: {ex.Message}")
@@ -1112,21 +1139,57 @@ Public Class frmValidator
'MyLookupControl.Properties.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
MyLookupControl.Properties.MultiSelect = oMultiselect
Dim oCONID As Integer
Try
oCONID = PreventNulletc(oControlRow.Item("CONNECTION_ID"), "Integer")
Catch ex As Exception
oCONID = 0
End Try
If oCONID > 0 Then
Dim oCommandSQL_UBPF
Try
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
Catch ex As Exception
oCommandSQL_UBPF = ""
End Try
If oCommandSQL_UBPF <> String.Empty Then
Try
oSQL = PreventNulletc(oControlRow.Item("SQL_UEBERPRUEFUNG"), "String")
If clsPatterns.HasOnlySimplePatterns(oSQL) Then
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True)
Dim oDT As DataTable = GetCachedDatatable(oSQL, oCONID)
MyLookupControl.Properties.DataSource = Nothing
If Not IsNothing(oDT) AndAlso oDT.Rows.Count > 0 Then
MyLookupControl.Properties.DataSource = oDT
MyLookupControl.Properties.ValueMember = oDT.Columns.Item(0).ColumnName
MyLookupControl.Properties.DisplayMember = oDT.Columns.Item(0).ColumnName
End If
End If
Catch ex As Exception
MyValidationLogger.Warn($"Unexpected error in LOOKUP GetValues SQL - Error: {ex.Message}")
End Try
End If
End If
If ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
MyLookupControl.Properties.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
End If
oMyControl = MyLookupControl
_LookupControlsByRepository(MyLookupControl.Properties) = MyLookupControl
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf LookupListChanged
'Wenn Multiselect false dann prüfen ob abhängiges Control
' If oMultiselect = False Then
Dim oFilteredData As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count >= 1 Then
MyValidationLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
End If
@@ -1134,22 +1197,17 @@ Public Class frmValidator
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count >= 1 Then
MyValidationLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
End If
oFilteredData = DT_CONTROLS.Clone()
oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count = 1 Then
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set
End If
oFilteredData = DT_CONTROLS.Clone()
' End If
AddHandler MyLookupControl.GotFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
MyLookupControl.BackColor = Color.LightSteelBlue
@@ -1162,11 +1220,6 @@ Public Class frmValidator
End Sub
End If
'Return filteredData
'AddHandler lookup.Leave, AddressOf onLookUp0
Case "CHK"
oControlInfo = "CHK#" & oControlInfo
oMyControl = ControlCreator.CreateExisingCheckbox(oControlRow, False)
@@ -1317,15 +1370,30 @@ Public Class frmValidator
Exit Sub
End If
Dim oTextbox As BaseEdit = sender
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
Dim oTextbox As BaseEdit = TryCast(sender, BaseEdit)
If oTextbox Is Nothing Then
Exit Sub
End If
If Not oMeta.IsDirty Then
oMeta.IsDirty = True
MyValidationLogger.Debug($"TextBox [{oMeta.Name}] marked as dirty")
Dim oMeta As ClassControlCreator.ControlMetadata = TryCast(oTextbox.Tag, ClassControlCreator.ControlMetadata)
If oMeta Is Nothing OrElse oMeta.IsDirty Then
Exit Sub
End If
oMeta.IsDirty = True
MyValidationLogger.Debug($"TextBox [{oMeta.Name}] marked as dirty")
End Sub
Private Sub OnTextBoxKeyDown(sender As Object, e As KeyEventArgs)
Dim oTextBox As BaseEdit = TryCast(sender, BaseEdit)
If oTextBox Is Nothing Then
Exit Sub
End If
If oTextBox.ReadOnly AndAlso e.Control AndAlso e.KeyCode = Keys.X Then
e.Handled = True
e.SuppressKeyPress = True
End If
End Sub
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
If _ControlHandleStarted = True Then
_ControlHandleStarted = False
@@ -1337,11 +1405,9 @@ Public Class frmValidator
If (e.KeyCode = Keys.Return) Or (e.KeyCode = Keys.Tab) Or (e.KeyCode = Keys.Enter) Then
Try
Dim CONTROL_ID = DirectCast(oTextBox.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oSql = String.Format("SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oTextBox.Name)
Dim oFilter = $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{oTextBox.Name}%'"
Dim DTCONTROLS_UEBP As DataTable = GetControlMetaBySql("TBPM_PROFILE_CONTROLS_SQL_UEP", oSql, oFilter)
Dim DTCONTROLS_UEBP As DataTable = GetControlMetaBySql(oFilter)
If Not IsNothing(DTCONTROLS_UEBP) AndAlso DTCONTROLS_UEBP.Rows.Count > 0 Then
For Each oRow As DataRow In DTCONTROLS_UEBP.Rows
@@ -1540,14 +1606,12 @@ Public Class frmValidator
Public Sub onDGVRowValidating(ByVal sender As Object, ByVal e As DataGridViewCellCancelEventArgs)
Dim dgv As DataGridView = sender
Try
Dim CONTROL_ID = DirectCast(dgv.Tag, ClassControlCreator.ControlMetadata).Guid
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
Dim oFilter = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
Dim oFilter = String.Format("PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
Dim DT As DataTable = GetControlMetaBySql("TBPM_PROFILE_CONTROLS", sql, oFilter)
Dim DTFilteredRows As DataTable = GetControlMetaBySql(oFilter)
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
For Each ROW As DataRow In DT.Rows
If Not IsNothing(DTFilteredRows) And DTFilteredRows.Rows.Count > 0 Then
For Each ROW As DataRow In DTFilteredRows.Rows
Try
Dim displayboxname = ROW.Item("NAME").ToString
If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then
@@ -1555,9 +1619,6 @@ Public Class frmValidator
Dim cellvalue = dgv.Rows(dgv.Rows.Count - 2).Cells(0).Value.ToString()
sql_Statement = sql_Statement.ToString.Replace(dgv.Name, cellvalue)
'Dim resultDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sql_Statement, DatabaseType.ECM) With {
' .ConnectionId = ROW.Item("CONNECTION_ID")
'})
Dim resultDT As DataTable = GetCachedDatatable(sql_Statement, ROW.Item("CONNECTION_ID"))
If resultDT.Rows.Count >= 1 Then
@@ -1594,22 +1655,32 @@ Public Class frmValidator
If _FormLoaded = False Then
Exit Sub
End If
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
Try
If Not IsNothing(SelectedValues) Then
If SelectedValues.Count >= 1 Then
LookupControl_DependingControls(oLookup, SelectedValues)
LookupControl_EnablingControls(oLookup, SelectedValues)
LookupControl_DependingColumn(oLookup, SelectedValues)
Else
MyValidationLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
End If
End If
Catch ex As Exception
MyValidationLogger.Error(ex)
End Try
If SelectedValues Is Nothing OrElse SelectedValues.Count < 1 Then
MyValidationLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
Exit Sub
End If
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
Dim oLookup As LookupControl3 = Nothing
If _LookupControlsByRepository IsNot Nothing Then
_LookupControlsByRepository.TryGetValue(oRepositoryItem, oLookup)
End If
If oLookup Is Nothing Then
oLookup = TryCast(oRepositoryItem.OwnerEdit, LookupControl3)
End If
If oLookup Is Nothing Then
MyValidationLogger.Warn("onLookUpselectedValue: LookupControl not found for RepositoryItem")
Exit Sub
End If
LookupControl_DependingControls(oLookup, SelectedValues)
LookupControl_EnablingControls(oLookup, SelectedValues)
LookupControl_DependingColumn(oLookup, SelectedValues)
Catch ex As Exception
MyValidationLogger.Warn("Unexpected error in onLookUpselectedValue - " + ex.Message)
MyValidationLogger.Error(ex)
@@ -1623,22 +1694,35 @@ Public Class frmValidator
Try
Dim oLookup As RepositoryItemLookupControl3 = sender
' NEU: Dirty-Flag setzen - Suche den zugehörigen LookupControl
For Each oControl In PanelValidatorControl.Controls
If TypeOf oControl Is LookupControl3 Then
Dim oLookupControl As LookupControl3 = DirectCast(oControl, LookupControl3)
If oLookupControl.Properties Is oLookup Then
Dim oMeta As ClassControlCreator.ControlMetadata = oLookupControl.Tag
oMeta.IsDirty = True
MyValidationLogger.Debug($"LookupControl [{oMeta.Name}] marked as dirty")
Exit For
Dim oLookupControl As LookupControl3 = Nothing
If _LookupControlsByRepository IsNot Nothing Then
_LookupControlsByRepository.TryGetValue(oLookup, oLookupControl)
End If
If oLookupControl Is Nothing Then
For Each oControl In PanelValidatorControl.Controls
If TypeOf oControl Is LookupControl3 Then
Dim tmp As LookupControl3 = DirectCast(oControl, LookupControl3)
If tmp.Properties Is oLookup Then
oLookupControl = tmp
Exit For
End If
End If
End If
Next
listChangedLookup.Add(oLookup.Name)
Next
End If
If oLookupControl IsNot Nothing Then
Dim oMeta As ClassControlCreator.ControlMetadata = oLookupControl.Tag
oMeta.IsDirty = True
MyValidationLogger.Debug($"LookupControl [{oMeta.Name}] marked as dirty")
listChangedLookup.Add(oLookupControl.Name)
Else
listChangedLookup.Add(oLookup.Name)
End If
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
'Verschiebt den Fokus auf das nächste Control
Dim oFound As Boolean = False
For Each oString As String In listofControls
If oString = oLookup.Name And oFound = False Then
@@ -2274,11 +2358,9 @@ Public Class frmValidator
'Abschluss()
Else
Try
Dim CONTROL_ID = DirectCast(oCombobox.Tag, ClassControlCreator.ControlMetadata).Guid
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
Dim oFilter = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
Dim oFilter = String.Format("PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
Dim DT As DataTable = GetControlMetaBySql("TBPM_PROFILE_CONTROLS", sql, oFilter)
Dim DT As DataTable = GetControlMetaBySql(oFilter)
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
If _DependingControl_In_Action = True Then
@@ -2528,17 +2610,43 @@ Public Class frmValidator
End If
End If
End Sub
Private Function GetControlMetaBySql(tableName As String, sql As String, filter As String) As DataTable
Private Function GetControlMetaBySql(filter As String) As DataTable
Dim dt As DataTable = Nothing
Dim cacheKey = $"META|{tableName}|{sql}|{filter}"
Dim cacheKey = $"META|{filter}"
If _SqlDataCache.TryGetValue(cacheKey, dt) Then
Return dt
End If
If BASEDATA_TBPM_PROFILE_CONTROLS IsNot Nothing Then
Try
If String.IsNullOrWhiteSpace(filter) Then
dt = BASEDATA_TBPM_PROFILE_CONTROLS.Copy()
Else
Dim rows = BASEDATA_TBPM_PROFILE_CONTROLS.Select(filter)
dt = BASEDATA_TBPM_PROFILE_CONTROLS.Clone()
If rows.Length > 0 Then
dt = rows.CopyToDataTable()
End If
End If
If Not _SqlDataCache.TryGetValue(cacheKey, dt) Then
dt = DatabaseFallback.GetDatatable(tableName, New GetDatatableOptions(sql, DatabaseType.ECM) With {
.FilterExpression = filter
})
If dt IsNot Nothing Then
_SqlDataCache(cacheKey) = dt
End If
Return dt
Catch ex As Exception
MyValidationLogger.Warn($"GetControlMetaBySql cache filter failed, fallback to DB: {ex.Message}")
End Try
End If
Dim query As String
If String.IsNullOrWhiteSpace(filter) Then
query = "SELECT * FROM TBPM_PROFILE_CONTROLS"
Else
query = $"SELECT * FROM TBPM_PROFILE_CONTROLS WHERE {filter}"
End If
dt = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(query, DatabaseType.ECM))
If dt IsNot Nothing Then
_SqlDataCache(cacheKey) = dt
End If
Return dt
@@ -2784,8 +2892,17 @@ Public Class frmValidator
Sub Load_Next_Document(first As Boolean)
Dim perfStart As DateTime = DateTime.MinValue
Dim perfLastCheck As DateTime = DateTime.MinValue
If LOG_HOTSPOTS Then
perfStart = DateTime.Now
perfLastCheck = perfStart
MyValidationLogger.Info("[PERF] Load_Next_Document START")
End If
_SqlDataCache.Clear()
_SqlScalarCache.Clear()
_SqlControlsByGuid = Nothing
CURRENT_WMFILE = Nothing
activate_controls(False)
oErrMsgMissingInput = ""
@@ -2793,9 +2910,10 @@ Public Class frmValidator
Override = False
OverrideAll = False
'Me.lblerror.Visible = False
_Indexe_Loaded = False
MyValidationLogger.Debug("In Load_Next_Document")
Dim layoutSuspended As Boolean = False
Try
If first = True Then
MyValidationLogger.Debug("First Document")
@@ -2804,17 +2922,12 @@ Public Class frmValidator
MyValidationLogger.Debug("Following Document ")
End If
' Controls nicht beim ersten Laden leeren
If first = False Then
PanelValidatorControl.SuspendLayout()
layoutSuspended = True
Clear_all_Input()
End If
'Select Case navtype
' Case "next"
' Case "previous"
' Case "first"
' Case "last"
'End Select
MyValidationLogger.Debug($"CURRENT_JUMP_DOC_GUID: {CURRENT_JUMP_DOC_GUID}'")
If CURRENT_JUMP_DOC_GUID = 0 Then
CURRENT_DOC_GUID = Get_Next_GUID()
@@ -2822,11 +2935,23 @@ Public Class frmValidator
ElseIf first = False Then
CURRENT_DOC_GUID = 0
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach Get_Next_GUID: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
MyValidationLogger.Info("LoadNextDocument - Dokument-GUID: '" & CURRENT_DOC_GUID.ToString & "'")
If CURRENT_DOC_GUID > 0 Then
If (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) And GetDocPathWindows(0) = False Then
SetStatusLabel($"File not accessible: {DocPathWindows}", "DarkOrange")
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach GetDocPathWindows: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
If IDB_ACTIVE = False Then
If CreateWMObject() = False Then
Exit Sub
@@ -2843,17 +2968,22 @@ Public Class frmValidator
End If
End If
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
'PRTF_PROFILE_FILES_WORK("InWork")
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach CreateWMObject/Load_IDB_DOC_DATA: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 1, IN_WORK_WHEN = GETDATE(), WORK_USER = '{USER_USERNAME}' WHERE GUID = {CURRENT_DOC_GUID}"
DatabaseFallback.ExecuteNonQueryECM(sql)
' ############ Infos eintragen #################
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach IN_WORK-UPDATE: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
If Amount_Docs2Validate > 1 Then
Dim omsg = String.Format(Translation_Strings.Verbleibende_Vorgänge___0_, Amount_Docs2Validate)
bsiInformation.Caption = omsg
bsiInformation.Caption = omsg
If RbnPgGrpActions.Visible = False Then
RbnPgGrpActions.Visible = True
@@ -2872,21 +3002,21 @@ Public Class frmValidator
MyValidationLogger.Debug("AllDocInfo created...")
If IDB_ACTIVE = False Then
oErrMsgMissingInput = Windream_get_Doc_info()
Else
' oErrorMessage = IDB_GetDocInfo()
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach Windream_get_Doc_info: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Dim oCurrency As String
If PROFIL_CURRENCY_ATTRIBUTE <> "" Then
oCurrency = GetVariableValuefromSource(PROFIL_CURRENCY_ATTRIBUTE, 1, False)
MyValidationLogger.Debug(String.Format("Read oCurrency from Attribute: {0} is {1}", PROFIL_CURRENCY_ATTRIBUTE, oCurrency))
Else
oCurrency = "EUR"
MyValidationLogger.Debug(String.Format("oCurrency by default is {0}", oCurrency))
End If
If Not IsNothing(oCurrency) Then
DocCurrency = oCurrency
Dim oValueType = DocCurrency.GetType.ToString
If IsDBNull(DocCurrency) Then
DocCurrency = "EUR"
Else
@@ -2897,33 +3027,55 @@ Public Class frmValidator
DocCurrency = "EUR"
End Try
End If
Else
MyValidationLogger.Warn($"oCurrency is Nothing - Check PROFIL_CURRENCY_ATTRIBUTE! ")
End If
If oErrMsgMissingInput = "" Then
If WMDocPathWindows <> String.Empty Or OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
MyValidationLogger.Debug($"Operationmode is {ClassConstants.OpModeFS_ZF}! Initializing Viewer ...")
LoadDocument_DDViewer()
MyValidationLogger.Debug("Viewer loaded!!")
If Current_Document.Extension <> "pdf" Then
bbtniAnnotation.Visibility = BarItemVisibility.Never
End If
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach LoadDocument_DDViewer: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
FillIndexValues(first)
For Each oControl As Control In PanelValidatorControl.Controls
LoadSQLData(oControl, DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid)
Next
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach FillIndexValues: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
MyValidationLogger.Debug("Indexmask loaded")
Dim sqlControls As DataRow() = Nothing
If DTCONTROLS_WITH_SQL IsNot Nothing AndAlso DTCONTROLS_WITH_SQL.Rows.Count > 0 Then
sqlControls = DTCONTROLS_WITH_SQL.Select($"PROFIL_ID = {CURRENT_ProfilGUID}")
End If
If sqlControls IsNot Nothing AndAlso sqlControls.Length > 0 Then
Dim sqlControlIds As New HashSet(Of Integer)()
For Each r As DataRow In sqlControls
Dim controlId As Integer = 0
If Integer.TryParse(r.Item("GUID").ToString, controlId) Then
sqlControlIds.Add(controlId)
End If
Next
For Each oControl As Control In PanelValidatorControl.Controls
Dim controlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
If sqlControlIds.Contains(controlId) Then
LoadSQLData(oControl, controlId)
End If
Next
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach LoadSQLData-Loop: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
'Nun loggen das das Profil geladen wurde
If PROFIL_LOGINDEX <> "" Then
Dim oLogString = $"PMProfile loaded: [{CURRENT_ProfilGUID}-{CURRENT_ProfilName}]{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
If IDB_ACTIVE = False Then
@@ -2951,19 +3103,14 @@ Public Class frmValidator
Me.Close()
End If
End If
Try
If DocCurrency <> String.Empty Then
If DocCurrency.ToString.Length <> 3 Then
MyValidationLogger.Info("DocCurrency-Length = 3 - Setting to EUR")
DocCurrency = "EUR"
End If
MyValidationLogger.Debug($"DocCurrency = {DocCurrency}")
For Each oControl As Control In PanelValidatorControl.Controls
Try
Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
If TypeOf oControl Is GridControl Then
Dim oGrid As GridControl = DirectCast(oControl, GridControl)
Dim oControlMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
@@ -2978,48 +3125,47 @@ Public Class frmValidator
settings.MaskExpression = "c"
settings.Culture = oCultureInfo
End Sub)
riTextEdit.UseMaskAsDisplayFormat = True 'Optional
riTextEdit.UseMaskAsDisplayFormat = True
oGrid.RepositoryItems.Add(riTextEdit)
Dim oGridView As GridView = DirectCast(oGrid.FocusedView, GridView)
For Each oCol As GridColumn In oGridView.Columns
Dim oColumnData As DataRow = oFilteredDatatable.
Select($"SPALTENNAME = '{oCol.FieldName}'").
FirstOrDefault()
Dim oColumnData As DataRow = oFilteredDatatable.Select($"SPALTENNAME = '{oCol.FieldName}'").FirstOrDefault()
If oColumnData Is Nothing Then
Continue For
End If
Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
Select Case oColumnType
Case "CURRENCY"
Console.WriteLine("CurrencyFormatNecessary")
oCol.DisplayFormat.FormatType = FormatType.Custom
oCol.ColumnEdit = riTextEdit
End Select
If oColumnType = "CURRENCY" Then
oCol.DisplayFormat.FormatType = FormatType.Custom
oCol.ColumnEdit = riTextEdit
End If
Next
End If
Catch ex As Exception
MyValidationLogger.Error(ex)
End Try
Next
Else
MyValidationLogger.Warn($"DocCurrency is String.empty! ")
End If
Catch ex As Exception
MyValidationLogger.Warn($"Unexpected error in display format Currency: " & ex.Message)
End Try
Try
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach Currency-Format: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Try
Show_WF_Messages(False)
Catch ex As Exception
MyValidationLogger.Error(ex)
End Try
Controls2B_EnDisabled()
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach Show_WF_Messages + Controls2B_EnDisabled: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
End If
MyValidationLogger.Debug("frmValidator: LoadNextDocument finished!")
Catch ex As Exception
MyValidationLogger.Error(ex)
@@ -3027,6 +3173,13 @@ Public Class frmValidator
My.Settings.Save()
MyValidationLogger.Info("unexpected error in Load_Next_Document: " & ex.Message)
frmError.ShowDialog()
Finally
If layoutSuspended Then
PanelValidatorControl.ResumeLayout()
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Load_Next_Document GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
End If
End Try
End Sub
Sub Show_WF_Messages(pShow As Boolean)
@@ -4279,8 +4432,19 @@ Public Class frmValidator
End Sub
Private Sub frmValidation_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
Dim perfStart As DateTime = DateTime.MinValue
Dim perfLastCheck As DateTime = DateTime.MinValue
If LOG_HOTSPOTS Then
perfStart = DateTime.Now
perfLastCheck = perfStart
MyValidationLogger.Info("[PERF] frmValidation_Shown START")
End If
' Refresh_FileList()
Load_Next_Document(True)
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] frmValidation_Shown nach Load_Next_Document: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
_DependingControl_In_Action = False
_DependingColumn_In_Action = False
@@ -4355,8 +4519,15 @@ Public Class frmValidator
Catch ex As Exception
MyValidationLogger.Error(ex)
End Try
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] frmValidation_Shown nach Ribbon/Export Setup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
MyValidationLogger.Debug("frmValidation_Shown finished!")
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] frmValidation_Shown GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
End If
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
btnSave.Enabled = False
@@ -4513,18 +4684,34 @@ Public Class frmValidator
End Function
Sub Finish_WFStep(Optional includeFI As Boolean = True)
Dim perfStart As DateTime = DateTime.MinValue
Dim perfLastCheck As DateTime = DateTime.MinValue
If LOG_HOTSPOTS Then
perfStart = DateTime.Now
perfLastCheck = perfStart
MyValidationLogger.Info("[PERF] Finish_WFStep START")
End If
btnSave.Enabled = False
MyValidationLogger.Debug("Abschluss für DocID " & CURRENT_DOC_ID & " wird gestartet ...")
Dim oErrorOcurred As Boolean = False
If OverrideAll = False Then
'Eingaben auf Form überprüfen
If Check_UpdateIndexe() = True Then
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach Check_UpdateIndexe: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
If PROFIL_FINISH_SQL <> String.Empty Then
If btnFinish_continue() = False Then
Exit Sub
End If
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach btnFinish_continue: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
If includeFI = True Then
Try
Dim oSQL = $"SELECT * FROM TBPM_PROFILE_FINAL_INDEXING WHERE PROFIL_ID = {CURRENT_ProfilGUID} AND ACTIVE = 1 ORDER BY SEQUENCE"
@@ -4697,11 +4884,19 @@ Public Class frmValidator
oErrorOcurred = True
End Try
End If
If LOG_HOTSPOTS AndAlso includeFI Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach FinalIndexing: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Try
''Wenn kein Fehler nach der finalen Indexierung gesetzt wurde
If Override = True And Override_SQLCommand <> "" Then
DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach Override-SQL: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
If oErrorOcurred = False Then
Dim WORK_HISTORY_ENTRY = Nothing
@@ -4803,6 +4998,12 @@ Public Class frmValidator
WORK_HISTORY_ENTRY = ""
End If
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach WORK_HISTORY: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Dim ins = String.Format("INSERT INTO TBPM_FILES_WORK_HISTORY (PROFIL_ID, DOC_ID,WORKED_BY,WORKED_WHERE,STATUS_COMMENT) VALUES ({0},{1},'{2}','{3}','{4}')", CURRENT_ProfilGUID, CURRENT_DOC_ID, USER_USERNAME, System.Environment.MachineName, WORK_HISTORY_ENTRY)
DatabaseFallback.ExecuteNonQueryECM(ins)
Dim oFIsql As String
@@ -4838,6 +5039,11 @@ Public Class frmValidator
End If
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach Annotation: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
'wenn Move2Folder aktiviert wurde
If Move2Folder <> "" And (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) Then
@@ -4848,6 +5054,10 @@ Public Class frmValidator
frmError.ShowDialog()
oErrorOcurred = True
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach Move2Folder: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
End If
@@ -4878,6 +5088,10 @@ Public Class frmValidator
oErrorOcurred = True
End If
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach OverrideAll-SQL: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
' Wert muss für den nächsten Beleg wieder zurückgesetzt werden.
OverrideAll = False
End If
@@ -4890,6 +5104,10 @@ Public Class frmValidator
If DatabaseFallback.ExecuteNonQueryECM(oPROCSQL) = False Then
MyValidationLogger.Warn($"Attention: Error executing proc [{oPROCSQL}]")
End If
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach PRPM_CHECK_NEXT_WF: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
End If
If CURRENT_JUMP_DOC_GUID <> 0 Then
@@ -4898,12 +5116,19 @@ Public Class frmValidator
Else
'Das nächste Dokument laden
Load_Next_Document(False)
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep nach Load_Next_Document: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
perfLastCheck = DateTime.Now
End If
Focus_FirstControl()
End If
btnSave.Enabled = True
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Finish_WFStep GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
End If
End Sub
Sub Focus_FirstControl()
If first_control Is Nothing = False Then