6 Commits

Author SHA1 Message Date
Developer01
574c13c9ab Index-Typ-Überprüfung in frmFormDesigner angepasst
Mehrere Funktionen zur Überprüfung von Index-Typen wurden geändert:
- Die Initialisierung der Variablen `oType` wurde vereinfacht.
- Eine neue Bedingung für `IndexName = "@@DISPLAY_ONLY"` wurde hinzugefügt, die die Funktion frühzeitig mit `0` beendet.
- Die bestehende Logik zur Bestimmung des Index-Typs bleibt unverändert.
2026-08-13 11:45:31 +02:00
Developer01
966d3f404d Eigenschaft Active hinzugefügt und Bugfixes
Die `Active`-Eigenschaft wurde in `ModuleControlProperties` hinzugefügt und an eine neue Position verschoben. Änderungen in `frmFormDesigner` ermöglichen die Zuweisung von `Active` basierend auf Datenquellenwerten.

In `frmMain` wurde die Methode `Reset_Current` hinzugefügt, um Dokumentzustände zurückzusetzen. Die Methode `Item_Scope` wurde erweitert, um zusätzliche Validierungen durchzuführen.

Ein Bugfix in `frmValidator` sorgt dafür, dass `SelectedValues` gelöscht werden, wenn keine neuen Werte vorhanden sind, und stattdessen `DefaultValue` verwendet wird. Kritische Schritte zur Sicherung und Wiederherstellung der `DataSource` wurden hinzugefügt. Logging-Nachrichten wurden verbessert.
2026-08-13 11:20:12 +02:00
Developer01
0e2bef27a4 TBTF_PROFILE_FILES_WORK leeren 2026-08-10 17:14:19 +02:00
Developer01
ffa97402ff Validierungslogik optimiert und Debug-Logs erweitert
Die Validierungslogik wurde flexibler gestaltet, indem die Bedingung
`pRegularComplete` eingeführt wurde. Wenn diese `False` ist, werden
bestimmte Validierungen übersprungen, und Debug-Nachrichten dokumentieren
das Verhalten.

- SQL-Löschoperationen erweitert, um zusätzliche Tabellen zu berücksichtigen.
- Prüfung auf `DBNull`-Werte bei `oValueFromSource` hinzugefügt.
- Validierungen für `LookupControl3`, Textboxen, ComboBoxen,
  DateTimePicker, CheckBoxen und DataGridViews angepasst.
- Debug-Logs in allen Validierungsfällen verbessert, um die Nachvollziehbarkeit
  zu erhöhen und unnötige Fehlermeldungen zu reduzieren.
2026-08-10 16:04:20 +02:00
Developer01
8d6a5500a9 Initialisierung von CURRENT_DOC_ID hinzugefügt
Die Variable `CURRENT_DOC_ID` wird nun im relevanten `If`-Block
auf `0` initialisiert. Dies stellt sicher, dass sie korrekt
gesetzt ist, wenn der Workflow ohne spezifisches Dokument
ausgeführt wird. Die Änderung verbessert die Konsistenz und
verhindert potenzielle Fehler durch nicht initialisierte Werte.
2026-08-10 16:03:19 +02:00
Developer01
74863a6914 V 2.9.7 2026-08-10 14:48:07 +02:00
5 changed files with 136 additions and 77 deletions

View File

@@ -33,6 +33,8 @@ Public Module ModuleControlProperties
<Category(ClassConstants.CAT_GENERAL)> <Category(ClassConstants.CAT_GENERAL)>
Public Property Name() As String Public Property Name() As String
<Category(ClassConstants.CAT_BEHAVIOUR)>
Public Property Active() As Boolean
<Category(ClassConstants.CAT_DISPLAY)> <Category(ClassConstants.CAT_DISPLAY)>
Public Property Location() As Point Public Property Location() As Point
@@ -120,9 +122,6 @@ Public Module ModuleControlProperties
Private _default_value Private _default_value
Friend _set_control_data As String Friend _set_control_data As String
<Category(ClassConstants.CAT_BEHAVIOUR)>
Public Property Active() As Boolean
<Category(ClassConstants.CAT_VALIDATION)> <Category(ClassConstants.CAT_VALIDATION)>
Public Property Required() As Boolean Public Property Required() As Boolean

View File

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

View File

@@ -186,7 +186,10 @@ Public Class frmFormDesigner
End Function End Function
Private Function IsNotBooleanIndex(IndexName As String) As Boolean Private Function IsNotBooleanIndex(IndexName As String) As Boolean
Dim oType As Integer '= WINDREAM_MOD.GetIndexType(IndexName) Dim oType As Integer
If IndexName = "@@DISPLAY_ONLY" Then
Return 0
End If
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
oType = WINDREAM_MOD.GetIndexType(IndexName) oType = WINDREAM_MOD.GetIndexType(IndexName)
Else Else
@@ -196,7 +199,10 @@ Public Class frmFormDesigner
End Function End Function
Private Function IsNotDateIndex(IndexName As String) As Boolean Private Function IsNotDateIndex(IndexName As String) As Boolean
Dim oType As Integer '= WINDREAM_MOD.GetIndexType(IndexName) Dim oType As Integer
If IndexName = "@@DISPLAY_ONLY" Then
Return 0
End If
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
oType = WINDREAM_MOD.GetIndexType(IndexName) oType = WINDREAM_MOD.GetIndexType(IndexName)
Else Else
@@ -206,7 +212,10 @@ Public Class frmFormDesigner
End Function End Function
Private Function IsNotVectorBooleanIndex(IndexName As String) As Boolean Private Function IsNotVectorBooleanIndex(IndexName As String) As Boolean
Dim oType As Integer '= WINDREAM_MOD.GetIndexType(IndexName) Dim oType As Integer
If IndexName = "@@DISPLAY_ONLY" Then
Return 0
End If
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
oType = WINDREAM_MOD.GetIndexType(IndexName) oType = WINDREAM_MOD.GetIndexType(IndexName)
Else Else
@@ -216,7 +225,10 @@ Public Class frmFormDesigner
End Function End Function
Private Function IsNotVectorDateIndex(IndexName As String) As Boolean Private Function IsNotVectorDateIndex(IndexName As String) As Boolean
Dim oType As Integer '= WINDREAM_MOD.GetIndexType(IndexName) Dim oType As Integer
If IndexName = "@@DISPLAY_ONLY" Then
Return 0
End If
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
oType = WINDREAM_MOD.GetIndexType(IndexName) oType = WINDREAM_MOD.GetIndexType(IndexName)
Else Else
@@ -226,7 +238,10 @@ Public Class frmFormDesigner
End Function End Function
Private Function IsNotVectorDatetimeIndex(IndexName As String) As Boolean Private Function IsNotVectorDatetimeIndex(IndexName As String) As Boolean
Dim oType As Integer '= WINDREAM_MOD.GetIndexType(IndexName) Dim oType As Integer
If IndexName = "@@DISPLAY_ONLY" Then
Return 0
End If
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
oType = WINDREAM_MOD.GetIndexType(IndexName) oType = WINDREAM_MOD.GetIndexType(IndexName)
Else Else
@@ -589,7 +604,7 @@ Public Class frmFormDesigner
obj.Size = New Size(row.Item("WIDTH"), row.Item("HEIGHT")) obj.Size = New Size(row.Item("WIDTH"), row.Item("HEIGHT"))
obj.ChangedAt = ClassAllgemeineFunktionen.NotNullDate(row.Item("CHANGED_WHEN"), Nothing) obj.ChangedAt = ClassAllgemeineFunktionen.NotNullDate(row.Item("CHANGED_WHEN"), Nothing)
obj.ChangedWho = ClassAllgemeineFunktionen.NotNullString(row.Item("CHANGED_WHO"), "") obj.ChangedWho = ClassAllgemeineFunktionen.NotNullString(row.Item("CHANGED_WHO"), "")
obj.Active = StrToBool(row.Item("CONTROL_ACTIVE"))
Dim oStyle As FontStyle = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_STYLE"), FontStyle.Regular) Dim oStyle As FontStyle = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_STYLE"), FontStyle.Regular)
Dim oSize As Single = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_SIZE"), 10) Dim oSize As Single = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_SIZE"), 10)
Dim oFamilyString As String = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_FAMILY"), "Arial") Dim oFamilyString As String = ClassAllgemeineFunktionen.NotNullString(row.Item("FONT_FAMILY"), "Arial")

View File

@@ -2134,6 +2134,12 @@ Public Class frmMain
End If End If
End Try End Try
End Sub End Sub
Private Sub Reset_Current()
CURRENT_JUMP_DOC_GUID = 0
CURRENT_DOC_GUID = 0
CURRENT_DOC_ID = 0
End Sub
Private Async Function Item_Scope(startedFrom As String) As Task Private Async Function Item_Scope(startedFrom As String) As Task
' ========== FRÜHE VALIDIERUNGEN (VOR UI-ÄNDERUNGEN) ========== ' ========== FRÜHE VALIDIERUNGEN (VOR UI-ÄNDERUNGEN) ==========
If Application.OpenForms().OfType(Of frmValidator).Any Then If Application.OpenForms().OfType(Of frmValidator).Any Then
@@ -2392,6 +2398,7 @@ Public Class frmMain
' GRUPPE: Workflow ohne spezifisches Dokument ' GRUPPE: Workflow ohne spezifisches Dokument
CURRENT_JUMP_DOC_GUID = 0 CURRENT_JUMP_DOC_GUID = 0
CURRENT_DOC_GUID = 0 CURRENT_DOC_GUID = 0
CURRENT_DOC_ID = 0
CURRENT_ProfilGUID = CURRENT_CLICKED_PROFILE_ID CURRENT_ProfilGUID = CURRENT_CLICKED_PROFILE_ID
LOGGER.Debug($"Item_Scope: hitInfo.InGroupRow...CURRENT_CLICKED_PROFILE_ID [{CURRENT_CLICKED_PROFILE_ID}]") LOGGER.Debug($"Item_Scope: hitInfo.InGroupRow...CURRENT_CLICKED_PROFILE_ID [{CURRENT_CLICKED_PROFILE_ID}]")
Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID) Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID)

View File

@@ -813,7 +813,9 @@ Public Class frmValidator
Try Try
Dim oSQL As String Dim oSQL As String
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbCrLf &
$"DELETE FROM TBPM_VALIDATION_PROFILE_GROUP_USER WHERE UserID = {USER_ID};" & vbCrLf &
$"DELETE FROM TBTF_PROFILE_FILES_WORK WHERE Action_UserID = {USER_ID};"
DatabaseFallback.ExecuteNonQueryECM(oSQL) DatabaseFallback.ExecuteNonQueryECM(oSQL)
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
@@ -5304,8 +5306,8 @@ Public Class frmValidator
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride) oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
End If End If
If oValueFromSource Is Nothing Then If oValueFromSource Is Nothing Or IsDBNull(oValueFromSource) Then
MyValidationLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oSourceIndexName}: Nothing") MyValidationLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oSourceIndexName} is Nothing or DBNull")
If oDefaultValue = String.Empty Then If oDefaultValue = String.Empty Then
MyValidationLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wurde nicht gefunden") MyValidationLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wurde nicht gefunden")
oMyCombobox.SelectedIndex = -1 oMyCombobox.SelectedIndex = -1
@@ -5806,19 +5808,19 @@ Public Class frmValidator
oNewValues = New List(Of String) From {oValueFromSource.ToString} oNewValues = New List(Of String) From {oValueFromSource.ToString}
End If End If
Else Else
' ========== BUGFIX START: Wenn KEIN neuer Wert, alte Werte behalten ========== ' ========== BUGFIX START: Wenn KEIN neuer Wert, SelectedValues LÖSCHEN ==========
If hadPreviousSelection AndAlso previousSelectedValues IsNot Nothing AndAlso previousSelectedValues.Count > 0 Then If oDefaultValue <> String.Empty Then
MyValidationLogger.Debug($"[FillIndexValues BUGFIX] Lookup [{oLookupMeta.Name}]: Kein neuer Wert von Quelle → alte Werte BEHALTEN") MyValidationLogger.Debug($"[FillIndexValues] Lookup [{oLookupMeta.Name}]: Verwende DefaultValue = [{oDefaultValue}]")
oNewValues = previousSelectedValues
ElseIf oDefaultValue <> String.Empty Then
MyValidationLogger.Debug($"[FillIndexValues BUGFIX] Lookup [{oLookupMeta.Name}]: Keine alten Werte, verwende DefaultValue = [{oDefaultValue}]")
oNewValues = oDefaultValue.Split(",").ToList() oNewValues = oDefaultValue.Split(",").ToList()
Else Else
MyValidationLogger.Debug($"[FillIndexValues BUGFIX] Lookup [{oLookupMeta.Name}]: KEINE Werte (oValueFromSource=Nothing, oDefaultValue leer, keine vorherigen Werte)") ' WICHTIG: Keine alten Werte mehr übernehmen! → oNewValues bleibt Nothing
MyValidationLogger.Debug($"[FillIndexValues] Lookup [{oLookupMeta.Name}]: Kein Index-Wert vorhanden → SelectedValues werden gelöscht")
oNewValues = Nothing
End If End If
' ========== BUGFIX END: Wert-Beibehaltung ========== ' ========== BUGFIX END: Alte Werte werden NICHT mehr beibehalten ==========
End If End If
' ========== KRITISCH: DataSource-Backup erstellen BEVOR SelectedValues gelöscht wird ========== ' ========== KRITISCH: DataSource-Backup erstellen BEVOR SelectedValues gelöscht wird ==========
Dim savedDataSource = oLookup.Properties.DataSource Dim savedDataSource = oLookup.Properties.DataSource
MyValidationLogger.Debug($"[FillIndexValues BUGFIX] Lookup [{oLookupMeta.Name}]: DataSource-Backup erstellt") MyValidationLogger.Debug($"[FillIndexValues BUGFIX] Lookup [{oLookupMeta.Name}]: DataSource-Backup erstellt")
@@ -7084,13 +7086,18 @@ Public Class frmValidator
Case oControl.GetType = GetType(LookupControl3) Case oControl.GetType = GetType(LookupControl3)
Try Try
Dim lookup As LookupControl3 = oControl Dim lookup As LookupControl3 = oControl
If lookup.Properties.SelectedValues.Count = 0 And oIsRequired = True And pRegularComplete Then If lookup.Properties.SelectedValues.Count = 0 And oIsRequired = True Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = $"Pflichtfeld: Keine Auswahl getroffen in LookupGrid '{oControl.Name}'" MyValidationLogger.Debug($"[CHECK_UPDATE] LookupGrid '{oControl.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn($"⚠️ {oErrMsgMissingInput}") Continue For
oControl.BackColor = Color.Red Else
OpenfrmError(oErrMsgMissingInput) oMissing = True
Exit For oErrMsgMissingInput = $"Pflichtfeld: Keine Auswahl getroffen in LookupGrid '{oControl.Name}'"
MyValidationLogger.Warn($"⚠️ {oErrMsgMissingInput}")
oControl.BackColor = Color.Red
OpenfrmError(oErrMsgMissingInput)
Exit For
End If
Else Else
If lookup.Properties.MultiSelect = True Then If lookup.Properties.MultiSelect = True Then
Dim oLookupRows As Integer = lookup.Properties.SelectedValues.Count Dim oLookupRows As Integer = lookup.Properties.SelectedValues.Count
@@ -7142,14 +7149,20 @@ Public Class frmValidator
End If End If
End If End If
Else Else
' Single-Select Lookup ' Single-Select Lookup
oMyInput = lookup.Properties.SelectedValues.FirstOrDefault() oMyInput = lookup.Properties.SelectedValues.FirstOrDefault()
If IsNothing(oMyInput) And oIsRequired = True And pRegularComplete Then If IsNothing(oMyInput) And oIsRequired = True Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = $"Could not get FirstOrDefault-Value of LookUpGrid! - LookUPGridName: {lookup.Name}" MyValidationLogger.Debug($"[CHECK_UPDATE] LookupGrid(SingleSelect) '{lookup.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
OpenfrmError(oErrMsgMissingInput) Else
Exit For oMissing = True
oErrMsgMissingInput = $"Could not get FirstOrDefault-Value of LookUpGrid! - LookUPGridName: {lookup.Name}"
MyValidationLogger.Warn(oErrMsgMissingInput)
OpenfrmError(oErrMsgMissingInput)
Exit For
End If
ElseIf IsNothing(oMyInput) And oIsRequired = False Then ElseIf IsNothing(oMyInput) And oIsRequired = False Then
For Each ochangedLookub In listChangedLookup For Each ochangedLookub In listChangedLookup
If lookup.Name = ochangedLookub Then If lookup.Name = ochangedLookub Then
@@ -7280,13 +7293,18 @@ Public Class frmValidator
Exit For Exit For
End If End If
If Check_Missing_Control_Value(oControl, "txt") = True And oIsRequired = True And pRegularComplete Then If Check_Missing_Control_Value(oControl, "txt") = True And oIsRequired = True Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'" MyValidationLogger.Debug($"[CHECK_UPDATE] TextEdit '{oControl.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
oControl.BackColor = Color.Red Else
frmError.ShowDialog() oMissing = True
Exit For oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
MyValidationLogger.Warn(oErrMsgMissingInput)
oControl.BackColor = Color.Red
frmError.ShowDialog()
Exit For
End If
Else Else
MyValidationLogger.Debug("Reading current value from Textbox") MyValidationLogger.Debug("Reading current value from Textbox")
Dim oTextEdit As BaseEdit = DirectCast(oControl, BaseEdit) Dim oTextEdit As BaseEdit = DirectCast(oControl, BaseEdit)
@@ -7410,16 +7428,21 @@ Public Class frmValidator
Try Try
MyValidationLogger.Debug($"Working on Combobox...") MyValidationLogger.Debug($"Working on Combobox...")
Dim cmb As Windows.Forms.ComboBox = oControl Dim cmb As Windows.Forms.ComboBox = oControl
If cmb.SelectedIndex = -1 And oIsRequired = True And pRegularComplete Then If cmb.SelectedIndex = -1 And oIsRequired = True Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = "Please Choose an entry out of ComboBox '" & cmb.Name & "'" MyValidationLogger.Debug($"[CHECK_UPDATE] ComboBox '{cmb.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
If _FormClosing Then Else
MyValidationLogger.Warn("Form closing - skip error dialog") oMissing = True
Return False oErrMsgMissingInput = "Please Choose an entry out of ComboBox '" & cmb.Name & "'"
MyValidationLogger.Warn(oErrMsgMissingInput)
If _FormClosing Then
MyValidationLogger.Warn("Form closing - skip error dialog")
Return False
End If
OpenfrmError(oErrMsgMissingInput)
Exit For
End If End If
OpenfrmError(oErrMsgMissingInput)
Exit For
Else Else
oMyInput = cmb.Text oMyInput = cmb.Text
MyValidationLogger.Debug($"inputvalue Combobox: {cmb.Text}") MyValidationLogger.Debug($"inputvalue Combobox: {cmb.Text}")
@@ -7545,16 +7568,21 @@ Public Class frmValidator
Case oControl.GetType = GetType(DateTimePicker) Case oControl.GetType = GetType(DateTimePicker)
Try Try
Dim dtp As DateTimePicker = oControl Dim dtp As DateTimePicker = oControl
If oIsRequired = True And dtp.Value.ToString = String.Empty And pRegularComplete Then If oIsRequired = True And dtp.Value.ToString = String.Empty Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = "Please Choose DateValue for field'" & dtp.Name & "'" MyValidationLogger.Debug($"[CHECK_UPDATE] DateTimePicker '{dtp.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
If _FormClosing Then Else
MyValidationLogger.Warn("Form closing - skip error dialog") oMissing = True
Return False oErrMsgMissingInput = "Please Choose DateValue for field'" & dtp.Name & "'"
MyValidationLogger.Warn(oErrMsgMissingInput)
If _FormClosing Then
MyValidationLogger.Warn("Form closing - skip error dialog")
Return False
End If
OpenfrmError(oErrMsgMissingInput)
Exit For
End If End If
OpenfrmError(oErrMsgMissingInput)
Exit For
ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then
oMyInput = CDate(dtp.Value) oMyInput = CDate(dtp.Value)
Dim oObjectValue Dim oObjectValue
@@ -7641,16 +7669,21 @@ Public Class frmValidator
Dim chk As CheckBox = oControl Dim chk As CheckBox = oControl
oMyInput = chk.Checked.ToString oMyInput = chk.Checked.ToString
If chk.CheckState = CheckState.Indeterminate And oIsRequired = True And pRegularComplete Then If chk.CheckState = CheckState.Indeterminate And oIsRequired = True Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = "Please set Checkbox value for field '" & chk.Name & "'" MyValidationLogger.Debug($"[CHECK_UPDATE] CheckBox '{chk.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
If _FormClosing Then Else
MyValidationLogger.Warn("Form closing - skip error dialog") oMissing = True
Return False oErrMsgMissingInput = "Please set Checkbox value for field '" & chk.Name & "'"
MyValidationLogger.Warn(oErrMsgMissingInput)
If _FormClosing Then
MyValidationLogger.Warn("Form closing - skip error dialog")
Return False
End If
OpenfrmError(oErrMsgMissingInput)
Exit For
End If End If
OpenfrmError(oErrMsgMissingInput)
Exit For
End If End If
Dim WertWD As String Dim WertWD As String
@@ -7759,16 +7792,21 @@ Public Class frmValidator
Zeilen += 1 Zeilen += 1
End If End If
Next Next
If oIsRequired = True And Zeilen = 0 And pRegularComplete Then If oIsRequired = True And Zeilen = 0 Then
oMissing = True If pRegularComplete = False Then
oErrMsgMissingInput = "Fehlende Eingabe in Vektorfeld '" & dgv.Name & "'" MyValidationLogger.Debug($"[CHECK_UPDATE] DataGridView '{dgv.Name}' is required but has no selection. Skipping due to pRegularComplete=False.")
MyValidationLogger.Warn(oErrMsgMissingInput) Continue For
If _FormClosing Then Else
MyValidationLogger.Warn("Form closing - skip error dialog") oMissing = True
Return False oErrMsgMissingInput = "Fehlende Eingabe in Vektorfeld '" & dgv.Name & "'"
MyValidationLogger.Warn(oErrMsgMissingInput)
If _FormClosing Then
MyValidationLogger.Warn("Form closing - skip error dialog")
Return False
End If
OpenfrmError(oErrMsgMissingInput)
Exit For
End If End If
OpenfrmError(oErrMsgMissingInput)
Exit For
ElseIf Zeilen > 0 Then ElseIf Zeilen > 0 Then
Dim ZeilenGrid As Integer = 0 Dim ZeilenGrid As Integer = 0
Dim myVektorArr As String() Dim myVektorArr As String()