diff --git a/app/TaskFlow/ControlCreator/GridControl.vb b/app/TaskFlow/ControlCreator/GridControl.vb
index 7e679f6..4016618 100644
--- a/app/TaskFlow/ControlCreator/GridControl.vb
+++ b/app/TaskFlow/ControlCreator/GridControl.vb
@@ -352,8 +352,8 @@ Namespace ControlCreator
End If
Dim oColumnData As DataRow = pColumnDefinition.
- Select($"SPALTENNAME = '{pArgs.Column.FieldName}'").
- FirstOrDefault()
+ Select($"SPALTENNAME = '{pArgs.Column.FieldName}'").
+ FirstOrDefault()
If oColumnData Is Nothing Then
Return
@@ -386,25 +386,25 @@ Namespace ControlCreator
If affectedRowsCount > 0 AndAlso confirmationEntry.Count < InheritanceMsgAmount Then
Dim confirmMessage As String = String.Format(
- "Möchten Sie den Wert '{0}' an {1} nachfolgende Zeile(n) vererben?",
- valueToApply,
- affectedRowsCount)
+ "Möchten Sie den Wert '{0}' an {1} nachfolgende Zeile(n) vererben?",
+ valueToApply,
+ affectedRowsCount)
If USER_LANGUAGE <> "de-DE" Then
confirmMessage = String.Format(
- "Do you want to inherit the value '{0}' to {1} subsequent row(s)?",
- valueToApply,
- affectedRowsCount)
+ "Do you want to inherit the value '{0}' to {1} subsequent row(s)?",
+ valueToApply,
+ affectedRowsCount)
End If
Dim confirmTitle As String = "Wertevererbung bestätigen"
If USER_LANGUAGE <> "de-DE" Then
confirmTitle = "Confirm Value Inheritance"
End If
Dim result = MessageBox.Show(
- confirmMessage,
- confirmTitle,
- MessageBoxButtons.YesNo,
- MessageBoxIcon.Question,
- MessageBoxDefaultButton.Button1)
+ confirmMessage,
+ confirmTitle,
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button1)
If result <> DialogResult.Yes Then
_Logger.Debug("User cancelled value inheritance")
@@ -414,9 +414,39 @@ Namespace ControlCreator
confirmationEntry.Count += 1
CONFIG.Save()
_Logger.Info("User confirmed value inheritance. Confirmation count: {0}", confirmationEntry.Count)
+ ElseIf affectedRowsCount > 0 AndAlso confirmationEntry.Count = InheritanceMsgAmount Then
+ ' Schwellenwert erreicht - User fragen, ob er weiterhin gefragt werden möchte
+ Dim continueAskingMessage As String = "Sie haben diese Bestätigung bereits mehrfach durchgeführt. Möchten Sie in Zukunft weiterhin gefragt werden?"
+ If USER_LANGUAGE <> "de-DE" Then
+ continueAskingMessage = "You have confirmed this action multiple times. Do you want to continue being asked in the future?"
+ End If
+ Dim continueAskingTitle As String = "Bestätigungen fortsetzen?"
+ If USER_LANGUAGE <> "de-DE" Then
+ continueAskingTitle = "Continue Confirmations?"
+ End If
+
+ Dim continueResult = MessageBox.Show(
+ continueAskingMessage,
+ continueAskingTitle,
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button2)
+
+ If continueResult = DialogResult.Yes Then
+ ' User möchte weiterhin gefragt werden - Counter zurücksetzen
+ confirmationEntry.Count = 0
+ CONFIG.Save()
+ _Logger.Info("User wants to continue being asked. Counter reset to 0.")
+ Else
+ ' User möchte nicht mehr gefragt werden - Counter erhöhen
+ confirmationEntry.Count += 1
+ CONFIG.Save()
+ _Logger.Info("User does not want to be asked anymore. Counter increased to {0}.", confirmationEntry.Count)
+ End If
ElseIf affectedRowsCount > 0 Then
_Logger.Info("Skipping confirmation dialog (already confirmed {0} times)", confirmationEntry.Count)
End If
+
isApplyingInheritedValue = True
Try
_Logger.Info(String.Format("Inherit Value is active for column. So inheritting the value [{0}]...", valueToApply))
diff --git a/app/TaskFlow/ModuleRuntimeVariables.vb b/app/TaskFlow/ModuleRuntimeVariables.vb
index 4c5bd05..1609192 100644
--- a/app/TaskFlow/ModuleRuntimeVariables.vb
+++ b/app/TaskFlow/ModuleRuntimeVariables.vb
@@ -143,7 +143,6 @@ Module ModuleRuntimeVariables
Public Property CURRENT_DT_PROFILES As DataTable
Public Property CURRENT_DT_PROFILE_LANGUAGE As DataTable
Public Property CURRENT_DT_PROFILE As DataTable
-
Public Property CURRENT_CONTROL_NAME_LIST As New List(Of String)
diff --git a/app/TaskFlow/frmMain.Designer.vb b/app/TaskFlow/frmMain.Designer.vb
index a29306b..75ea101 100644
--- a/app/TaskFlow/frmMain.Designer.vb
+++ b/app/TaskFlow/frmMain.Designer.vb
@@ -255,6 +255,7 @@ Partial Class frmMain
'GridControlWorkflows
'
resources.ApplyResources(Me.GridControlWorkflows, "GridControlWorkflows")
+ Me.GridControlWorkflows.EmbeddedNavigator.Margin = CType(resources.GetObject("GridControlWorkflows.EmbeddedNavigator.Margin"), System.Windows.Forms.Padding)
Me.GridControlWorkflows.MainView = Me.GridViewWorkflows
Me.GridControlWorkflows.MenuManager = Me.RibbonControl1
Me.GridControlWorkflows.Name = "GridControlWorkflows"
@@ -272,6 +273,7 @@ Partial Class frmMain
Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseForeColor = True
Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseTextOptions = True
Me.GridViewWorkflows.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near
+ Me.GridViewWorkflows.DetailHeight = 442
Me.GridViewWorkflows.GridControl = Me.GridControlWorkflows
Me.GridViewWorkflows.Name = "GridViewWorkflows"
Me.GridViewWorkflows.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.[False]
@@ -291,11 +293,13 @@ Partial Class frmMain
'
'RibbonControl1
'
+ Me.RibbonControl1.EmptyAreaImageOptions.ImagePadding = New System.Windows.Forms.Padding(37, 38, 37, 38)
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.bbtniRefresh, Me.bbtniMonitor, Me.bbiProfilverwaltung, Me.bbiKonfiguration, Me.bbtniGrundeinstellung, Me.bbtnitemInfo, Me.BarButtonItem1, Me.bsiUser, Me.bsiLicenses, Me.bsiUserLoggedIn, Me.bsiVersion, Me.bsilastsync, Me.bsiDebug, Me.bsiMessage, Me.bbtniMetadataFile, Me.BarEditItem1, Me.bbtnitDashboardInv, Me.bsiGeneralInfo, Me.bbtnitmGhostMode, Me.bsi_GhostMode, Me.BarButtonItemGhostMode, Me.SearchItem1, Me.SearchItem2, Me.BarStaticItemAppServer, Me.bbtniCW, Me.bsiInactivityCheck, Me.BarButtonItem2, Me.BarCheckItemAutofilter, Me.BarCheckItem2, Me.BarButtonItemResetLayout, Me.BarButtonItem4, Me.BarButtonItemExportExcel, Me.BarButtonItem6, Me.BarButtonItem7, Me.BarButtonItemWFSingle, Me.BarButtonItemWFGroup, Me.BarButtonItemFileLink, Me.BarButtonItemMassValidation, Me.BarCheckItemShowSearch, Me.barItemGridFontSize, Me.BarButtonItem8, Me.BbtnitmAHWF1, Me.BbtnitmAHWF2, Me.BbtnitmAHWF3, Me.BbtnitmAHWF4, Me.bbtnitmLanguage_Change, Me.BarButtonItem10, Me.BBtnItmNotfications, Me.BSIVERSION1, Me.barbtnitmsaveLogfiles, Me.bsitmCount})
resources.ApplyResources(Me.RibbonControl1, "RibbonControl1")
Me.RibbonControl1.MaxItemId = 57
Me.RibbonControl1.Name = "RibbonControl1"
+ Me.RibbonControl1.OptionsMenuMinWidth = 403
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPageTabelle, Me.RibbonPageAktionen})
Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemProgressBar1, Me.RepositoryItemTrackBar1, Me.cmbGridFontSize})
Me.RibbonControl1.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonControlStyle.Office2013
@@ -985,7 +989,6 @@ Partial Class frmMain
Me.DocumentViewerBarManager1.DockControls.Add(Me.barDockControlBottom)
Me.DocumentViewerBarManager1.DockControls.Add(Me.barDockControlLeft)
Me.DocumentViewerBarManager1.DockControls.Add(Me.barDockControlRight)
- Me.DocumentViewerBarManager1.DockWindowTabFont = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.DocumentViewerBarManager1.Form = Me
Me.DocumentViewerBarManager1.ImageStream = CType(resources.GetObject("DocumentViewerBarManager1.ImageStream"), DevExpress.Utils.ImageCollectionStreamer)
Me.DocumentViewerBarManager1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.PrintPreviewStaticItem1, Me.ProgressBarEditItem1, Me.PrintPreviewBarItem1, Me.PrintPreviewStaticItem2, Me.ZoomTrackBarEditItem1, Me.bbiDocumentMap, Me.bbiParameters, Me.bbiThumbnails, Me.bbiFind, Me.bbiHighlightEditingFields, Me.bbiCustomize, Me.bbiOpen, Me.bbiSave, Me.bbiPrint, Me.bbiPrintDirect, Me.bbiPageSetup, Me.bbiEditPageHF, Me.bbiScale, Me.bbiHandTool, Me.bbiMagnifier, Me.bbiZoomOut, Me.bbiZoom, Me.bbiZoomIn, Me.bbiShowFirstPage, Me.bbiShowPrevPage, Me.bbiShowNextPage, Me.bbiShowLastPage, Me.bbiMultiplePages, Me.bbiFillBackground, Me.bbiWatermark, Me.bbiExportFile, Me.bbiSendFile, Me.bbiClosePreview, Me.miFile, Me.miView, Me.miBackground, Me.miPageLayout, Me.miPageLayoutFacing, Me.miPageLayoutContinuous, Me.miToolbars, Me.PrintPreviewBarCheckItem1, Me.PrintPreviewBarCheckItem2, Me.PrintPreviewBarCheckItem3, Me.PrintPreviewBarCheckItem4, Me.PrintPreviewBarCheckItem5, Me.PrintPreviewBarCheckItem6, Me.PrintPreviewBarCheckItem7, Me.PrintPreviewBarCheckItem8, Me.PrintPreviewBarCheckItem9, Me.PrintPreviewBarCheckItem10, Me.PrintPreviewBarCheckItem11, Me.PrintPreviewBarCheckItem12, Me.PrintPreviewBarCheckItem13, Me.PrintPreviewBarCheckItem14, Me.PrintPreviewBarCheckItem15, Me.PrintPreviewBarCheckItem16, Me.PrintPreviewBarCheckItem17, Me.PrintPreviewBarCheckItem18, Me.PrintPreviewBarCheckItem19})
diff --git a/app/TaskFlow/frmMain.resx b/app/TaskFlow/frmMain.resx
index 95fed6a..ef593f4 100644
--- a/app/TaskFlow/frmMain.resx
+++ b/app/TaskFlow/frmMain.resx
@@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw
- CAAAAk1TRnQBSQFMAgEBAgEAAXgBCwF4AQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ CAAAAk1TRnQBSQFMAgEBAgEAAYABCwGAAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -176,9 +176,12 @@
Fill
+
+ 4, 4, 4, 4
+
- 233, 24
+ 285, 30
Microsoft Sans Serif, 8.25pt
@@ -186,6 +189,9 @@
Segoe UI, 12pt
+
+ 4, 4, 4, 4
+
Aktualisieren
@@ -1496,9 +1502,39 @@
0, 0
+
+ 4, 4, 4, 4
+
+
+ Allgemein
+
+
+ Auswertungen
+
+
+ Verwaltung
+
+
+ Grundeinstellungen
+
+
+ Workflow
+
+
+ Funktionen/App Start
+
+
+ Ad Hoc Workflows
+
Start
+
+ Funktionen
+
+
+ Workflow Tabelle
+
Tabelle
@@ -1506,13 +1542,16 @@
Aktionen
- 1178, 158
+ 1440, 194
- 0, 666
+ 0, 841
+
+
+ 4, 4, 4, 4
- 1178, 22
+ 1440, 28
RibbonStatusBar1
@@ -1539,7 +1578,7 @@
4
- 945, 484
+ 1155, 617
10
@@ -1556,6 +1595,27 @@
0
+
+ True
+
+
+ Tahoma, 9.75pt, style=Bold
+
+
+ 4, 4
+
+
+ 4, 0, 4, 0
+
+
+ 169, 21
+
+
+ 0
+
+
+ Choose a profile ...
+
lblCaptionMainGrid
@@ -1572,10 +1632,13 @@
Top
- 233, 0
+ 285, 0
+
+
+ 4, 4, 4, 4
- 945, 24
+ 1155, 30
9
@@ -1647,8 +1710,14 @@
863, 17
+
+ 261, 26
+
+
+ Starte Validierung für Profil
+
- 220, 30
+ 262, 30
cmsNavPane
@@ -1778,11 +1847,14 @@
0, 0
+
+ 4, 4, 4, 4
+
- 233
+ 285
- 233, 508
+ 285, 647
5
@@ -1809,10 +1881,13 @@
Tahoma, 9pt
- 0, 158
+ 0, 194
+
+
+ 4, 4, 4, 4
- 1178, 508
+ 1440, 647
4
@@ -1829,69 +1904,6 @@
2
-
- Allgemein
-
-
- Auswertungen
-
-
- Verwaltung
-
-
- Grundeinstellungen
-
-
- Workflow
-
-
- Funktionen/App Start
-
-
- Ad Hoc Workflows
-
-
- Funktionen
-
-
- Workflow Tabelle
-
-
- True
-
-
- Tahoma, 9.75pt, style=Bold
-
-
- 3, 3
-
-
- 127, 16
-
-
- 0
-
-
- Choose a profile ...
-
-
- lblCaptionMainGrid
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Panel2
-
-
- 0
-
-
- 219, 26
-
-
- Starte Validierung für Profil
-
17, 56
@@ -1901,8 +1913,29 @@
250, 56
+
+ 348, 30
+
+
+ Popup Erinnerung deaktivieren
+
+
+ 345, 6
+
+
+ 348, 30
+
+
+ In den Vordergrund
+
+
+ 348, 30
+
+
+ Out of Range - Fenster wiederherstellen
+
- 291, 100
+ 349, 100
ContextMenuNotifyIcon
@@ -1996,27 +2029,6 @@
True
-
- 290, 30
-
-
- Popup Erinnerung deaktivieren
-
-
- 287, 6
-
-
- 290, 30
-
-
- In den Vordergrund
-
-
- 290, 30
-
-
- Out of Range - Fenster wiederherstellen
-
605, 17
@@ -2042,10 +2054,13 @@
Bottom
- 0, 688
+ 0, 869
+
+
+ 4, 4, 4, 4
- 1178, 0
+ 1440, 0
barDockControlBottom
@@ -2065,8 +2080,11 @@
0, 0
+
+ 4, 4, 4, 4
+
- 0, 688
+ 0, 869
barDockControlLeft
@@ -2084,10 +2102,13 @@
Right
- 1178, 0
+ 1440, 0
+
+
+ 4, 4, 4, 4
- 0, 688
+ 0, 869
barDockControlRight
@@ -2108,10 +2129,10 @@
147
- 9, 19
+ 11, 24
- 1178, 688
+ 1440, 869
Tahoma, 12pt
@@ -2283,7 +2304,7 @@
- 4, 5, 4, 5
+ 5, 6, 5, 6
Manual
@@ -3444,9 +3465,6 @@
&Ansicht
-
- &Hintergrund
-
&Seiten Layout
@@ -3459,6 +3477,9 @@
Bars
+
+ &Hintergrund
+
PDF Dokument
@@ -3573,8 +3594,11 @@
Graphisches Dokument
+
+ 4, 4, 4, 4
+
- 1178, 0
+ 1440, 0
barDockControlTop
diff --git a/app/TaskFlow/frmMain.vb b/app/TaskFlow/frmMain.vb
index b7bb1e6..07d2544 100644
--- a/app/TaskFlow/frmMain.vb
+++ b/app/TaskFlow/frmMain.vb
@@ -799,6 +799,7 @@ Public Class frmMain
Sub LoadNavBar()
Dim profileGroupOpen As Boolean = False
If Not IsNothing(CurrNavBarGroup) Then
+ NavBarControl1.BeginUpdate() ' <-- Hinzufügen
Try
profileGroupOpen = CurrNavBarGroup.Expanded
Try
@@ -810,8 +811,10 @@ Public Class frmMain
End Try
Catch ex As Exception
-
+ Finally
+ NavBarControl1.EndUpdate() ' <-- Hinzufügen
End Try
+
End If
Try
diff --git a/app/TaskFlow/frmValidator.resx b/app/TaskFlow/frmValidator.resx
index 903053f..e43e940 100644
--- a/app/TaskFlow/frmValidator.resx
+++ b/app/TaskFlow/frmValidator.resx
@@ -488,6 +488,24 @@
4, 4, 4, 4
+
+ Top, Bottom, Left, Right
+
+
+ Segoe UI, 8.25pt
+
+
+ 8, 72
+
+
+ 4, 4, 4, 4
+
+
+ 823, 279
+
+
+ 3
+
PanelValidatorControl
@@ -500,6 +518,31 @@
0
+
+ Top, Left, Right
+
+
+ Segoe UI, 9.75pt
+
+
+
+ None
+
+
+ 8, 41
+
+
+ 4, 4, 4, 4
+
+
+ 824, 32
+
+
+ 1
+
+
+ LabelControl1
+
DESCRIPTIONLabel
@@ -512,6 +555,30 @@
2
+
+ Top, Left, Right
+
+
+ Segoe UI, 12pt, style=Bold
+
+
+ None
+
+
+ 6, 6
+
+
+ 4, 4, 4, 4
+
+
+ 824, 35
+
+
+ 1
+
+
+ LabelControl1
+
TITLELabel1
@@ -623,109 +690,6 @@
0
-
- Top, Bottom, Left, Right
-
-
- Segoe UI, 8.25pt
-
-
- 8, 72
-
-
- 4, 4, 4, 4
-
-
- 823, 279
-
-
- 3
-
-
- PanelValidatorControl
-
-
- DevExpress.XtraEditors.XtraScrollableControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- pnlMain
-
-
- 0
-
-
- Top, Left, Right
-
-
- Segoe UI, 9.75pt
-
-
-
- None
-
-
- 8, 41
-
-
- 4, 4, 4, 4
-
-
- 824, 32
-
-
- 1
-
-
- LabelControl1
-
-
- DESCRIPTIONLabel
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- pnlMain
-
-
- 2
-
-
- Top, Left, Right
-
-
- Segoe UI, 12pt, style=Bold
-
-
- None
-
-
- 6, 6
-
-
- 4, 4, 4, 4
-
-
- 824, 35
-
-
- 1
-
-
- LabelControl1
-
-
- TITLELabel1
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- pnlMain
-
-
- 3
-
1514, 26
@@ -1315,6 +1279,39 @@
4, 4, 4, 4
+
+ Datei
+
+
+ Daten
+
+
+ Aktionen
+
+
+ Hinweise
+
+
+ Anhänge
+
+
+ Anhänge zu Beleg
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAEluZm87bRIthgAAASZJREFUWEfN
+ l7ERwjAMRZmAinFeT8cMDMAgbENLyRZ0dKxAG+5zhAuKBDYOiOLd5YykPBJbdmZd180yGQ38mscF8I45
+ sAK2wB44AZc7utaYflOMYm3+EzUCC2ADHICuEMUqR7m2XpXAEtg5NyhFuaph6xYJrIGjU7QW1VCtKgEl
+ nJ1in6JaTxKvBPTIpvjnFtV8vI5IQJOm5Z2/Q7VvEzMS0My1SVOje7gCWrvFS63PG+SPYgJ0j7knoAZi
+ g0MaBMTKE1AXs4EhjQJbT0Ct1AaGNArsPQH1cxsY0ihw8gS0qdjAkEaBy18KpL+C9EmYvgyrGlEjbiNK
+ b8WieDNqEAg3I5G+HYvUA0lP6pFsKDHFk/joUNqTeizvSf0wGfLdT7MsRgO/5go/tJcKezdCSgAAAABJ
+ RU5ErkJggg==
+
+
+
+ Information
+
Start
@@ -2207,39 +2204,6 @@
Zoom
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMS4yLCBWZXJzaW9uPTIxLjIu
- NC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFlE
- ZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVi
- bGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURldkV4cHJlc3MuVXRpbHMuU3VwZXJUb29s
- VGlwBwAAAA1BbGxvd0h0bWxUZXh0EUZpeGVkVG9vbFRpcFdpZHRoCkl0ZW1zQ291bnQJaXRlbVR5cGUw
- BWl0ZW0wCWl0ZW1UeXBlMQVpdGVtMQQAAAQEBAQfRGV2RXhwcmVzcy5VdGlscy5EZWZhdWx0Qm9vbGVh
- bgMAAAABCCVEZXZFeHByZXNzLlV0aWxzLlN1cGVyVG9vbFRpcEl0ZW1UeXBlAgAAACFEZXZFeHByZXNz
- LlV0aWxzLlRvb2xUaXBUaXRsZUl0ZW0CAAAAJURldkV4cHJlc3MuVXRpbHMuU3VwZXJUb29sVGlwSXRl
- bVR5cGUCAAAAHERldkV4cHJlc3MuVXRpbHMuVG9vbFRpcEl0ZW0CAAAAAgAAAAX8////H0RldkV4cHJl
- c3MuVXRpbHMuRGVmYXVsdEJvb2xlYW4BAAAAB3ZhbHVlX18ACAMAAAACAAAAAAIAAAAF+////yVEZXZF
- eHByZXNzLlV0aWxzLlN1cGVyVG9vbFRpcEl0ZW1UeXBlAQAAAAd2YWx1ZV9fAAgCAAAAAQAAAAkGAAAA
- Afn////7////AAAAAAkIAAAADAkAAABRU3lzdGVtLkRyYXdpbmcsIFZlcnNpb249NC4wLjAuMCwgQ3Vs
- dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQYAAAAhRGV2RXhwcmVz
- cy5VdGlscy5Ub29sVGlwVGl0bGVJdGVtBwAAAA1BbGxvd0h0bWxUZXh0BEljb24MSW1hZ2VPcHRpb25z
- CkxlZnRJbmRlbnQITWF4V2lkdGgST3duZXJBbGxvd0h0bWxUZXh0BFRleHQEBAQAAAABH0RldkV4cHJl
- c3MuVXRpbHMuRGVmYXVsdEJvb2xlYW4DAAAAE1N5c3RlbS5EcmF3aW5nLkljb24JAAAAKERldkV4cHJl
- c3MuVXRpbHMuVG9vbFRpcEl0ZW1JbWFnZU9wdGlvbnMCAAAACAgBAgAAAAH2/////P///wIAAAAKCQsA
- AAAAAAAAiwEAAAAGDAAAAARab29tBQgAAAAcRGV2RXhwcmVzcy5VdGlscy5Ub29sVGlwSXRlbQcAAAAN
- QWxsb3dIdG1sVGV4dARJY29uDEltYWdlT3B0aW9ucwpMZWZ0SW5kZW50CE1heFdpZHRoEk93bmVyQWxs
- b3dIdG1sVGV4dARUZXh0BAQEAAAAAR9EZXZFeHByZXNzLlV0aWxzLkRlZmF1bHRCb29sZWFuAwAAABNT
- eXN0ZW0uRHJhd2luZy5JY29uCQAAAChEZXZFeHByZXNzLlV0aWxzLlRvb2xUaXBJdGVtSW1hZ2VPcHRp
- b25zAgAAAAgIAQIAAAAB8/////z///8CAAAACgkOAAAAAAAAAIsBAAAABg8AAAApw4RuZGVybiBkZXIg
- Wm9vbS1TdHVmZSBkZXMgUERGLURva3VtZW50cy4FCwAAAChEZXZFeHByZXNzLlV0aWxzLlRvb2xUaXBJ
- dGVtSW1hZ2VPcHRpb25zBQAAAAhJbWFnZVVyaQxTdmdJbWFnZVNpemUJQWxpZ25tZW50CkltYWdlSW5k
- ZXgTSW1hZ2VUb1RleHREaXN0YW5jZQEEBAAAE1N5c3RlbS5EcmF3aW5nLlNpemUJAAAAJkRldkV4cHJl
- c3MuVXRpbHMuVG9vbFRpcEltYWdlQWxpZ25tZW50AgAAAAgIAgAAAAYQAAAAAAXv////E1N5c3RlbS5E
- cmF3aW5nLlNpemUCAAAABXdpZHRoBmhlaWdodAAACAgJAAAAAAAAAAAAAAAF7v///yZEZXZFeHByZXNz
- LlV0aWxzLlRvb2xUaXBJbWFnZUFsaWdubWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAD/////DgAAAAEO
- AAAACwAAAAkQAAAAAe3////v////AAAAAAAAAAAB7P///+7///8AAAAA/////w4AAAAL
-
-
10 %
@@ -2282,6 +2246,39 @@
sichtbare einpassen
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMS4yLCBWZXJzaW9uPTIxLjIu
+ NC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFlE
+ ZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVi
+ bGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURldkV4cHJlc3MuVXRpbHMuU3VwZXJUb29s
+ VGlwBwAAAA1BbGxvd0h0bWxUZXh0EUZpeGVkVG9vbFRpcFdpZHRoCkl0ZW1zQ291bnQJaXRlbVR5cGUw
+ BWl0ZW0wCWl0ZW1UeXBlMQVpdGVtMQQAAAQEBAQfRGV2RXhwcmVzcy5VdGlscy5EZWZhdWx0Qm9vbGVh
+ bgMAAAABCCVEZXZFeHByZXNzLlV0aWxzLlN1cGVyVG9vbFRpcEl0ZW1UeXBlAgAAACFEZXZFeHByZXNz
+ LlV0aWxzLlRvb2xUaXBUaXRsZUl0ZW0CAAAAJURldkV4cHJlc3MuVXRpbHMuU3VwZXJUb29sVGlwSXRl
+ bVR5cGUCAAAAHERldkV4cHJlc3MuVXRpbHMuVG9vbFRpcEl0ZW0CAAAAAgAAAAX8////H0RldkV4cHJl
+ c3MuVXRpbHMuRGVmYXVsdEJvb2xlYW4BAAAAB3ZhbHVlX18ACAMAAAACAAAAAAIAAAAF+////yVEZXZF
+ eHByZXNzLlV0aWxzLlN1cGVyVG9vbFRpcEl0ZW1UeXBlAQAAAAd2YWx1ZV9fAAgCAAAAAQAAAAkGAAAA
+ Afn////7////AAAAAAkIAAAADAkAAABRU3lzdGVtLkRyYXdpbmcsIFZlcnNpb249NC4wLjAuMCwgQ3Vs
+ dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQYAAAAhRGV2RXhwcmVz
+ cy5VdGlscy5Ub29sVGlwVGl0bGVJdGVtBwAAAA1BbGxvd0h0bWxUZXh0BEljb24MSW1hZ2VPcHRpb25z
+ CkxlZnRJbmRlbnQITWF4V2lkdGgST3duZXJBbGxvd0h0bWxUZXh0BFRleHQEBAQAAAABH0RldkV4cHJl
+ c3MuVXRpbHMuRGVmYXVsdEJvb2xlYW4DAAAAE1N5c3RlbS5EcmF3aW5nLkljb24JAAAAKERldkV4cHJl
+ c3MuVXRpbHMuVG9vbFRpcEl0ZW1JbWFnZU9wdGlvbnMCAAAACAgBAgAAAAH2/////P///wIAAAAKCQsA
+ AAAAAAAAiwEAAAAGDAAAAARab29tBQgAAAAcRGV2RXhwcmVzcy5VdGlscy5Ub29sVGlwSXRlbQcAAAAN
+ QWxsb3dIdG1sVGV4dARJY29uDEltYWdlT3B0aW9ucwpMZWZ0SW5kZW50CE1heFdpZHRoEk93bmVyQWxs
+ b3dIdG1sVGV4dARUZXh0BAQEAAAAAR9EZXZFeHByZXNzLlV0aWxzLkRlZmF1bHRCb29sZWFuAwAAABNT
+ eXN0ZW0uRHJhd2luZy5JY29uCQAAAChEZXZFeHByZXNzLlV0aWxzLlRvb2xUaXBJdGVtSW1hZ2VPcHRp
+ b25zAgAAAAgIAQIAAAAB8/////z///8CAAAACgkOAAAAAAAAAIsBAAAABg8AAAApw4RuZGVybiBkZXIg
+ Wm9vbS1TdHVmZSBkZXMgUERGLURva3VtZW50cy4FCwAAAChEZXZFeHByZXNzLlV0aWxzLlRvb2xUaXBJ
+ dGVtSW1hZ2VPcHRpb25zBQAAAAhJbWFnZVVyaQxTdmdJbWFnZVNpemUJQWxpZ25tZW50CkltYWdlSW5k
+ ZXgTSW1hZ2VUb1RleHREaXN0YW5jZQEEBAAAE1N5c3RlbS5EcmF3aW5nLlNpemUJAAAAJkRldkV4cHJl
+ c3MuVXRpbHMuVG9vbFRpcEltYWdlQWxpZ25tZW50AgAAAAgIAgAAAAYQAAAAAAXv////E1N5c3RlbS5E
+ cmF3aW5nLlNpemUCAAAABXdpZHRoBmhlaWdodAAACAgJAAAAAAAAAAAAAAAF7v///yZEZXZFeHByZXNz
+ LlV0aWxzLlRvb2xUaXBJbWFnZUFsaWdubWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAD/////DgAAAAEO
+ AAAACwAAAAkQAAAAAe3////v////AAAAAAAAAAAB7P///+7///8AAAAA/////w4AAAAL
+
+
BarButtonItem1
@@ -2300,39 +2297,6 @@
232, 128
-
- Datei
-
-
- Daten
-
-
- Aktionen
-
-
- Hinweise
-
-
- Anhänge
-
-
- Anhänge zu Beleg
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAEluZm87bRIthgAAASZJREFUWEfN
- l7ERwjAMRZmAinFeT8cMDMAgbENLyRZ0dKxAG+5zhAuKBDYOiOLd5YykPBJbdmZd180yGQ38mscF8I45
- sAK2wB44AZc7utaYflOMYm3+EzUCC2ADHICuEMUqR7m2XpXAEtg5NyhFuaph6xYJrIGjU7QW1VCtKgEl
- nJ1in6JaTxKvBPTIpvjnFtV8vI5IQJOm5Z2/Q7VvEzMS0My1SVOje7gCWrvFS63PG+SPYgJ0j7knoAZi
- g0MaBMTKE1AXs4EhjQJbT0Ct1AaGNArsPQH1cxsY0ihw8gS0qdjAkEaBy18KpL+C9EmYvgyrGlEjbiNK
- b8WieDNqEAg3I5G+HYvUA0lP6pFsKDHFk/joUNqTeizvSf0wGfLdT7MsRgO/5go/tJcKezdCSgAAAABJ
- RU5ErkJggg==
-
-
-
- Information
-
RibbonPage2
diff --git a/app/TaskFlow/frmValidator.vb b/app/TaskFlow/frmValidator.vb
index d07dc8e..e8394b7 100644
--- a/app/TaskFlow/frmValidator.vb
+++ b/app/TaskFlow/frmValidator.vb
@@ -29,7 +29,7 @@ Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.ZooFlow.Constants
-
+Imports System.Collections.Generic
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox
@@ -124,8 +124,9 @@ Public Class frmValidator
Private listofControls As New List(Of String)
Private frmMessages As frmValidator_Messages
-
- Private Class S
+ Private ReadOnly _SqlDataCache As New Dictionary(Of String, DataTable)(StringComparer.OrdinalIgnoreCase)
+ Private ReadOnly _SqlScalarCache As New Dictionary(Of String, Object)(StringComparer.OrdinalIgnoreCase)
+ Private Class Translation_Strings
Inherits My.Resources.frmValidator_Strings
End Class
@@ -316,6 +317,15 @@ Public Class frmValidator
_step = 6
MyValidationLogger.Debug("Step 6")
+ Dim profileLangAll = CURRENT_DT_PROFILE_LANGUAGE.AsEnumerable().
+ GroupBy(Function(r) r.Field(Of String)("TITLE")).
+ ToDictionary(Function(g) g.Key, Function(g) g.First())
+
+ Dim profileLangUser = CURRENT_DT_PROFILE_LANGUAGE.AsEnumerable().
+ Where(Function(r) r.Field(Of String)("LANGUAGE") = USER_LANGUAGE).
+ GroupBy(Function(r) r.Field(Of String)("TITLE")).
+ ToDictionary(Function(g) g.Key, Function(g) g.First())
+
' === MESSPUNKT 6: Profile-Properties verarbeiten ===
For Each oProfileRow As DataRow In CURRENT_DT_PROFILE.Rows
PROFIL_FINISH_SQL = oProfileRow.Item("SQL_BTN_FINISH")
@@ -334,28 +344,28 @@ Public Class frmValidator
perfLastCheck = DateTime.Now
End If
- ' === MESSPUNKT 7: Language-Strings laden (potentiell langsam) ===
+ ' === MESSPUNKT 7: Language-Strings laden (optimiert) ===
Dim oProfileTitle As String = ""
Dim oProfileDescription As String = ""
- For Each oRow As DataRow In CURRENT_DT_PROFILE_LANGUAGE.Rows
- Console.WriteLine(oRow.Item("TITLE"))
- If oRow.Item("TITLE") = $"PROFILE_TITLE{CURRENT_ProfilGUID}" Then
- oProfileTitle = oRow.Item("STRING1")
- ElseIf oRow.Item("TITLE") = $"PROFILE_DESCRIPTION{CURRENT_ProfilGUID}" Then
- oProfileDescription = oRow.Item("STRING1")
- ElseIf oRow.Item("TITLE") = $"PROFILE_FINAL_TEXT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
- If oRow.Item("STRING1") <> "" Then
- oProfileFinalText = oRow.Item("STRING1")
- End If
- ElseIf oRow.Item("TITLE") = $"PROFILE_REJECTION_CAPT{CURRENT_ProfilGUID}" Then
- oProfileRejectionText = oRow.Item("STRING1")
- ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_CAPT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
- oProfileNotResponsibleText = oRow.Item("STRING1")
- ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_QUEST{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
- oProfileNotResponsibleQuestion = oRow.Item("STRING1")
- End If
- Next
+ Dim titleKey = $"PROFILE_TITLE{CURRENT_ProfilGUID}"
+ Dim descKey = $"PROFILE_DESCRIPTION{CURRENT_ProfilGUID}"
+ Dim finalKey = $"PROFILE_FINAL_TEXT{CURRENT_ProfilGUID}"
+ Dim rejectKey = $"PROFILE_REJECTION_CAPT{CURRENT_ProfilGUID}"
+ Dim notRespKey = $"PROFILE_NOT_RESPONSIBLE_CAPT{CURRENT_ProfilGUID}"
+ Dim notRespQKey = $"PROFILE_NOT_RESPONSIBLE_QUEST{CURRENT_ProfilGUID}"
+
+ Dim row As DataRow = Nothing
+
+ If profileLangAll.TryGetValue(titleKey, row) Then oProfileTitle = row.Item("STRING1")
+ If profileLangAll.TryGetValue(descKey, row) Then oProfileDescription = row.Item("STRING1")
+ If profileLangAll.TryGetValue(rejectKey, row) Then oProfileRejectionText = row.Item("STRING1")
+
+ If profileLangUser.TryGetValue(finalKey, row) Then
+ If row.Item("STRING1").ToString <> "" Then oProfileFinalText = row.Item("STRING1")
+ End If
+ If profileLangUser.TryGetValue(notRespKey, row) Then oProfileNotResponsibleText = row.Item("STRING1")
+ If profileLangUser.TryGetValue(notRespQKey, row) Then oProfileNotResponsibleQuestion = row.Item("STRING1")
If LOG_HOTSPOTS Then
MyValidationLogger.Info($"[PERF] Nach Language-Loop ({CURRENT_DT_PROFILE_LANGUAGE.Rows.Count} Rows): {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
@@ -556,7 +566,6 @@ Public Class frmValidator
End Try
End Sub
-
Private Sub frmValidation_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
_FormClosing = True
@@ -583,24 +592,20 @@ Public Class frmValidator
End Try
Try
- Dim oDel = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID}"
+ Dim oSQL As String
+ If CURRENT_DOC_GUID <> 0 Then
+ oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbNewLine &
+ $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID};"
+ Else
+ oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
+ End If
- DatabaseFallback.ExecuteNonQueryECM(oDel)
+ DatabaseFallback.ExecuteNonQueryECM(oSQL)
Catch ex As Exception
MyValidationLogger.Error(ex)
MsgBox("Error in delete jumped files:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
- If CURRENT_DOC_GUID <> 0 Then
- Try
- Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
- DatabaseFallback.ExecuteNonQueryECM(sql)
- 'PRTF_PROFILE_FILES_WORK("FreeFile")
-
- Catch ex As Exception
- MyValidationLogger.Error(ex)
- End Try
- End If
Reset_CurrentReferences()
Try
@@ -764,10 +769,6 @@ Public Class frmValidator
Dim oGUID As String = row.Item("GUID")
Dim oReadOnly As Boolean = row.Item("READ_ONLY")
MyValidationLogger.Debug($"LoadSQLData for Control [{name}] with GUID [{oGUID}] ...")
- 'If clsPatterns.HasComplexPatterns(row.Item("SQL_UEBERPRUEFUNG")) Then
- ' Logger.Debug($"SQL [{row.Item("SQL_UEBERPRUEFUNG")}] has complex patterns - GUID: {oGUID}")
- ' Continue For
- 'End If
If oReadOnly = True Then
MyValidationLogger.Debug("Control for Index [{0}] is read-only. Continuing.")
@@ -786,15 +787,9 @@ Public Class frmValidator
Dim oSQLStatement As String = row.Item("SQL_UEBERPRUEFUNG")
Dim oConnectionId As Integer = row.Item("CONNECTION_ID")
- 'If clsPatterns.HasComplexPatterns(sqlStatement) Then
- ' Continue For
- 'End If
If IsNothing(oSQLStatement) Then
Continue For
End If
- 'oSql = clsPatterns.ReplaceUserValues(sqlStatement, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
- 'oSql = clsPatterns.ReplaceInternalValues(oSql)
-
oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, PanelValidatorControl, True)
If IsNothing(oSQLStatement) Then
@@ -805,18 +800,22 @@ Public Class frmValidator
Continue For
End If
- Dim oDTContent As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLStatement, DatabaseType.ECM) With {
- .ConnectionId = oConnectionId
- })
+ Dim oDTContent As DataTable = Nothing
+ Dim cacheKey = $"{oConnectionId}|{oSQLStatement}"
- If IsNothing(oDTContent) Then
- MyValidationLogger.Warn($"SQL-Query [{oSQLStatement}] for control {control.Name} is invalid.")
- Exit Sub
+ 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
End If
+
Dim oValue
- ' Because LookupControl is a subtype of TextEdit,
- ' we need to check for LookupControl first!
If TypeOf control Is LookupControl3 Then
Try
Dim lookup As LookupControl3 = control
@@ -865,13 +864,10 @@ Public Class frmValidator
Dim oDataSource As DataTable = dataGridView.DataSource
If oDataSource Is Nothing OrElse oDataSource.Rows.Count = 0 Then
- 'dataGridView.DataSource = dt
-
Dim oDatatable As DataTable = oDTContent.Clone()
For Each oColumn As DataColumn In oDatatable.Columns
If oDataSource.Columns(oColumn.ColumnName) Is Nothing Then
- 'oDataSource.Columns.Add(oColumn)
oDataSource.Columns.Add(oColumn.ColumnName, oColumn.DataType)
End If
Next
@@ -1343,10 +1339,9 @@ Public Class frmValidator
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 DTCONTROLS_UEBP As DataTable
- DTCONTROLS_UEBP = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_SQL_UEP", New GetDatatableOptions(oSql, DatabaseType.ECM) With {
- .FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{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)
If Not IsNothing(DTCONTROLS_UEBP) AndAlso DTCONTROLS_UEBP.Rows.Count > 0 Then
For Each oRow As DataRow In DTCONTROLS_UEBP.Rows
@@ -1366,9 +1361,7 @@ Public Class frmValidator
MyValidationLogger.Error(ex)
MyValidationLogger.Info("Unexpected Error in Display SQL result for control: " & oRow.Item("NAME") & " - ERROR: " & ex.Message)
End Try
-
Next
-
End If
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
@@ -1549,9 +1542,9 @@ Public Class frmValidator
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 DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
- .FilterExpression = String.Format("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 DT As DataTable = GetControlMetaBySql("TBPM_PROFILE_CONTROLS", sql, oFilter)
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
For Each ROW As DataRow In DT.Rows
@@ -1561,39 +1554,32 @@ Public Class frmValidator
Dim sql_Statement = ROW.Item("SQL_UEBERPRUEFUNG")
Dim cellvalue = dgv.Rows(dgv.Rows.Count - 2).Cells(0).Value.ToString()
sql_Statement = sql_Statement.ToString.Replace(dgv.Name, cellvalue)
- 'Dim resultDT: DataTable = ClassDatabase.Return_Datatable_ConId(sql_Statement, ROW.Item(1), $"oControlID[{CONTROL_ID}")
- Dim resultDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sql_Statement, DatabaseType.ECM) With {
- .ConnectionId = ROW.Item("CONNECTION_ID")
- })
+
+ '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
- 'Nur dediziert einen Wert zurückerhalten
For Each row1 As DataRow In resultDT.Rows
Dim result = row1.Item(0)
If Not IsNothing(result) Then
PanelValidatorControl.Controls(displayboxname).Text = result.ToString
-
Exit For
Else
PanelValidatorControl.Controls(displayboxname).Text = "RESULT = NOTHING"
-
Exit For
End If
Next
Else
PanelValidatorControl.Controls(displayboxname).Text = "NO RESULT"
-
End If
-
-
End If
Catch ex As Exception
MyValidationLogger.Error(ex)
MyValidationLogger.Info("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
End Try
-
Next
-
End If
Catch ex As Exception
@@ -1749,9 +1735,7 @@ Public Class frmValidator
oControlDataSql = clsPatterns.ReplaceAllValues(oControlDataSql, PanelValidatorControl, True)
- Dim oControlDataResult As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oControlDataSql, DatabaseType.ECM) With {
- .ConnectionId = oConnectionId
- })
+ Dim oControlDataResult As DataTable = GetCachedDatatable(oControlDataSql, oConnectionId)
If oControlDataResult Is Nothing Then
Exit Sub
@@ -1962,9 +1946,10 @@ Public Class frmValidator
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingControl_In_Action = True
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"LookupControl_DependingControls - oControlID: {oControlID}")
- Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
- .ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
- })
+ 'Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
+ ' .ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
+ '})
+ Dim oDTDEPENDING_RESULT As DataTable = GetCachedDatatable(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"))
If Not IsNothing(oDTDEPENDING_RESULT) Then
Try
Dim oFound As Boolean = False
@@ -2090,11 +2075,10 @@ Public Class frmValidator
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingControl_In_Action = True
MyValidationLogger.Debug($"_DependingControl_In_Action: Control {oDEPENDING_CtrlName} ...")
- 'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"CheckBox_DependingControls - oControlID: {oControlID}")
- Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
- .ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
- })
-
+ 'Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
+ ' .ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
+ '})
+ Dim oDTDEPENDING_RESULT As DataTable = GetCachedDatatable(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"))
Try
Dim oFound As Boolean = False
'Dim oDependingLookup As LookupControl3 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault()
@@ -2211,11 +2195,10 @@ Public Class frmValidator
_DependingColumn_In_Action = True
Try
- 'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"LookupControl_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}")
- Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
- .ConnectionId = oCONNID
- })
-
+ 'Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
+ ' .ConnectionId = oCONNID
+ '})
+ Dim oDTDEPENDING_RESULT As DataTable = GetCachedDatatable(oSqlCommand, oCONNID)
If Not IsNothing(oDTDEPENDING_RESULT) Then
MyValidationLogger.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ")
For Each oControl As Control In PanelValidatorControl.Controls
@@ -2284,7 +2267,6 @@ Public Class frmValidator
Public Sub OnCmbselectedIndex(sender As System.Object, e As System.EventArgs)
Dim oCombobox As Windows.Forms.ComboBox = sender
If oCombobox.SelectedIndex <> -1 And _Indexe_Loaded = True Then
- ' Dirty-Flag setzen
Dim oMeta As ClassControlCreator.ControlMetadata = oCombobox.Tag
oMeta.IsDirty = True
MyValidationLogger.Debug($"ComboBox [{oMeta.Name}] marked as dirty")
@@ -2294,9 +2276,10 @@ Public Class frmValidator
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 DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
- .FilterExpression = String.Format("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 DT As DataTable = GetControlMetaBySql("TBPM_PROFILE_CONTROLS", sql, oFilter)
+
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
If _DependingControl_In_Action = True Then
Exit Sub
@@ -2318,7 +2301,6 @@ Public Class frmValidator
Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
_Step = 5
_DependingControl_In_Action = False
-
End If
Catch ex As Exception
MyValidationLogger.Error(ex)
@@ -2372,8 +2354,10 @@ Public Class frmValidator
Dim oConnectionId As Integer = oRowEnablingControl.Item("CONNECTION_ID")
Dim oENABLERESULT As Boolean = False
- oENABLERESULT = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
-
+ Dim oResult = GetCachedScalar(oSqlCommand, oConnectionId)
+ If oResult IsNot Nothing AndAlso Not IsDBNull(oResult) Then
+ oENABLERESULT = CBool(oResult)
+ End If
Try
Dim oFound As Boolean = False
@@ -2444,14 +2428,11 @@ Public Class frmValidator
If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then
MyValidationLogger.Debug($"Found the Control on panel which needs to be checked [{oENABLE_GUID}]...")
- 'Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD")), "", oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD"))
- 'Dim oConID = oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD_CONID")
-
Dim oConnectionId As Integer = oRowEnablingControl.ItemEx("CONNECTION_ID", 0)
Dim oSqlCommand = oRowEnablingControl.ItemEx("SQL_ENABLE_ON_LOAD", String.Empty)
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
- Dim oResult = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
+ Dim oResult = GetCachedScalar(oSqlCommand, oConnectionId)
Try
MyValidationLogger.Debug($"Result of Enable SQL [{oResult}]...")
@@ -2547,6 +2528,48 @@ Public Class frmValidator
End If
End If
End Sub
+ Private Function GetControlMetaBySql(tableName As String, sql As String, filter As String) As DataTable
+ Dim dt As DataTable = Nothing
+ Dim cacheKey = $"META|{tableName}|{sql}|{filter}"
+
+ 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
+ End If
+
+ Return dt
+ End Function
+ Private Function GetCachedDatatable(sql As String, connectionId As Integer) As DataTable
+ Dim dt As DataTable = Nothing
+ Dim cacheKey = $"{connectionId}|{sql}"
+
+ If Not _SqlDataCache.TryGetValue(cacheKey, dt) Then
+ dt = DatabaseFallback.GetDatatable(New GetDatatableOptions(sql, DatabaseType.ECM) With {
+ .ConnectionId = connectionId
+ })
+ If dt IsNot Nothing Then
+ _SqlDataCache(cacheKey) = dt
+ End If
+ End If
+
+ Return dt
+ End Function
+
+ Private Function GetCachedScalar(sql As String, connectionId As Integer) As Object
+ Dim result As Object = Nothing
+ Dim cacheKey = $"SCALAR|{connectionId}|{sql}"
+
+ If Not _SqlScalarCache.TryGetValue(cacheKey, result) Then
+ result = DatabaseFallback.GetScalarValueWithConnection(sql, connectionId)
+ _SqlScalarCache(cacheKey) = result
+ End If
+
+ Return result
+ End Function
Private Function CheckValueExists(ByVal control As Control)
Try
@@ -2696,26 +2719,37 @@ Public Class frmValidator
Dim oResult As String
-
WMDocPathWindows = String.Empty
If OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
- Dim oSQL = $"SELECT dbo.FNPM_GET_FILEPATH ({CURRENT_DOC_GUID},{_CheckStandard})"
- oResult = DatabaseFallback.GetScalarValueECM(oSQL)
- MyValidationLogger.Debug($"First Checking file [{oResult}] exists?...")
- If File.Exists(oResult) = False Then
+ Dim oSQL = $"SELECT dbo.FNPM_GET_FILEPATH({CURRENT_DOC_GUID},{_CheckStandard}) AS PATH0, dbo.FNPM_GET_FILEPATH({CURRENT_DOC_GUID},1) AS PATH1"
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+
+ If oDT Is Nothing OrElse oDT.Rows.Count = 0 Then
+ MyValidationLogger.Warn("GetDocPathWindows: No result for file paths!")
+ Return False
+ End If
+
+ Dim path0 = ObjectEx.NotNull(oDT.Rows(0).Item("PATH0"), String.Empty).ToString
+ Dim path1 = ObjectEx.NotNull(oDT.Rows(0).Item("PATH1"), String.Empty).ToString
+
+ MyValidationLogger.Debug($"First Checking file [{path0}] exists?...")
+
+ If path0 <> String.Empty AndAlso File.Exists(path0) Then
+ oResult = path0
+ Else
MyValidationLogger.Info($"Getting filepath with standard 1 ...")
- oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)"
- oResult = DatabaseFallback.GetScalarValueECM(oSQL)
- MyValidationLogger.Debug($"Second Checking file [{oResult}] exists?...")
- If File.Exists(oResult) = False Then
- MyValidationLogger.Info($"Second FileExists also returned false [{oResult}]!")
- DocPathWindows = oResult
- MyValidationLogger.Warn($"GetDocPathWindows: File [{oResult}] not existing!")
+ MyValidationLogger.Debug($"Second Checking file [{path1}] exists?...")
+ If path1 <> String.Empty AndAlso File.Exists(path1) Then
+ oResult = path1
+ Else
+ MyValidationLogger.Info($"Second FileExists also returned false [{path1}]!")
+ DocPathWindows = path1
+ MyValidationLogger.Warn($"GetDocPathWindows: File [{path1}] not existing!")
Return False
End If
End If
- DocPathWindows = oResult
+ DocPathWindows = oResult
Else
oResult = ClassConstants.OpModeFS_ZF
MyValidationLogger.Debug($"GetDocPathWindows: Filestore is {ClassConstants.OpModeFS_ZF}")
@@ -2750,7 +2784,8 @@ Public Class frmValidator
Sub Load_Next_Document(first As Boolean)
-
+ _SqlDataCache.Clear()
+ _SqlScalarCache.Clear()
CURRENT_WMFILE = Nothing
activate_controls(False)
oErrMsgMissingInput = ""
@@ -2816,7 +2851,7 @@ Public Class frmValidator
' ############ Infos eintragen #################
If Amount_Docs2Validate > 1 Then
- Dim omsg = String.Format(S.Verbleibende_Vorgänge___0_, Amount_Docs2Validate)
+ Dim omsg = String.Format(Translation_Strings.Verbleibende_Vorgänge___0_, Amount_Docs2Validate)
bsiInformation.Caption = omsg
bsiInformation.Caption = omsg
@@ -2908,7 +2943,7 @@ Public Class frmValidator
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
Else
- Dim oMsg = S.Ende_des_Profils___Keine_weiteren_Vorgänge
+ Dim oMsg = Translation_Strings.Ende_des_Profils___Keine_weiteren_Vorgänge
MyValidationLogger.Info(oMsg)
MyValidationLogger.Debug(oMsg)
activate_controls(True)
@@ -4335,6 +4370,10 @@ Public Class frmValidator
End Sub
Private Function ForceGridValidation()
+ Dim perfStart As DateTime = If(LOG_HOTSPOTS, DateTime.Now, Nothing)
+ Dim perfLastCheck As DateTime = perfStart
+ If LOG_HOTSPOTS Then MyValidationLogger.Info("[PERF] ForceGridValidation START")
+
Dim oValidation As Boolean = True
Dim oGrids = (From oControl In PanelValidatorControl.Controls
Where TypeOf oControl Is GridControl
@@ -4357,11 +4396,23 @@ Public Class frmValidator
MyValidationLogger.Debug("Validation of Grid [{0}] ended with Result: [{1}]", oGrid.Name, oValidation)
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Grid {oGrid.Name}: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ perfLastCheck = DateTime.Now
+ End If
+
If oValidation = False Then
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] ForceGridValidation ABORT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
+ End If
Return False
End If
Next
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] ForceGridValidation GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
+ End If
+
Return True
End Function
@@ -4460,6 +4511,7 @@ Public Class frmValidator
Return False
End Try
End Function
+
Sub Finish_WFStep(Optional includeFI As Boolean = True)
btnSave.Enabled = False
MyValidationLogger.Debug("Abschluss für DocID " & CURRENT_DOC_ID & " wird gestartet ...")
@@ -5235,7 +5287,7 @@ Public Class frmValidator
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
Try
- Dim oWrongInputMessage = S.Falsche_Eingabe
+ Dim oWrongInputMessage = Translation_Strings.Falsche_Eingabe
Dim oDevexpressTextEdit As DevExpress.XtraEditors.TextEdit = oControl
MyValidationLogger.Debug("Validating Textbox..")
@@ -5986,20 +6038,37 @@ Public Class frmValidator
End Sub
Sub Datei_ueberspringen()
+ Dim perfStart As DateTime = If(LOG_HOTSPOTS, DateTime.Now, Nothing)
+ Dim perfLastCheck As DateTime = perfStart
+ If LOG_HOTSPOTS Then MyValidationLogger.Info("[PERF] Datei_ueberspringen START")
+
Try
MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)")
- 'Das Dokument freigeben
- 'PRTF_PROFILE_FILES_WORK("FreeFile")
- Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
- DatabaseFallback.ExecuteNonQueryECM(sql)
- Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}"
+ Dim oSQL = $"UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID};" & vbNewLine &
+ $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID};"
+
DatabaseFallback.ExecuteNonQueryECM(oSQL)
+
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Nach UPDATE+PRPM_FILES_NOT_INDEXED: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ perfLastCheck = DateTime.Now
+ End If
+
MyValidationLogger.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}")
Load_Next_Document(False)
+
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Nach Load_Next_Document: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ End If
+
Catch ex As Exception
MyValidationLogger.Error(ex)
MsgBox("Fehler bei Überspringen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
+ Finally
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Datei_ueberspringen GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
+ End If
End Try
End Sub
Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean
@@ -6164,7 +6233,7 @@ Public Class frmValidator
My.Settings.Save()
End Sub
Private Sub btnSave_MouseHover(sender As Object, e As EventArgs)
- ToolTip1.Show(S.F2_für_Speichern, btnSave)
+ ToolTip1.Show(Translation_Strings.F2_für_Speichern, btnSave)
End Sub
Sub Reload_Controls(SingleAttribute As String)
@@ -6232,7 +6301,7 @@ Public Class frmValidator
Private Sub bbtniRefresh_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniRefresh.ItemClick
Reload_Controls("")
Try
- btnSave.Text = S.Speichern___Nächster_Vorgang__F2_
+ btnSave.Text = Translation_Strings.Speichern___Nächster_Vorgang__F2_
Catch ex As Exception
End Try
@@ -6241,9 +6310,32 @@ Public Class frmValidator
End Sub
Private Sub bbtniNext_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniNext.ItemClick
+ Dim perfStart As DateTime = If(LOG_HOTSPOTS, DateTime.Now, Nothing)
+ Dim perfLastCheck As DateTime = perfStart
+ If LOG_HOTSPOTS Then MyValidationLogger.Info("[PERF] bbtniNext_ItemClick START")
+
If ForceGridValidation() = True Then
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Nach ForceGridValidation: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ perfLastCheck = DateTime.Now
+ End If
+
Reset_CurrentReferences()
+
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Nach Reset_CurrentReferences: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ perfLastCheck = DateTime.Now
+ End If
+
Datei_ueberspringen()
+
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] Nach Datei_ueberspringen: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
+ End If
+ End If
+
+ If LOG_HOTSPOTS Then
+ MyValidationLogger.Info($"[PERF] bbtniNext_ItemClick GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
End If
End Sub
@@ -6266,7 +6358,7 @@ Public Class frmValidator
If ForceGridValidation() = True Then
Dim oRESULT As String
'oRESULT = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("InputSaved")
- oRESULT = S.Eingaben_gespeichert
+ oRESULT = Translation_Strings.Eingaben_gespeichert
If Check_UpdateIndexe() = True Then
SetStatusLabel($"Data saved", "LimeGreen")