Optimierungen
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("")>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAYgBCwGIAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAZABCwGQAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user