Optimierungen

This commit is contained in:
Developer01
2026-01-30 14:40:02 +01:00
parent 11d27cd860
commit bca424f50f
6 changed files with 96 additions and 32 deletions

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
CAAAAk1TRnQBSQFMAgEBAgEAAYgBCwGIAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CAAAAk1TRnQBSQFMAgEBAgEAAZABCwGQAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@@ -1289,6 +1289,8 @@ Public Class frmMain
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}] ")
@@ -1308,10 +1310,14 @@ Public Class frmMain
TimerRefresh.Enabled = False
End If
If GridControlWorkflows.Visible Then
If Me.UseWaitCursor = False Then
Me.UseWaitCursor = True
useWaitCursorApplied = True
End If
bsiMessage.Caption = "Daten werden geladen..."
GridViewWorkflows.ShowLoadingPanel()
showLoadingPanel = True
End If
TimerRefresh.Stop()
FRONTEND_ACTION = "DECIDE_LOAD"
@@ -1350,6 +1356,10 @@ Public Class frmMain
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
@@ -1880,13 +1890,26 @@ Public Class frmMain
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)
@@ -2098,6 +2121,15 @@ Public Class frmMain
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
@@ -2397,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

@@ -1006,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
@@ -1382,7 +1383,17 @@ Public Class frmValidator
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
@@ -1394,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
@@ -1597,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
@@ -1612,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
@@ -2354,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
@@ -2608,18 +2610,44 @@ 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 Not _SqlDataCache.TryGetValue(cacheKey, dt) Then
dt = DatabaseFallback.GetDatatable(tableName, New GetDatatableOptions(sql, DatabaseType.ECM) With {
.FilterExpression = 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
_SqlDataCache(cacheKey) = dt
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
End If
Return dt
End Function