From 4323fbff01eef8162450e1d177fa72c4e3c24385 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Wed, 24 Jun 2026 15:24:15 +0200 Subject: [PATCH] Kontierung im separaten Formular --- app/TaskFlow/ClassAllgemeineFunktionen.vb | 1 + app/TaskFlow/ClassGridDataLoader.vb | 422 ++++++++++++ app/TaskFlow/DD_DMSLiteDataSet.Designer.vb | 70 +- app/TaskFlow/DD_DMSLiteDataSet.xsd | 172 ++--- app/TaskFlow/DD_DMSLiteDataSet.xss | 2 +- app/TaskFlow/ModuleControlProperties.vb | 5 +- app/TaskFlow/TaskFlow.vbproj | 10 + app/TaskFlow/frmControl_Table.Designer.vb | 122 ++++ app/TaskFlow/frmControl_Table.resx | 197 ++++++ app/TaskFlow/frmControl_Table.vb | 607 ++++++++++++++++++ app/TaskFlow/frmFormDesigner.vb | 22 +- app/TaskFlow/frmValidator.vb | 251 +++++++- app/TaskFlow/logtaskflow.txt | 713 ++++++++++++++++++++- 13 files changed, 2442 insertions(+), 152 deletions(-) create mode 100644 app/TaskFlow/ClassGridDataLoader.vb create mode 100644 app/TaskFlow/frmControl_Table.Designer.vb create mode 100644 app/TaskFlow/frmControl_Table.resx create mode 100644 app/TaskFlow/frmControl_Table.vb diff --git a/app/TaskFlow/ClassAllgemeineFunktionen.vb b/app/TaskFlow/ClassAllgemeineFunktionen.vb index 583c446..1a54f8d 100644 --- a/app/TaskFlow/ClassAllgemeineFunktionen.vb +++ b/app/TaskFlow/ClassAllgemeineFunktionen.vb @@ -41,6 +41,7 @@ Public Class ClassAllgemeineFunktionen Catch ex As Exception LOGGER.Info($"Unexpected error in GUI_LANGUAGE_INFO FOR [{pTITLE}]...") LOGGER.Error(ex) + Return Nothing End Try End Function diff --git a/app/TaskFlow/ClassGridDataLoader.vb b/app/TaskFlow/ClassGridDataLoader.vb new file mode 100644 index 0000000..697b1be --- /dev/null +++ b/app/TaskFlow/ClassGridDataLoader.vb @@ -0,0 +1,422 @@ +Imports System.Data +Imports System.Globalization +Imports DevExpress.XtraGrid +Imports DevExpress.XtraGrid.Columns +Imports DevExpress.XtraGrid.Views.Grid +Imports DigitalData.Modules.EDMI.API +Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback +Imports DigitalData.Modules.Logging + +Public Class ClassGridDataLoader + Private ReadOnly _GDLoaderLogger As Logger + Private ReadOnly _DatabaseWithFallback As DatabaseWithFallback + Private Const PMDelimiter As String = "~" + + Public Sub New(pDatabaseFallback As DatabaseWithFallback) + _GDLoaderLogger = LOGCONFIG.GetLogger() + _DatabaseWithFallback = pDatabaseFallback + End Sub + + ''' + ''' Befüllt ein GridControl mit Daten basierend auf der Grid-Konfiguration + ''' + Public Function FillGridData(gridControl As GridControl, + controlRow As DataRow, + columnDefinitions As DataTable, + validator As frmValidator + ) As Boolean + Try + If gridControl Is Nothing OrElse controlRow Is Nothing Then + _GDLoaderLogger?.Warn("FillGridData: GridControl oder ControlRow ist Nothing") + Return False + End If + + Dim controlGuid As Integer = If(IsDBNull(controlRow("GUID")), 0, CInt(controlRow("GUID"))) + Dim controlType As String = If(IsDBNull(controlRow("TYP")), "TABLE", controlRow("TYP").ToString()) + + _GDLoaderLogger?.Debug($"FillGridData für Control GUID={controlGuid}, Name={gridControl.Name}, Type={controlType}") + + ' DataTable aus GridControl holen + Dim gridDataTable As DataTable = TryCast(gridControl.DataSource, DataTable) + If gridDataTable Is Nothing Then + _GDLoaderLogger?.Warn($"GridControl {gridControl.Name} hat keine DataTable als DataSource") + Return False + End If + + ' Spalten-Definitionen für dieses Grid holen + Dim filteredColumns As DataTable = GetFilteredColumnDefinitions(columnDefinitions, controlGuid) + If filteredColumns Is Nothing OrElse filteredColumns.Rows.Count = 0 Then + _GDLoaderLogger?.Warn($"Keine Spalten-Definitionen für Grid GUID={controlGuid}") + Return True + End If + + _GDLoaderLogger?.Debug($"Grid {gridControl.Name}: {filteredColumns.Rows.Count} Spalten-Definitionen gefunden") + + ' INDEX_NAME holen + Dim sourceIndexName As String = If(IsDBNull(controlRow("INDEX_NAME")), String.Empty, controlRow("INDEX_NAME").ToString()) + + If String.IsNullOrEmpty(sourceIndexName) Then + _GDLoaderLogger?.Warn($"Kein INDEX_NAME für Grid {gridControl.Name} konfiguriert") + Return False + End If + + ' Wert aus Quelle holen + Dim valueFromSource As Object = validator?.GetVariableValuefromSource(sourceIndexName, 0, False) + + If valueFromSource Is Nothing Then + _GDLoaderLogger?.Debug($"Kein Wert für INDEX_NAME [{sourceIndexName}] gefunden - Grid wird geleert") + gridDataTable.Rows.Clear() + Return True + End If + + ' Daten befüllen basierend auf Typ + Dim success As Boolean = False + Dim valueType As String = valueFromSource.GetType().ToString() + + _GDLoaderLogger?.Debug($"ValueType: {valueType}, ControlType: {controlType}") + + Select Case controlType + Case "TABLE" + success = FillTableGrid(gridDataTable, filteredColumns, valueFromSource, valueType, gridControl) + Case Else + success = FillSimpleGrid(gridDataTable, valueFromSource) + End Select + + ' Spaltenbreiten anwenden + If success Then + ApplyColumnWidths(gridControl, filteredColumns) + End If + + Return success + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in FillGridData: {ex.Message}", ex) + Return False + End Try + End Function + + ''' + ''' Befüllt ein TABLE-Grid (komplexe Logik mit Vektor/IDB) + ''' + Private Function FillTableGrid(gridDataTable As DataTable, + columnDefinitions As DataTable, + valueFromSource As Object, + valueType As String, + gridControl As GridControl) As Boolean + Try + gridDataTable.Rows.Clear() + + ' ========== NICHT-IDB-MODUS: Vektor-Array-Verarbeitung ========== + If Not IDB_ACTIVE Then + If valueType.Contains("System.Object") OrElse IsArrayOrEnumerable(valueFromSource) Then + _GDLoaderLogger?.Debug($"Nicht-IDB-Modus: Verarbeite Array/Enumerable mit {TryGetCount(valueFromSource)} Elementen") + + For Each zeile As Object In DirectCast(valueFromSource, IEnumerable) + Dim colValuesFromSource As String() = Split(zeile.ToString(), PMDelimiter) + Dim newRow As DataRow = gridDataTable.NewRow() + + For index = 0 To columnDefinitions.Rows.Count - 1 + Try + Dim rawValue As String = If(index < colValuesFromSource.Length, colValuesFromSource(index), String.Empty) + Dim targetColumn As DataColumn = gridDataTable.Columns(index) + Dim colType As Type = targetColumn.DataType + + ' NULL-Handling + If String.IsNullOrWhiteSpace(rawValue) Then + If colType.IsValueType AndAlso Nullable.GetUnderlyingType(colType) Is Nothing Then + newRow.Item(index) = Activator.CreateInstance(colType) + Else + newRow.Item(index) = DBNull.Value + End If + Continue For + End If + + ' Typ-Konvertierung + Select Case Type.GetTypeCode(colType) + Case TypeCode.Int32 + newRow.Item(index) = Integer.Parse(rawValue.Trim(), CultureInfo.InvariantCulture) + Case TypeCode.Int64 + newRow.Item(index) = Long.Parse(rawValue.Trim(), CultureInfo.InvariantCulture) + Case TypeCode.Double + newRow.Item(index) = Double.Parse(rawValue.Trim().Replace(",", "."), CultureInfo.InvariantCulture) + Case TypeCode.Decimal + newRow.Item(index) = Decimal.Parse(rawValue.Trim().Replace(",", "."), CultureInfo.InvariantCulture) + Case TypeCode.Boolean + newRow.Item(index) = Boolean.Parse(rawValue.Trim()) + Case TypeCode.DateTime + newRow.Item(index) = DateTime.Parse(rawValue.Trim(), CultureInfo.CurrentCulture) + Case Else + newRow.Item(index) = rawValue + End Select + + Catch convEx As FormatException + _GDLoaderLogger?.Warn($"Konvertierungsfehler: ColIdx={index}, RawValue=[{If(index < colValuesFromSource.Length, colValuesFromSource(index), "N/A")}]") + If gridDataTable.Columns(index).DataType.IsValueType Then + newRow.Item(index) = Activator.CreateInstance(gridDataTable.Columns(index).DataType) + Else + newRow.Item(index) = DBNull.Value + End If + End Try + Next + + gridDataTable.Rows.Add(newRow) + Next + + Return True + End If + End If + + ' ========== IDB-MODUS: String oder DataTable ========== + If valueType = "System.String" Then + Return FillIDBFromString(gridDataTable, columnDefinitions, valueFromSource.ToString()) + + ElseIf valueType = "System.Data.DataTable" Then + Return FillIDBFromDataTable(gridDataTable, columnDefinitions, DirectCast(valueFromSource, DataTable), gridControl) + End If + + _GDLoaderLogger?.Warn($"Nicht unterstützter ValueType: {valueType}") + Return False + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in FillTableGrid: {ex.Message}", ex) + Return False + End Try + End Function + + ''' + ''' IDB-Modus: String-Vektor verarbeiten + ''' + Private Function FillIDBFromString(gridDataTable As DataTable, columnDefinitions As DataTable, vectorString As String) As Boolean + Try + Dim colValuesFromSource As String() = Split(vectorString, PMDelimiter) + + If colValuesFromSource.Length > 8 Then + _GDLoaderLogger?.Warn("⚠️ Mehr als 8 Spalten in IDB-String - Maximum ist 8!") + End If + + Dim rowData As New List(Of Object) + + For index = 1 To Math.Min(colValuesFromSource.Length, columnDefinitions.Rows.Count) + Try + Dim rawValue As String = colValuesFromSource(index - 1) + Dim columnType = columnDefinitions.Rows(index - 1).Item("TYPE_COLUMN") + Dim convertedValue = ClassFormat.GetConvertedValue(rawValue, columnType) + rowData.Add(convertedValue) + Catch ex As Exception + _GDLoaderLogger?.Warn($"Fehler bei Spalte {index}: {ex.Message}") + rowData.Add(String.Empty) + End Try + Next + + gridDataTable.Rows.Add(rowData.ToArray()) + Return True + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in FillIDBFromString: {ex.Message}", ex) + Return False + End Try + End Function + + ''' + ''' IDB-Modus: DataTable verarbeiten + ''' + Private Function FillIDBFromDataTable(gridDataTable As DataTable, + columnDefinitions As DataTable, + sourceDataTable As DataTable, + gridControl As GridControl) As Boolean + Try + Dim isReadOnly As Boolean = False + If gridControl.Tag IsNot Nothing AndAlso TypeOf gridControl.Tag Is DataRow Then + Dim controlRow As DataRow = DirectCast(gridControl.Tag, DataRow) + isReadOnly = If(IsDBNull(controlRow("READ_ONLY")), False, CBool(controlRow("READ_ONLY"))) + End If + + _GDLoaderLogger?.Debug($"IDB DataTable: {sourceDataTable.Rows.Count} Zeilen, ReadOnly={isReadOnly}") + + ' Spaltenanzahl-Prüfung + Dim configuredColumns As Integer = columnDefinitions.Rows.Count + Dim maxSourceColumns As Integer = 0 + + If sourceDataTable.Rows.Count > 0 Then + For Each row As DataRow In sourceDataTable.Rows + Dim parts As String() = Split(row.Item(0).ToString(), PMDelimiter) + If parts.Length > maxSourceColumns Then + maxSourceColumns = parts.Length + End If + Next + End If + + If maxSourceColumns > configuredColumns Then + If Not isReadOnly Then + ' Benutzer-Dialog + Dim title, question As String + Select Case USER_LANGUAGE + Case "de-DE" + title = "Spaltenkonfiguration prüfen" + question = $"Das Grid '{gridControl.Name}' enthält Zeilen mit bis zu {maxSourceColumns} Datenwerten," & vbCrLf & + $"aber nur {configuredColumns} Spalten sind konfiguriert." & vbCrLf & + $"Es werden nur die ersten {configuredColumns} Werte je Zeile angezeigt." & vbCrLf & vbCrLf & + "Möchten Sie trotzdem fortfahren?" + Case "fr-FR" + title = "Vérifier la configuration des colonnes" + question = $"La grille '{gridControl.Name}' contient des lignes avec jusqu'à {maxSourceColumns} valeurs," & vbCrLf & + $"mais seulement {configuredColumns} colonnes sont configurées." + Case Else + title = "Check column configuration" + question = $"The grid '{gridControl.Name}' contains rows with up to {maxSourceColumns} values," & vbCrLf & + $"but only {configuredColumns} columns are configured." + End Select + + Dim result = MessageBox.Show(question, title, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) + If result = DialogResult.No Then + _GDLoaderLogger?.Warn("Benutzer hat Fortfahren abgebrochen") + Return False + End If + Else + _GDLoaderLogger?.Info($"ReadOnly-Grid: Ignoriere überzählige Spalten ({maxSourceColumns} → {configuredColumns})") + End If + End If + + ' Zeilen befüllen + For Each sourceRow As DataRow In sourceDataTable.Rows + Try + Dim colValuesFromSource As String() = Split(sourceRow.Item(0).ToString(), PMDelimiter) + Dim rowData As New List(Of Object) + + For index = 1 To configuredColumns + Try + Dim rawValue As String = If(index <= colValuesFromSource.Length, colValuesFromSource(index - 1), String.Empty) + Dim columnType = columnDefinitions.Rows(index - 1).Item("TYPE_COLUMN") + Dim convertedValue = ClassFormat.GetConvertedValue(rawValue, columnType) + rowData.Add(convertedValue) + Catch ex As Exception + _GDLoaderLogger?.Warn($"Fehler bei Spalte {index}: {ex.Message}") + rowData.Add(String.Empty) + End Try + Next + + gridDataTable.Rows.Add(rowData.ToArray()) + + Catch ex As Exception + _GDLoaderLogger?.Warn($"Fehler beim Hinzufügen der Zeile: {ex.Message}") + End Try + Next + + Return True + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in FillIDBFromDataTable: {ex.Message}", ex) + Return False + End Try + End Function + + ''' + ''' Befüllt ein einfaches Grid (nicht TABLE-Typ) + ''' + Private Function FillSimpleGrid(gridDataTable As DataTable, valueFromSource As Object) As Boolean + Try + gridDataTable.Rows.Clear() + + If IsArrayOrEnumerable(valueFromSource) Then + For Each obj As Object In DirectCast(valueFromSource, IEnumerable) + If obj IsNot Nothing Then + gridDataTable.Rows.Add(New String() {obj.ToString()}) + End If + Next + End If + + Return True + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in FillSimpleGrid: {ex.Message}", ex) + Return False + End Try + End Function + + ''' + ''' Wendet Spaltenbreiten aus der Konfiguration an + ''' + Private Sub ApplyColumnWidths(gridControl As GridControl, columnDefinitions As DataTable) + Try + Dim gridView As GridView = TryCast(gridControl.MainView, GridView) + If gridView Is Nothing Then Return + + gridView.OptionsView.ColumnAutoWidth = False + + If columnDefinitions Is Nothing OrElse columnDefinitions.Rows.Count = 0 Then + _GDLoaderLogger?.Warn("ApplyColumnWidths: Keine Spalten-Definitionen vorhanden") + Return + End If + + Dim columnsByName = gridView.Columns.Cast(Of GridColumn)(). + ToDictionary(Function(c) c.FieldName, StringComparer.OrdinalIgnoreCase) + + For Each row As DataRow In columnDefinitions.Rows + Try + If Not IsDBNull(row("SPALTENNAME")) AndAlso Not IsDBNull(row("SPALTENBREITE")) Then + Dim columnName As String = row("SPALTENNAME").ToString() + Dim column As GridColumn = Nothing + + If columnsByName.TryGetValue(columnName, column) Then + column.Width = CInt(row("SPALTENBREITE")) + _GDLoaderLogger?.Debug($"Spaltenbreite gesetzt: {columnName} = {row("SPALTENBREITE")}") + End If + End If + Catch ex As Exception + _GDLoaderLogger?.Warn($"Fehler beim Setzen der Spaltenbreite für Zeile: {ex.Message}") + End Try + Next + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in ApplyColumnWidths: {ex.Message}", ex) + End Try + End Sub + + ''' + ''' Filtert Spalten-Definitionen für ein bestimmtes Grid + ''' + Private Function GetFilteredColumnDefinitions(columnDefinitions As DataTable, controlGuid As Integer) As DataTable + If columnDefinitions Is Nothing Then Return Nothing + + Try + Dim filteredRows = columnDefinitions.AsEnumerable(). + Where(Function(row) Not IsDBNull(row("CONTROL_ID")) AndAlso CInt(row("CONTROL_ID")) = controlGuid). + ToList() + + If filteredRows.Count = 0 Then Return Nothing + + Dim resultTable As DataTable = columnDefinitions.Clone() + For Each row In filteredRows + resultTable.ImportRow(row) + Next + + Return resultTable + + Catch ex As Exception + _GDLoaderLogger?.Error($"Fehler in GetFilteredColumnDefinitions: {ex.Message}", ex) + Return Nothing + End Try + End Function + + ''' + ''' Prüft ob ein Objekt Array oder IEnumerable ist + ''' + Private Function IsArrayOrEnumerable(obj As Object) As Boolean + If obj Is Nothing Then Return False + Return TypeOf obj Is IEnumerable AndAlso Not TypeOf obj Is String + End Function + + ''' + ''' Versucht die Anzahl der Elemente zu ermitteln + ''' + Private Function TryGetCount(obj As Object) As Integer + Try + If TypeOf obj Is ICollection Then + Return DirectCast(obj, ICollection).Count + End If + Return DirectCast(obj, IEnumerable).Cast(Of Object)().Count() + Catch + Return 0 + End Try + End Function +End Class \ No newline at end of file diff --git a/app/TaskFlow/DD_DMSLiteDataSet.Designer.vb b/app/TaskFlow/DD_DMSLiteDataSet.Designer.vb index 113dbdc..bcf71a9 100644 --- a/app/TaskFlow/DD_DMSLiteDataSet.Designer.vb +++ b/app/TaskFlow/DD_DMSLiteDataSet.Designer.vb @@ -4589,6 +4589,8 @@ Partial Public Class DD_DMSLiteDataSet Private columnTEXT_ALIGNMENT As Global.System.Data.DataColumn + Private columnDISPLAY_IN_SEPERATE_FORM As Global.System.Data.DataColumn + _ Public Sub New() @@ -4976,6 +4978,14 @@ Partial Public Class DD_DMSLiteDataSet End Get End Property + _ + Public ReadOnly Property DISPLAY_IN_SEPERATE_FORMColumn() As Global.System.Data.DataColumn + Get + Return Me.columnDISPLAY_IN_SEPERATE_FORM + End Get + End Property + _ @@ -5056,9 +5066,10 @@ Partial Public Class DD_DMSLiteDataSet ByVal SAVE_CHANGE_ON_ENABLED As Boolean, _ ByVal FORMAT_STRING As String, _ ByVal BACKCOLOR_IF As String, _ - ByVal TEXT_ALIGNMENT As String) As TBPM_PROFILE_CONTROLSRow + ByVal TEXT_ALIGNMENT As String, _ + ByVal DISPLAY_IN_SEPERATE_FORM As Boolean) As TBPM_PROFILE_CONTROLSRow Dim rowTBPM_PROFILE_CONTROLSRow As TBPM_PROFILE_CONTROLSRow = CType(Me.NewRow,TBPM_PROFILE_CONTROLSRow) - Dim columnValuesArray() As Object = New Object() {Nothing, Nothing, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN, IMAGE_CONTROL, SQL2, SQL_ENABLE, SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, BACKCOLOR_IF, TEXT_ALIGNMENT} + Dim columnValuesArray() As Object = New Object() {Nothing, Nothing, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN, IMAGE_CONTROL, SQL2, SQL_ENABLE, SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, BACKCOLOR_IF, TEXT_ALIGNMENT, DISPLAY_IN_SEPERATE_FORM} If (Not (parentTBPM_PROFILERowByFK_TBPM_PROFILE_CONTROLS_PROFILE) Is Nothing) Then columnValuesArray(1) = parentTBPM_PROFILERowByFK_TBPM_PROFILE_CONTROLS_PROFILE(0) End If @@ -5134,6 +5145,7 @@ Partial Public Class DD_DMSLiteDataSet Me.columnFORMAT_STRING = MyBase.Columns("FORMAT_STRING") Me.columnBACKCOLOR_IF = MyBase.Columns("BACKCOLOR_IF") Me.columnTEXT_ALIGNMENT = MyBase.Columns("TEXT_ALIGNMENT") + Me.columnDISPLAY_IN_SEPERATE_FORM = MyBase.Columns("DISPLAY_IN_SEPERATE_FORM") End Sub _ Public Property FORMAT_STRING() As String Get - Try - Return CType(Me(Me.tableTBPM_PROFILE_CONTROLS.FORMAT_STRINGColumn),String) - Catch e As Global.System.InvalidCastException - Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte FORMAT_STRING in Tabelle TBPM_PROFILE_CONTROLS ist DBNull.", e) - End Try + Return CType(Me(Me.tableTBPM_PROFILE_CONTROLS.FORMAT_STRINGColumn),String) End Get Set Me(Me.tableTBPM_PROFILE_CONTROLS.FORMAT_STRINGColumn) = value @@ -12650,6 +12663,17 @@ Partial Public Class DD_DMSLiteDataSet End Set End Property + _ + Public Property DISPLAY_IN_SEPERATE_FORM() As Boolean + Get + Return CType(Me(Me.tableTBPM_PROFILE_CONTROLS.DISPLAY_IN_SEPERATE_FORMColumn),Boolean) + End Get + Set + Me(Me.tableTBPM_PROFILE_CONTROLS.DISPLAY_IN_SEPERATE_FORMColumn) = value + End Set + End Property + _ Public Property TBPM_PROFILERow() As TBPM_PROFILERow @@ -12889,18 +12913,6 @@ Partial Public Class DD_DMSLiteDataSet Me(Me.tableTBPM_PROFILE_CONTROLS.SQL_ENABLE_ON_LOAD_CONIDColumn) = Global.System.Convert.DBNull End Sub - _ - Public Function IsFORMAT_STRINGNull() As Boolean - Return Me.IsNull(Me.tableTBPM_PROFILE_CONTROLS.FORMAT_STRINGColumn) - End Function - - _ - Public Sub SetFORMAT_STRINGNull() - Me(Me.tableTBPM_PROFILE_CONTROLS.FORMAT_STRINGColumn) = Global.System.Convert.DBNull - End Sub - _ Public Function IsBACKCOLOR_IFNull() As Boolean @@ -20412,6 +20424,7 @@ Namespace DD_DMSLiteDataSetTableAdapters tableMapping.ColumnMappings.Add("SAVE_CHANGE_ON_ENABLED", "SAVE_CHANGE_ON_ENABLED") tableMapping.ColumnMappings.Add("FORMAT_STRING", "FORMAT_STRING") tableMapping.ColumnMappings.Add("TEXT_ALIGNMENT", "TEXT_ALIGNMENT") + tableMapping.ColumnMappings.Add("DISPLAY_IN_SEPERATE_FORM", "DISPLAY_IN_SEPERATE_FORM") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection @@ -20560,8 +20573,8 @@ Namespace DD_DMSLiteDataSetTableAdapters " REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN, IMAGE_CONTROL, SQL"& _ "2, SQL_ENABLE, SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, C"& _ "ONTROL_ACTIVE, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENA"& _ - "BLED, FORMAT_STRING, TEXT_ALIGNMENT"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_CONTROLS"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHER"& _ - "E (GUID = @guid)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY Y_LOC, X_LOC" + "BLED, FORMAT_STRING, TEXT_ALIGNMENT, DISPLAY_IN_SEPERATE_FORM"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM T"& _ + "BPM_PROFILE_CONTROLS"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID = @guid)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY Y_LOC, X_LOC" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(0).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@guid", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() @@ -20610,9 +20623,9 @@ Namespace DD_DMSLiteDataSetTableAdapters Me._commandCollection(8) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(8).Connection = Me.Connection Me._commandCollection(8).CommandText = "INSERT INTO TBPM_PROFILE_CONTROLS"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (PROFIL_ID, NAME, CTR"& _ - "L_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, HEIGHT, WIDTH, TEXT_ALIGNMENT)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALU"& _ - "ES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@HEIG"& _ - "HT,@Width,@TEXT_ALIGNMENT)" + "L_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, HEIGHT, WIDTH, TEXT_ALIGNMENT, DISPL"& _ + "AY_IN_SEPERATE_FORM)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_L"& _ + "OC,@Y_LOC,@ADDED_WHO,@HEIGHT,@Width,@TEXT_ALIGNMENT,@DISPLAY_IN_SEPERATE_FORM)" Me._commandCollection(8).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@PROFIL_ID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@NAME", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "NAME", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) @@ -20624,6 +20637,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@HEIGHT", Global.System.Data.SqlDbType.SmallInt, 2, Global.System.Data.ParameterDirection.Input, 0, 0, "HEIGHT", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Width", Global.System.Data.SqlDbType.SmallInt, 2, Global.System.Data.ParameterDirection.Input, 0, 0, "WIDTH", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@TEXT_ALIGNMENT", Global.System.Data.SqlDbType.NVarChar, 20, Global.System.Data.ParameterDirection.Input, 0, 0, "TEXT_ALIGNMENT", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@DISPLAY_IN_SEPERATE_FORM", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "DISPLAY_IN_SEPERATE_FORM", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(9) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(9).Connection = Me.Connection Me._commandCollection(9).CommandText = "UPDATE TBPM_PROFILE_CONTROLS"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET INDEX_NAME = @INDEX_NAME,CH"& _ @@ -20643,8 +20657,9 @@ Namespace DD_DMSLiteDataSetTableAdapters "P, VALIDATION, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, WIDTH, X_LOC, Y_LOC, I"& _ "MAGE_CONTROL, SQL2, SQL_ENABLE, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" SET_CONTROL_DATA, SQL"& _ "_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, TABLE_ORDER_COLUMN, S"& _ - "AVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFI"& _ - "LE_CONTROLS AS T"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (PROFIL_ID = @profil_id)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY Y_LOC, X_LOC" + "AVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ + " DISPLAY_IN_SEPERATE_FORM"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_CONTROLS AS T"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ + " (PROFIL_ID = @profil_id)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY Y_LOC, X_LOC" Me._commandCollection(10).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@USER_LANGUAGE", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) @@ -21329,7 +21344,7 @@ Namespace DD_DMSLiteDataSetTableAdapters _ - Public Overloads Overridable Function cmdInsertAnlage(ByVal PROFIL_ID As Integer, ByVal NAME As String, ByVal CTRL_TYPE As String, ByVal CTRL_TEXT As String, ByVal X_LOC As Double, ByVal Y_LOC As Double, ByVal ADDED_WHO As String, ByVal HEIGHT As Short, ByVal Width As Short, ByVal TEXT_ALIGNMENT As String) As Integer + Public Overloads Overridable Function cmdInsertAnlage(ByVal PROFIL_ID As Integer, ByVal NAME As String, ByVal CTRL_TYPE As String, ByVal CTRL_TEXT As String, ByVal X_LOC As Double, ByVal Y_LOC As Double, ByVal ADDED_WHO As String, ByVal HEIGHT As Short, ByVal Width As Short, ByVal TEXT_ALIGNMENT As String, ByVal DISPLAY_IN_SEPERATE_FORM As Boolean) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(8) command.Parameters(0).Value = CType(PROFIL_ID,Integer) If (NAME Is Nothing) Then @@ -21361,6 +21376,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Else command.Parameters(9).Value = CType(TEXT_ALIGNMENT,String) End If + command.Parameters(10).Value = CType(DISPLAY_IN_SEPERATE_FORM,Boolean) Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then diff --git a/app/TaskFlow/DD_DMSLiteDataSet.xsd b/app/TaskFlow/DD_DMSLiteDataSet.xsd index 93d9220..e6d34a4 100644 --- a/app/TaskFlow/DD_DMSLiteDataSet.xsd +++ b/app/TaskFlow/DD_DMSLiteDataSet.xsd @@ -968,7 +968,7 @@ WHERE (GUID = @Original_GUID) - + INSERT INTO TBPM_PROFILE_CONTROLS (PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, @@ -976,43 +976,43 @@ WHERE (GUID = @Original_GUID) VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@ADDED_WHEN,@CHANGED_WHO,@CHANGED_WHEN,@INDEX_NAME,@TYP,@VALIDATION,@CHOICE_LIST,@CONNECTION_ID,@SQL_UEBERPRUEFUNG,@HEIGHT,@WIDTH,@FONT_STYLE,@FONT_SIZE,@FONT_FAMILY,@FONT_COLOR,@READ_ONLY,@LOAD_IDX_VALUE,@DEFAULT_VALUE,@MULTISELECT,@VKT_ADD_ITEM,@VKT_PREVENT_MULTIPLE_VALUES,@REGEX_MATCH,@REGEX_MESSAGE_DE,@REGEX_MESSAGE_EN,@IMAGE_CONTROL,@SQL2,@SQL_ENABLE,@SAVE_CHANGE_ON_ENABLED,@FORMAT_STRING,@TEXT_ALIGNMENT); SELECT GUID, PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN FROM TBPM_PROFILE_CONTROLS WHERE (GUID = SCOPE_IDENTITY()) ORDER BY Y_LOC, X_LOC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1021,7 +1021,7 @@ SELECT GUID, PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADD SELECT GUID, PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN, IMAGE_CONTROL, SQL2, SQL_ENABLE, SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, - TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT + TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT, DISPLAY_IN_SEPERATE_FORM FROM TBPM_PROFILE_CONTROLS WHERE (GUID = @guid) ORDER BY Y_LOC, X_LOC @@ -1031,7 +1031,7 @@ ORDER BY Y_LOC, X_LOC - + UPDATE TBPM_PROFILE_CONTROLS SET PROFIL_ID = @PROFIL_ID, NAME = @NAME, CTRL_TYPE = @CTRL_TYPE, CTRL_TEXT = @CTRL_TEXT, X_LOC = @X_LOC, Y_LOC = @Y_LOC, CHANGED_WHO = @CHANGED_WHO, INDEX_NAME = @INDEX_NAME, TYP = @TYP, VALIDATION = @VALIDATION, CHOICE_LIST = @CHOICE_LIST, CONNECTION_ID = @CONNECTION_ID, SQL_UEBERPRUEFUNG = @SQL_UEBERPRUEFUNG, HEIGHT = @HEIGHT, WIDTH = @WIDTH, @@ -1042,42 +1042,42 @@ SET PROFIL_ID = @PROFIL_ID, NAME = @NAME, CTRL_TYPE = @CTRL_TYPE, WHERE (GUID = @Original_GUID); SELECT GUID, PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, INDEX_NAME, TYP, VALIDATION, CHOICE_LIST, CONNECTION_ID, SQL_UEBERPRUEFUNG, HEIGHT, WIDTH, FONT_STYLE, FONT_SIZE, FONT_FAMILY, FONT_COLOR, READ_ONLY, LOAD_IDX_VALUE, DEFAULT_VALUE, MULTISELECT, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN FROM TBPM_PROFILE_CONTROLS WHERE (GUID = @GUID) ORDER BY Y_LOC, X_LOC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1127,6 +1127,7 @@ SELECT GUID, PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, ADD + @@ -1236,8 +1237,8 @@ VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@ INSERT INTO TBPM_PROFILE_CONTROLS - (PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, HEIGHT, WIDTH, TEXT_ALIGNMENT) -VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@HEIGHT,@Width,@TEXT_ALIGNMENT) + (PROFIL_ID, NAME, CTRL_TYPE, CTRL_TEXT, X_LOC, Y_LOC, ADDED_WHO, HEIGHT, WIDTH, TEXT_ALIGNMENT, DISPLAY_IN_SEPERATE_FORM) +VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@HEIGHT,@Width,@TEXT_ALIGNMENT,@DISPLAY_IN_SEPERATE_FORM) @@ -1249,6 +1250,7 @@ VALUES (@PROFIL_ID,@NAME,@CTRL_TYPE,@CTRL_TEXT,@X_LOC,@Y_LOC,@ADDED_WHO,@ + @@ -1273,7 +1275,8 @@ WHERE (GUID = @Original_GUID); SELECT dbo.FNPM_LANGUAGE_CONTROL_TEXT(NAME, @USER_LANGUAGE, CTRL_TYPE, CTRL_TEXT) AS CTRL_CAPTION_LANG, ADDED_WHEN, ADDED_WHO, CHANGED_WHEN, CHANGED_WHO, CHOICE_LIST, CONNECTION_ID, CTRL_TEXT, CTRL_TYPE, DEFAULT_VALUE, FONT_COLOR, FONT_FAMILY, FONT_SIZE, FONT_STYLE, GUID, HEIGHT, INDEX_NAME, LOAD_IDX_VALUE, MULTISELECT, NAME, PROFIL_ID, READ_ONLY, REGEX_MATCH, REGEX_MESSAGE_DE, REGEX_MESSAGE_EN, SQL_UEBERPRUEFUNG, TYP, VALIDATION, VKT_ADD_ITEM, VKT_PREVENT_MULTIPLE_VALUES, WIDTH, X_LOC, Y_LOC, IMAGE_CONTROL, SQL2, SQL_ENABLE, - SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT + SET_CONTROL_DATA, SQL_ENABLE_ON_LOAD, SQL_ENABLE_ON_LOAD_CONID, CONTROL_ACTIVE, TABLE_ORDER_COLUMN, SAVE_CHANGE_ON_ENABLED, FORMAT_STRING, TEXT_ALIGNMENT, + DISPLAY_IN_SEPERATE_FORM FROM TBPM_PROFILE_CONTROLS AS T WHERE (PROFIL_ID = @profil_id) ORDER BY Y_LOC, X_LOC @@ -2703,7 +2706,7 @@ SELECT GUID, NAME, TITLE, PRIORITY, DESCRIPTION, ACTIVE, WD_SEARCH, NO_OF_DOCUME - + @@ -2712,6 +2715,7 @@ SELECT GUID, NAME, TITLE, PRIORITY, DESCRIPTION, ACTIVE, WD_SEARCH, NO_OF_DOCUME + @@ -2822,7 +2826,7 @@ SELECT GUID, NAME, TITLE, PRIORITY, DESCRIPTION, ACTIVE, WD_SEARCH, NO_OF_DOCUME - + @@ -3415,9 +3419,9 @@ SELECT GUID, NAME, TITLE, PRIORITY, DESCRIPTION, ACTIVE, WD_SEARCH, NO_OF_DOCUME - - - + + + \ No newline at end of file diff --git a/app/TaskFlow/DD_DMSLiteDataSet.xss b/app/TaskFlow/DD_DMSLiteDataSet.xss index 8be6c64..6aa9fbe 100644 --- a/app/TaskFlow/DD_DMSLiteDataSet.xss +++ b/app/TaskFlow/DD_DMSLiteDataSet.xss @@ -4,7 +4,7 @@ Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. --> - + diff --git a/app/TaskFlow/ModuleControlProperties.vb b/app/TaskFlow/ModuleControlProperties.vb index e293816..c78cbd0 100644 --- a/app/TaskFlow/ModuleControlProperties.vb +++ b/app/TaskFlow/ModuleControlProperties.vb @@ -134,7 +134,6 @@ Public Module ModuleControlProperties Public Property [SaveChangeOnReadOnly]() As Boolean - Public Property IndexType() As IndexTypes @@ -350,6 +349,10 @@ Public Module ModuleControlProperties Public Property AllowAddNewValues As Boolean + + + + Public Property [DISPLAY_SEP_FORM]() As Boolean End Class Public Class ButtonProperties diff --git a/app/TaskFlow/TaskFlow.vbproj b/app/TaskFlow/TaskFlow.vbproj index a2b82c5..d281403 100644 --- a/app/TaskFlow/TaskFlow.vbproj +++ b/app/TaskFlow/TaskFlow.vbproj @@ -465,6 +465,7 @@ + @@ -556,6 +557,12 @@ Form + + frmControl_Table.vb + + + Form + frmDesignerLayout.vb @@ -819,6 +826,9 @@ frmColumn_Detail.vb Designer + + frmControl_Table.vb + frmDesignerLayout.vb Designer diff --git a/app/TaskFlow/frmControl_Table.Designer.vb b/app/TaskFlow/frmControl_Table.Designer.vb new file mode 100644 index 0000000..a535da4 --- /dev/null +++ b/app/TaskFlow/frmControl_Table.Designer.vb @@ -0,0 +1,122 @@ + _ +Partial Class frmControl_Table + Inherits DevExpress.XtraBars.Ribbon.RibbonForm + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmControl_Table)) + Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() + Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem() + Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem() + Me.rbnPageStart = New DevExpress.XtraBars.Ribbon.RibbonPage() + Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() + Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() + Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() + CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'RibbonControl1 + ' + Me.RibbonControl1.ExpandCollapseItem.Id = 0 + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3}) + Me.RibbonControl1.Location = New System.Drawing.Point(0, 0) + Me.RibbonControl1.MaxItemId = 5 + Me.RibbonControl1.Name = "RibbonControl1" + Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.rbnPageStart}) + Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] + Me.RibbonControl1.Size = New System.Drawing.Size(800, 158) + Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1 + ' + 'BarButtonItem1 + ' + Me.BarButtonItem1.Caption = "Daten neu laden" + Me.BarButtonItem1.Id = 1 + Me.BarButtonItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.BarButtonItem1.Name = "BarButtonItem1" + ' + 'BarButtonItem2 + ' + Me.BarButtonItem2.Caption = "Abbruch" + Me.BarButtonItem2.Id = 3 + Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.BarButtonItem2.Name = "BarButtonItem2" + ' + 'rbnPageStart + ' + Me.rbnPageStart.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1}) + Me.rbnPageStart.Name = "rbnPageStart" + Me.rbnPageStart.Text = "Start" + ' + 'RibbonPageGroup1 + ' + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem2) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem3) + Me.RibbonPageGroup1.Name = "RibbonPageGroup1" + Me.RibbonPageGroup1.Text = "Funktionen" + ' + 'RibbonStatusBar1 + ' + Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 428) + Me.RibbonStatusBar1.Name = "RibbonStatusBar1" + Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1 + Me.RibbonStatusBar1.Size = New System.Drawing.Size(800, 22) + ' + 'RibbonPage2 + ' + Me.RibbonPage2.Name = "RibbonPage2" + Me.RibbonPage2.Text = "RibbonPage2" + ' + 'BarButtonItem3 + ' + Me.BarButtonItem3.Caption = "Layout zurücksetzen" + Me.BarButtonItem3.Id = 4 + Me.BarButtonItem3.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.BarButtonItem3.Name = "BarButtonItem3" + ' + 'frmControl_Table + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Controls.Add(Me.RibbonStatusBar1) + Me.Controls.Add(Me.RibbonControl1) + Me.IconOptions.SvgImage = CType(resources.GetObject("frmControl_Table.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.Name = "frmControl_Table" + Me.Ribbon = Me.RibbonControl1 + Me.StatusBar = Me.RibbonStatusBar1 + Me.Text = "frmControl_Table" + CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl + Friend WithEvents rbnPageStart As DevExpress.XtraBars.Ribbon.RibbonPage + Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar + Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage + Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem +End Class diff --git a/app/TaskFlow/frmControl_Table.resx b/app/TaskFlow/frmControl_Table.resx new file mode 100644 index 0000000..977f028 --- /dev/null +++ b/app/TaskFlow/frmControl_Table.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANYDAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ + LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3 + RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh + Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm + aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iVXBkYXRlIj4NCiAgICA8ZyBj + bGFzcz0ic3QxIj4NCiAgICAgIDxwYXRoIGQ9Ik0xNiw2aC02VjJoNlY2eiBNMTYsOGgtNnY0aDZWOHog + TTI0LDJoLTZ2NGg2VjJ6IE0yNCwxMlY4aC02djRIMjR6IE0yLDZoNlYySDJWNnogTTIsMThoNnYtNEgy + VjE4eiBNMTYsMTQgICAgTDE2LDE0bC02LDB2NGgyLjhDMTMuNSwxNi40LDE0LjYsMTUsMTYsMTR6IE0y + LDEyaDZWOEgyVjEyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwvZz4NCiAgICA8cGF0aCBkPSJNMjcu + NywyMGgySDMwdi02bC0yLjMsMi4zQzI2LjIsMTQuOSwyNC4yLDE0LDIyLDE0Yy00LjQsMC04LDMuNi04 + LDhjMCw0LjQsMy42LDgsOCw4czgtMy42LDgtOGgtMiAgIGMwLDMuMy0yLjcsNi02LDZzLTYtMi43LTYt + NnMyLjctNiw2LTZjMS43LDAsMy4yLDAuNyw0LjIsMS44TDI0LDIwSDI3Ljd6IiBjbGFzcz0iR3JlZW4i + IC8+DQogIDwvZz4NCjwvc3ZnPgs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPoBAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iQ2xlYXJIZWFkZXJBbmRGb290ZXIiIHN0eWxlPSJlbmFibGUtYmFja2dy + b3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5SZWR7ZmlsbDoj + RDExQzFDO30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI3LDRINUM0LjUsNCw0LDQuNSw0LDV2MjJjMCww + LjUsMC41LDEsMSwxaDIyYzAuNSwwLDEtMC41LDEtMVY1QzI4LDQuNSwyNy41LDQsMjcsNHogTTIyLDIw + bC0yLDJsLTQtNGwtNCw0ICBsLTItMmw0LTRsLTQtNGwyLTJsNCw0bDQtNGwyLDJsLTQsNEwyMiwyMHoi + IGNsYXNzPSJSZWQiIC8+DQo8L3N2Zz4L + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPECAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku + WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz + OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl + Pg0KICA8ZyBpZD0iRGVsZXRlTGlzdCI+DQogICAgPHBhdGggZD0iTTYsMjZWNGgxOHYxMy4ybDItMlYz + YzAtMC42LTAuNC0xLTEtMUg1QzQuNCwyLDQsMi40LDQsM3YyNGMwLDAuNiwwLjQsMSwxLDFoOC4ybDIt + Mkg2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMjgsMjAgMjYsMTggMjIs + MjIgMTgsMTggMTYsMjAgMjAsMjQgMTYsMjggMTgsMzAgMjIsMjYgMjYsMzAgMjgsMjggMjQsMjQgICIg + Y2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPoBAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iU2VsZWN0VGFibGUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcg + MCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9 + Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0xMCwxMEgyVjRoOFYxMHogTTIwLDRoLTh2Nmg4VjR6IE0zMCw0 + aC04djZoOFY0eiBNMTAsMTJIMnY2aDhWMTJ6IE0yMCwxMmgtOHY2aDhWMTJ6IE0zMCwxMmgtOHY2aDhW + MTJ6ICAgTTEwLDIwSDJ2Nmg4VjIweiBNMjAsMjBoLTh2Nmg4VjIweiBNMzAsMjBoLTh2Nmg4VjIweiIg + Y2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L + + + \ No newline at end of file diff --git a/app/TaskFlow/frmControl_Table.vb b/app/TaskFlow/frmControl_Table.vb new file mode 100644 index 0000000..5bb695c --- /dev/null +++ b/app/TaskFlow/frmControl_Table.vb @@ -0,0 +1,607 @@ +Imports System.Data +Imports System.Globalization +Imports DevExpress.Data +Imports DevExpress.Utils +Imports DevExpress.XtraEditors +Imports DevExpress.XtraExport.Helpers +Imports DevExpress.XtraGrid +Imports DevExpress.XtraGrid.Columns +Imports DevExpress.XtraGrid.Views.Base +Imports DevExpress.XtraGrid.Views.Grid +Imports DevExpress.XtraReports.ReportGeneration +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.EDMI.API + +Public Class frmControl_Table + Private _gridControl As GridControl + Private _gridView As GridView + Private _controlRow As DataRow + Private _dataTable As DataTable + Private _docCurrency As String + Private _profilID As Integer + Private _controlID As Integer + Private _parentValidator As frmValidator + Private _controlCreator As ClassControlCreator + Private ReadOnly MyControlTableLogger As Logger + Private _gridDataLoader As ClassGridDataLoader + Private _isDirty As Boolean = False + ' Öffentliche Property für Dirty-Status + Public ReadOnly Property IsDirty As Boolean + Get + Return _isDirty + End Get + End Property + Public Sub New(controlRow As DataRow, dataTable As DataTable, docCurrency As String, parentValidator As frmValidator, controlCreator As ClassControlCreator) + InitializeComponent() + MyControlTableLogger = LOGCONFIG.GetLogger() + _gridDataLoader = New ClassGridDataLoader(DatabaseFallback) + _controlRow = controlRow + _dataTable = dataTable + _docCurrency = docCurrency + _parentValidator = parentValidator + _controlCreator = controlCreator + + If controlRow IsNot Nothing Then + _profilID = If(IsDBNull(controlRow("PROFIL_ID")), 0, CInt(controlRow("PROFIL_ID"))) + _controlID = If(IsDBNull(controlRow("GUID")), 0, CInt(controlRow("GUID"))) + + Dim oTitle = $"TABLE.{controlRow("NAME")}.FORMCAPTION" + Dim oCaption = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO(oTitle) + + If IsNothing(oCaption) Then + Me.Text = controlRow("CTRL_TEXT").ToString() + Else + Me.Text = oCaption + End If + End If + End Sub + Private Function GetXML_FormSizeName(pProfilID As Integer, pControlID As Integer) + Dim Filename As String = String.Format($"Formlayout_{pProfilID}-{pControlID}.xml") + Return System.IO.Path.Combine(USER_CONFIG_DIRECTORY, Filename) + End Function + Public Function GetGridControl() As GridControl + Return _gridControl + End Function + Private Sub frmControl_Table_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Try + MyControlTableLogger?.Debug("=== FORM LOAD START ===") + MyControlTableLogger?.Debug($"Form Size: {Me.Size}, Controls vor Grid: {Me.Controls.Count}") + + ' Grid über ControlCreator erstellen (wie im frmValidator) + CreateGridViaControlCreator() + + ' WICHTIG: Grid-Daten befüllen + FillGridWithData() + + MyControlTableLogger?.Debug($"Nach CreateGrid - Controls im Form: {Me.Controls.Count}") + + ' GridControl-Status prüfen + If _gridControl IsNot Nothing Then + MyControlTableLogger?.Debug($"GridControl.Visible: {_gridControl.Visible}, Enabled: {_gridControl.Enabled}") + MyControlTableLogger?.Debug($"GridControl.Size: {_gridControl.Size}, Location: {_gridControl.Location}") + MyControlTableLogger?.Debug($"GridControl.Parent: {_gridControl.Parent?.Name}") + End If + ' Formular-Größe wiederherstellen + RestoreFormSize() + + MyControlTableLogger?.Debug("=== FORM LOAD END ===") + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler beim Laden des Grids: {ex.Message}", ex) + XtraMessageBox.Show($"Fehler beim Laden des Grids: {ex.Message}", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + ''' + ''' Befüllt das Grid mit Daten aus der Datenbank + ''' + Private Sub FillGridWithData() + Try + If _gridControl Is Nothing OrElse _parentValidator Is Nothing Then + MyControlTableLogger?.Warn("FillGridWithData: GridControl oder ParentValidator ist Nothing") + Return + End If + + MyControlTableLogger?.Debug("Starte FillGridWithData...") + + ' ✅ RICHTIG: DT_COLUMNS_GRID (ALLE Spalten mit SPALTENBREITE!) + Dim allColumnDefinitions As DataTable = _parentValidator.DT_COLUMNS_GRID + + If allColumnDefinitions Is Nothing Then + MyControlTableLogger?.Warn("Keine Spalten-Definitionen verfügbar (DT_COLUMNS_GRID)") + Return + End If + + Dim isIDBActive As Boolean = IDB_ACTIVE + Dim userLanguage As String = USER_LANGUAGE + + ' GridDataLoader mit der RICHTIGEN Tabelle aufrufen + Dim success As Boolean = _gridDataLoader.FillGridData( + _gridControl, + _controlRow, + allColumnDefinitions, ' ← ALLE Spalten, nicht nur SQL! + _parentValidator + ) + + If success Then + MyControlTableLogger?.Debug("Grid-Daten erfolgreich befüllt") + _gridControl.RefreshDataSource() + Else + MyControlTableLogger?.Warn("Grid-Daten konnten nicht befüllt werden") + End If + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler in FillGridWithData: {ex.Message}", ex) + End Try + End Sub + Private Sub CreateGridViaControlCreator() + If _controlCreator Is Nothing OrElse _controlRow Is Nothing OrElse _dataTable Is Nothing Then + Throw New InvalidOperationException("ControlCreator, ControlRow oder DataTable fehlen.") + End If + + Try + MyControlTableLogger?.Debug($"Starte Grid-Erstellung für Control-ID: {_controlID}, Profil-ID: {_profilID}") + + ' WICHTIG: PanelControl (DevExpress) statt Panel verwenden! + Dim containerPanel As New DevExpress.XtraEditors.PanelControl() + containerPanel.Dock = DockStyle.Fill + containerPanel.Name = "GridContainerPanel" + containerPanel.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder + Me.Controls.Add(containerPanel) + + MyControlTableLogger?.Debug("Container PanelControl erstellt und zum Form hinzugefügt") + + ' Grid über ControlCreator erstellen - MIT PanelControl als Parent + _gridControl = _controlCreator.CreateExistingGridControl(_controlRow, _dataTable, False, _docCurrency, containerPanel) + + If _gridControl Is Nothing Then + MyControlTableLogger?.Warn("CreateExistingGridControl hat Nothing zurückgegeben") + Throw New InvalidOperationException("Grid konnte nicht erstellt werden.") + End If + + MyControlTableLogger?.Debug($"GridControl erstellt: {_gridControl.Name}") + MyControlTableLogger?.Debug($"GridControl.Parent nach Erstellung: {_gridControl.Parent?.Name}") + + ' GridControl sollte bereits vom ControlCreator hinzugefügt worden sein + ' Falls nicht, explizit hinzufügen + If _gridControl.Parent Is Nothing Then + containerPanel.Controls.Add(_gridControl) + MyControlTableLogger?.Debug("GridControl manuell zu Container hinzugefügt") + End If + + ' GridControl konfigurieren + _gridControl.Dock = DockStyle.Fill + _gridControl.Visible = True + _gridControl.BringToFront() + + MyControlTableLogger?.Debug($"GridControl Dock-Style gesetzt, Container.Controls.Count: {containerPanel.Controls.Count}") + + ' GridView-Referenz holen + If _gridControl.MainView IsNot Nothing AndAlso TypeOf _gridControl.MainView Is GridView Then + _gridView = DirectCast(_gridControl.MainView, GridView) + MyControlTableLogger?.Debug($"GridView gefunden: {_gridView.Name}, Columns: {_gridView.Columns.Count}") + + ' Events registrieren (wie im frmValidator) + AddHandler _gridView.CellValueChanged, AddressOf GridView_CellValueChanged + AddHandler _gridView.KeyDown, AddressOf GridView_KeyDown + AddHandler _gridView.RowDeleting, AddressOf GridView_RowDeleting + + MyControlTableLogger?.Debug("GridView Events registriert") + Else + MyControlTableLogger?.Warn($"Kein GridView gefunden. MainView ist: {_gridControl.MainView?.GetType().Name}") + End If + + If _dataTable IsNot Nothing Then + AddHandler _dataTable.RowDeleted, AddressOf GridDataSource_RowDeleted + MyControlTableLogger?.Debug($"DataTable Events registriert. Rows: {_dataTable.Rows.Count}") + End If + + ' Refresh erzwingen + _gridControl.Refresh() + containerPanel.Refresh() + Me.Refresh() + + MyControlTableLogger?.Debug("CreateGridViaControlCreator abgeschlossen") + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler in CreateGridViaControlCreator: {ex.Message}", ex) + MyControlTableLogger?.Error($"StackTrace: {ex.StackTrace}") + Throw + End Try + End Sub + + + Private Sub GridView_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) + ' Markiere als geändert + _isDirty = True + MyControlTableLogger?.Debug("Grid-Daten geändert - IsDirty = True") + ' Änderungen an Parent-Validator weitergeben, falls notwendig + If _parentValidator IsNot Nothing Then + ' Hier können Sie die gleiche Logik wie im frmValidator implementieren + End If + End Sub + + Private Sub GridView_KeyDown(sender As Object, e As KeyEventArgs) + If e.KeyCode = Keys.Delete Then + If _gridView IsNot Nothing AndAlso _gridView.SelectedRowsCount > 0 Then + Dim result = XtraMessageBox.Show("Möchten Sie die ausgewählte(n) Zeile(n) wirklich löschen?", + "Löschen bestätigen", + MessageBoxButtons.YesNo, + MessageBoxIcon.Question) + If result = DialogResult.Yes Then + _gridView.DeleteSelectedRows() + End If + End If + End If + End Sub + + Private Sub GridView_RowDeleting(sender As Object, e As RowDeletingEventArgs) + ' Markiere als geändert beim Löschen + _isDirty = True + MyControlTableLogger?.Debug("Grid-Zeile gelöscht - IsDirty = True") + End Sub + + Private Sub GridDataSource_RowDeleted(sender As Object, e As DataRowChangeEventArgs) + ' Cleanup nach dem Löschen + CleanupDeletedRows() + End Sub + + Private Sub CleanupDeletedRows() + If _dataTable Is Nothing Then Return + + Try + Dim rowsToRemove As New List(Of DataRow) + For Each row As DataRow In _dataTable.Rows + If row.RowState = DataRowState.Deleted OrElse row.RowState = DataRowState.Detached Then + rowsToRemove.Add(row) + End If + Next + + For Each row In rowsToRemove + Try + If row.RowState <> DataRowState.Detached Then + _dataTable.Rows.Remove(row) + End If + Catch + ' Row bereits entfernt + End Try + Next + Catch ex As Exception + ' Fehlerbehandlung + End Try + End Sub + + Public Function GetGridData() As DataTable + Return _dataTable + End Function + + Public Function ValidateGrid() As Boolean + If _gridView Is Nothing Then Return True + + Try + _gridView.CloseEditor() + _gridView.UpdateCurrentRow() + Return _gridView.PostEditor() + Catch ex As Exception + Return False + End Try + End Function + + Private Sub frmControl_Table_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing + Try + ' Validierung vor dem Schließen + If Not ValidateGrid() Then + Dim result = XtraMessageBox.Show("Es gibt ungespeicherte Änderungen. Trotzdem schließen?", + "Warnung", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning) + If result = DialogResult.No Then + e.Cancel = True + Return + End If + End If + + ' Formular-Größe speichern + SaveFormSize() + ' Events entfernen + If _gridView IsNot Nothing Then + RemoveHandler _gridView.CellValueChanged, AddressOf GridView_CellValueChanged + RemoveHandler _gridView.KeyDown, AddressOf GridView_KeyDown + RemoveHandler _gridView.RowDeleting, AddressOf GridView_RowDeleting + End If + + If _dataTable IsNot Nothing Then + RemoveHandler _dataTable.RowDeleted, AddressOf GridDataSource_RowDeleted + End If + + Catch ex As Exception + ' Fehlerbehandlung beim Schließen + End Try + End Sub + + Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick + Try + MyControlTableLogger?.Debug("Daten neu laden angefordert ...") + + ' Sprachabhängige Texte + Dim title, question, successMessage As String + + Select Case USER_LANGUAGE + Case "de-DE" + title = "Daten neu laden" + question = "Möchten Sie die Daten wirklich neu laden?" & vbCrLf & vbCrLf & + "Alle nicht gespeicherten Änderungen gehen verloren!" + successMessage = "Daten wurden erfolgreich neu geladen." + + Case "fr-FR" + title = "Recharger les données" + question = "Voulez-vous vraiment recharger les données?" & vbCrLf & vbCrLf & + "Toutes les modifications non enregistrées seront perdues!" + successMessage = "Les données ont été rechargées avec succès." + + Case Else ' en-US, en-GB, etc. + title = "Reload Data" + question = "Do you really want to reload the data?" & vbCrLf & vbCrLf & + "All unsaved changes will be lost!" + successMessage = "Data has been successfully reloaded." + End Select + + ' Benutzer-Bestätigung + Dim result = XtraMessageBox.Show( + question, + title, + MessageBoxButtons.YesNo, + MessageBoxIcon.Question + ) + + If result = DialogResult.No Then + MyControlTableLogger?.Debug("Reload vom Benutzer abgebrochen") + Return + End If + + ' GridView zurücksetzen + If _gridView IsNot Nothing Then + _gridView.ClearColumnsFilter() + _gridView.ClearSorting() + _gridView.ClearGrouping() + MyControlTableLogger?.Debug("GridView Filter/Sortierung/Gruppierung gelöscht!") + End If + + ' Daten neu laden (Spaltenbreiten kommen aus DB!) + FillGridWithData() + + ' Erfolgs-Meldung + XtraMessageBox.Show( + successMessage, + title, + MessageBoxButtons.OK, + MessageBoxIcon.Information + ) + + MyControlTableLogger?.Debug("Daten erfolgreich neu geladen") + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler beim Neuladen: {ex.Message}", ex) + + ' Fehler-Meldung (auch mehrsprachig) + Dim errorTitle As String = If(USER_LANGUAGE = "de-DE", "Fehler", "Error") + Dim errorPrefix As String = If(USER_LANGUAGE = "de-DE", "Fehler beim Neuladen der Daten:", "Error while reloading data:") + + XtraMessageBox.Show( + $"{errorPrefix}{vbCrLf}{ex.Message}", + errorTitle, + MessageBoxButtons.OK, + MessageBoxIcon.Error + ) + End Try + End Sub + + Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick + Me.Close() + End Sub + ''' + ''' Speichert die aktuelle Formular-Größe und Position in einer XML-Datei + ''' + Private Sub SaveFormSize() + Try + Dim xmlFile As String = GetXML_FormSizeName(_profilID, _controlID) + + ' XML-Dokument erstellen + Dim xmlDoc As New Xml.XmlDocument() + Dim rootNode As Xml.XmlElement = xmlDoc.CreateElement("FormSize") + xmlDoc.AppendChild(rootNode) + + ' Größe speichern + Dim widthNode As Xml.XmlElement = xmlDoc.CreateElement("Width") + widthNode.InnerText = Me.Width.ToString() + rootNode.AppendChild(widthNode) + + Dim heightNode As Xml.XmlElement = xmlDoc.CreateElement("Height") + heightNode.InnerText = Me.Height.ToString() + rootNode.AppendChild(heightNode) + + ' Position speichern + Dim leftNode As Xml.XmlElement = xmlDoc.CreateElement("Left") + leftNode.InnerText = Me.Left.ToString() + rootNode.AppendChild(leftNode) + + Dim topNode As Xml.XmlElement = xmlDoc.CreateElement("Top") + topNode.InnerText = Me.Top.ToString() + rootNode.AppendChild(topNode) + + ' WindowState speichern + Dim stateNode As Xml.XmlElement = xmlDoc.CreateElement("WindowState") + stateNode.InnerText = Me.WindowState.ToString() + rootNode.AppendChild(stateNode) + + ' Verzeichnis erstellen, falls nicht vorhanden + Dim directory As String = System.IO.Path.GetDirectoryName(xmlFile) + If Not String.IsNullOrEmpty(directory) AndAlso Not System.IO.Directory.Exists(directory) Then + System.IO.Directory.CreateDirectory(directory) + End If + + ' XML speichern + xmlDoc.Save(xmlFile) + MyControlTableLogger?.Debug($"Formular-Größe gespeichert: {xmlFile}") + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler beim Speichern der Formular-Größe: {ex.Message}", ex) + End Try + End Sub + + ''' + ''' Lädt die gespeicherte Formular-Größe und Position aus der XML-Datei + ''' + Private Sub RestoreFormSize() + Try + Dim xmlFile As String = GetXML_FormSizeName(_profilID, _controlID) + + If Not System.IO.File.Exists(xmlFile) Then + MyControlTableLogger?.Debug($"Keine gespeicherte Formular-Größe gefunden: {xmlFile}") + Return + End If + + ' XML laden + Dim xmlDoc As New Xml.XmlDocument() + xmlDoc.Load(xmlFile) + + Dim rootNode As Xml.XmlNode = xmlDoc.SelectSingleNode("FormSize") + If rootNode Is Nothing Then Return + + ' Größe wiederherstellen + Dim widthNode As Xml.XmlNode = rootNode.SelectSingleNode("Width") + Dim heightNode As Xml.XmlNode = rootNode.SelectSingleNode("Height") + If widthNode IsNot Nothing AndAlso heightNode IsNot Nothing Then + Dim width As Integer = 0 + Dim height As Integer = 0 + If Integer.TryParse(widthNode.InnerText, width) AndAlso Integer.TryParse(heightNode.InnerText, height) Then + Me.Size = New Size(width, height) + End If + End If + + ' Position wiederherstellen + Dim leftNode As Xml.XmlNode = rootNode.SelectSingleNode("Left") + Dim topNode As Xml.XmlNode = rootNode.SelectSingleNode("Top") + If leftNode IsNot Nothing AndAlso topNode IsNot Nothing Then + Dim left As Integer = 0 + Dim top As Integer = 0 + If Integer.TryParse(leftNode.InnerText, left) AndAlso Integer.TryParse(topNode.InnerText, top) Then + Me.Location = New Point(left, top) + End If + End If + + ' WindowState wiederherstellen + Dim stateNode As Xml.XmlNode = rootNode.SelectSingleNode("WindowState") + If stateNode IsNot Nothing Then + Dim state As FormWindowState + If [Enum].TryParse(Of FormWindowState)(stateNode.InnerText, state) Then + Me.WindowState = state + End If + End If + + MyControlTableLogger?.Debug($"Formular-Größe wiederhergestellt: {xmlFile}") + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler beim Wiederherstellen der Formular-Größe: {ex.Message}", ex) + End Try + End Sub + + Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick + Try + ' Sprachabhängige Texte + Dim title, question, successMessage As String + + Select Case USER_LANGUAGE + Case "de-DE" + title = "Layout löschen" + question = "Möchten Sie das gespeicherte Layout wirklich löschen?" & vbCrLf & vbCrLf & + "Das Formular wird auf die Standardgröße zurückgesetzt und neu geladen." + successMessage = "Layout wurde erfolgreich gelöscht." & vbCrLf & "Das Formular wird neu geladen..." + + Case "fr-FR" + title = "Supprimer la disposition" + question = "Voulez-vous vraiment supprimer la disposition enregistrée?" & vbCrLf & vbCrLf & + "Le formulaire sera réinitialisé à la taille par défaut et rechargé." + successMessage = "La disposition a été supprimée avec succès." & vbCrLf & "Le formulaire va être rechargé..." + + Case Else ' en-US, en-GB, etc. + title = "Delete Layout" + question = "Do you really want to delete the saved layout?" & vbCrLf & vbCrLf & + "The form will be reset to the default size and reloaded." + successMessage = "Layout has been successfully deleted." & vbCrLf & "The form will be reloaded..." + End Select + + ' Benutzer-Bestätigung + Dim result = XtraMessageBox.Show( + question, + title, + MessageBoxButtons.YesNo, + MessageBoxIcon.Question + ) + + If result = DialogResult.No Then + MyControlTableLogger?.Debug("Layout-Löschung vom Benutzer abgebrochen") + Return + End If + + ' Layout-Datei löschen + Dim xmlFile As String = GetXML_FormSizeName(_profilID, _controlID) + Dim layoutDeleted As Boolean = False + + If System.IO.File.Exists(xmlFile) Then + System.IO.File.Delete(xmlFile) + layoutDeleted = True + MyControlTableLogger?.Debug($"Layout-Datei gelöscht: {xmlFile}") + Else + MyControlTableLogger?.Debug($"Keine Layout-Datei zum Löschen gefunden: {xmlFile}") + End If + + ' Erfolgs-Meldung + XtraMessageBox.Show( + successMessage, + title, + MessageBoxButtons.OK, + MessageBoxIcon.Information + ) + + ' Formular neu laden + If layoutDeleted Then + MyControlTableLogger?.Debug("Lade Formular nach Layout-Löschung neu...") + + ' GridView zurücksetzen + If _gridView IsNot Nothing Then + _gridView.ClearColumnsFilter() + _gridView.ClearSorting() + _gridView.ClearGrouping() + MyControlTableLogger?.Debug("GridView Filter/Sortierung/Gruppierung zurückgesetzt") + End If + + ' Daten neu laden + FillGridWithData() + + ' Formular auf Standardgröße zurücksetzen + Me.WindowState = FormWindowState.Normal + Me.StartPosition = FormStartPosition.CenterParent + + MyControlTableLogger?.Debug("Formular erfolgreich neu geladen") + End If + + Catch ex As Exception + MyControlTableLogger?.Error($"Fehler beim Löschen des Layouts: {ex.Message}", ex) + + ' Fehler-Meldung (mehrsprachig) + Dim errorTitle As String = If(USER_LANGUAGE = "de-DE", "Fehler", If(USER_LANGUAGE = "fr-FR", "Erreur", "Error")) + Dim errorPrefix As String = If(USER_LANGUAGE = "de-DE", + "Fehler beim Löschen des Layouts:", + If(USER_LANGUAGE = "fr-FR", + "Erreur lors de la suppression de la disposition:", + "Error while deleting layout:")) + + XtraMessageBox.Show( + $"{errorPrefix}{vbCrLf}{ex.Message}", + errorTitle, + MessageBoxButtons.OK, + MessageBoxIcon.Error + ) + End Try + End Sub +End Class \ No newline at end of file diff --git a/app/TaskFlow/frmFormDesigner.vb b/app/TaskFlow/frmFormDesigner.vb index 40fdf3e..4fb7fa5 100644 --- a/app/TaskFlow/frmFormDesigner.vb +++ b/app/TaskFlow/frmFormDesigner.vb @@ -624,7 +624,6 @@ Public Class frmFormDesigner obj.Index = ClassAllgemeineFunktionen.NotNullString(row.Item("INDEX_NAME"), "") obj.DefaultValue = ClassAllgemeineFunktionen.NotNullString(row.Item("DEFAULT_VALUE"), Nothing) obj.TextAlignment = ClassAllgemeineFunktionen.NotNullString(row.Item("TEXT_ALIGNMENT"), "Near") - ' Default value for ConnectionID Dim oConnectionId = ClassAllgemeineFunktionen.NotNullString(row.Item("CONNECTION_ID"), 0) obj.SQLCommand = New SQLValue(row.Item("SQL_UEBERPRUEFUNG")) Return obj @@ -746,6 +745,7 @@ Public Class frmFormDesigner oGridProps.AllowAddNewValues = StrToBool(oRow.Item("VKT_ADD_ITEM")) oGridProps.Enable_SQL = New SQLValue(ClassAllgemeineFunktionen.NotNullString(oRow.Item("SQL_ENABLE"), "")) oGridProps.Enable_SQL_OnLoad = New SQLValue(ClassAllgemeineFunktionen.NotNullString(oRow.Item("SQL_ENABLE_ON_LOAD"), "")) + oGridProps.DISPLAY_SEP_FORM = StrToBool(oRow.Item("DISPLAY_IN_SEPERATE_FORM")) ' Hier hinzufügen props = oGridProps ElseIf TypeOf sender Is Button Then Dim oButton As Button = sender @@ -908,6 +908,8 @@ Public Class frmFormDesigner Case "Active" UpdateSingleValue("CONTROL_ACTIVE", IIf(newValue = True, 1, 0)) + Case "DISPLAY_SEP_FORM" + UpdateSingleValue("DISPLAY_IN_SEPERATE_FORM", IIf(newValue = True, 1, 0)) Case "CtrlImage" Dim myPath As ImageValue = newValue UpdateImage(myPath.Value) @@ -1153,7 +1155,7 @@ Public Class frmFormDesigner Dim label = ControlCreator.CreateNewLabel(cursorPosition) SetMovementHandlers(label) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, label.Name, "LBL", label.Text, label.Location.X, label.Location.Y, USER_USERNAME, label.Size.Height, label.Size.Width, label.TextAlign) + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, label.Name, "LBL", label.Text, label.Location.X, label.Location.Y, USER_USERNAME, label.Size.Height, label.Size.Width, label.TextAlign, "") CHANGES_FORM_DESIGN = True CurrentControl = label CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1167,7 +1169,7 @@ Public Class frmFormDesigner Dim txt = ControlCreator.CreateNewTextBox(cursorPosition) SetMovementHandlers(txt) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, txt.Name, "TXT", txt.Name, txt.Location.X, txt.Location.Y, USER_USERNAME, txt.Size.Height, txt.Size.Width, txt.Properties.Appearance.TextOptions.HAlignment) + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, txt.Name, "TXT", txt.Name, txt.Location.X, txt.Location.Y, USER_USERNAME, txt.Size.Height, txt.Size.Width, txt.Properties.Appearance.TextOptions.HAlignment, "0") CHANGES_FORM_DESIGN = True CurrentControl = txt CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1181,7 +1183,7 @@ Public Class frmFormDesigner Dim cmb = ControlCreator.CreateNewCombobox(cursorPosition) SetMovementHandlers(cmb) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, cmb.Name, "CMB", cmb.Name, cmb.Location.X, cmb.Location.Y, USER_USERNAME, cmb.Size.Height, cmb.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, cmb.Name, "CMB", cmb.Name, cmb.Location.X, cmb.Location.Y, USER_USERNAME, cmb.Size.Height, cmb.Size.Width, "NONE", "0") CHANGES_FORM_DESIGN = True CurrentControl = cmb CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1195,7 +1197,7 @@ Public Class frmFormDesigner Dim dtp = ControlCreator.CreateNewDatetimepicker(cursorPosition) SetMovementHandlers(dtp) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, dtp.Name, "DTP", dtp.Name, dtp.Location.X, dtp.Location.Y, USER_USERNAME, dtp.Size.Height, dtp.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, dtp.Name, "DTP", dtp.Name, dtp.Location.X, dtp.Location.Y, USER_USERNAME, dtp.Size.Height, dtp.Size.Width, "NONE", "0") CHANGES_FORM_DESIGN = True CurrentControl = dtp CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1209,7 +1211,7 @@ Public Class frmFormDesigner Dim chk = ControlCreator.CreateNewCheckbox(cursorPosition) SetMovementHandlers(chk) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, chk.Name, "CHK", chk.Text, chk.Location.X, chk.Location.Y, USER_USERNAME, chk.Size.Height, chk.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, chk.Name, "CHK", chk.Text, chk.Location.X, chk.Location.Y, USER_USERNAME, chk.Size.Height, chk.Size.Width, "NONE", "0") CHANGES_FORM_DESIGN = True CurrentControl = chk CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1224,7 +1226,7 @@ Public Class frmFormDesigner SetMovementHandlers(lc) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, lc.Name, "LOOKUP", lc.Name, lc.Location.X, lc.Location.Y, USER_USERNAME, lc.Size.Height, lc.Size.Width, lc.Properties.Appearance.TextOptions.HAlignment) + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, lc.Name, "LOOKUP", lc.Name, lc.Location.X, lc.Location.Y, USER_USERNAME, lc.Size.Height, lc.Size.Width, lc.Properties.Appearance.TextOptions.HAlignment, "0") CHANGES_FORM_DESIGN = True CurrentControl = lc CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1240,7 +1242,7 @@ Public Class frmFormDesigner SetMovementHandlers(tb) AddHandler tb.MouseClick, AddressOf gridControl_MouseClick - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, tb.Name, "TABLE", tb.Name, tb.Location.X, tb.Location.Y, USER_USERNAME, tb.Size.Height, tb.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, tb.Name, "TABLE", tb.Name, tb.Location.X, tb.Location.Y, USER_USERNAME, tb.Size.Height, tb.Size.Width, "NONE", "") CHANGES_FORM_DESIGN = True Dim oControlId = GetLastID() @@ -1259,7 +1261,7 @@ Public Class frmFormDesigner SetMovementHandlers(line) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, line.Name, "LINE", line.Name, line.Location.X, line.Location.Y, USER_USERNAME, line.Size.Height, line.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, line.Name, "LINE", line.Name, line.Location.X, line.Location.Y, USER_USERNAME, line.Size.Height, line.Size.Width, "NONE", "") CHANGES_FORM_DESIGN = True CurrentControl = line CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { @@ -1274,7 +1276,7 @@ Public Class frmFormDesigner SetMovementHandlers(oButton) - TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, oButton.Name, "BUTTON", oButton.Name, oButton.Location.X, oButton.Location.Y, USER_USERNAME, oButton.Size.Height, oButton.Size.Width, "NONE") + TBPM_PROFILE_CONTROLSTableAdapter.cmdInsertAnlage(ProfileId, oButton.Name, "BUTTON", oButton.Name, oButton.Location.X, oButton.Location.Y, USER_USERNAME, oButton.Size.Height, oButton.Size.Width, "NONE", "") CHANGES_FORM_DESIGN = True CurrentControl = oButton CurrentControl.Tag = New ClassControlCreator.ControlMetadata() With { diff --git a/app/TaskFlow/frmValidator.vb b/app/TaskFlow/frmValidator.vb index a3e41eb..699fbce 100644 --- a/app/TaskFlow/frmValidator.vb +++ b/app/TaskFlow/frmValidator.vb @@ -4,6 +4,7 @@ Imports System.Data.Entity.Core.Common.CommandTrees 'Imports System.Data.SqlClient Imports System.Globalization Imports System.IO +Imports System.Linq Imports System.Reflection Imports System.Runtime.InteropServices Imports System.Text.RegularExpressions @@ -27,6 +28,7 @@ Imports DigitalData.Controls.LookupGrid Imports DigitalData.GUIs.Common Imports DigitalData.GUIs.Common.DocumentResultList Imports DigitalData.Modules.Base +Imports DigitalData.Modules.EDMI.API Imports DigitalData.Modules.EDMI.API.Constants Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback Imports DigitalData.Modules.Interfaces @@ -36,7 +38,6 @@ Imports DigitalData.Modules.ZooFlow.Constants 'Imports System.Windows.Forms.VisualStyles.VisualStyleElement 'Imports System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox Imports WINDREAMLib -Imports System.Linq Public Class frmValidator Public Event CustomColumnDisplayText As CustomColumnDisplayTextEventHandler @@ -49,12 +50,12 @@ Public Class frmValidator ''' ''' Contains all grid columns for the current profile ''' - Private Property DT_COLUMNS_GRID As DataTable + Public Property DT_COLUMNS_GRID As DataTable Private Property GIT_TEST As Boolean = False ''' ''' Contains all grid columns for the current profile which have an sql but don't have a reference to a control ''' - Private Property DT_COLUMNS_GRID_WITH_SQL As DataTable + Public Property DT_COLUMNS_GRID_WITH_SQL As DataTable ''' ''' Contains all grid columns for the current profile which have an sql and have a reference to a control @@ -136,14 +137,16 @@ Public Class frmValidator Private _CachedControlsByGuid As Dictionary(Of Integer, Control) Private _isUpdatingLookup As Boolean = False Private _suppressLookupEvents As Boolean = False - Private _isShowingErrorDialog As Boolean = False ' ← NEU: Klassenvariable oben hinzufügen - Private _overlayHandle As Object = Nothing ' ← NEU: Klassenvariable - Private _overlayRefCount As Integer = 0 ' ← NEU: Zähler für verschachtelte Calls - Private _overlayLock As New Object() ' ← NEU: Thread-Safe Lock + Private _isShowingErrorDialog As Boolean = False + Private _overlayHandle As Object = Nothing + Private _overlayRefCount As Integer = 0 'Zähler für verschachtelte Calls + Private _overlayLock As New Object() 'Thread-Safe Lock Private _documentPathHandler As DocumentPathHandler Private _isLoadingAdditionalSearches As Boolean = False - - + Private _gridDataLoader As ClassGridDataLoader + Private _separateGridDataCache As New Dictionary(Of String, DataTable) + ' Bei den anderen Private-Deklarationen: + Private _separateGridControlCache As New Dictionary(Of String, GridControl) Private Class Translation_Strings Inherits My.Resources.frmValidator_Strings End Class @@ -407,7 +410,7 @@ Public Class frmValidator Catch ex As Exception MyValidationLogger.Error(ex) - MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbcrlf & ex.Message, MsgBoxStyle.Critical, "Attention:") + MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Attention:") MyValidationLogger.Info(">> Error in LOADING profile-data: " & ex.Message, True) Me.Close() End Try @@ -543,7 +546,7 @@ Public Class frmValidator Catch ex As Exception MyValidationLogger.Error(ex) - MsgBox("Error loading final profile text:" & vbcrlf & ex.Message, MsgBoxStyle.Critical, "Attention:") + MsgBox("Error loading final profile text:" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Attention:") MyValidationLogger.Info(">> Error loading final profile text: " & ex.Message, True) End Try @@ -678,7 +681,7 @@ Public Class frmValidator Catch ex As Exception MyValidationLogger.Error(ex) - MsgBox("Error LOADING Profile-Data1:" & vbcrlf & ex.Message, MsgBoxStyle.Critical, "Attention:") + MsgBox("Error LOADING Profile-Data1:" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Attention:") MyValidationLogger.Info("Unexpected error in LOADING Profile-Data1: " & ex.Message) End Try End Sub @@ -818,7 +821,7 @@ Public Class frmValidator DatabaseFallback.ExecuteNonQueryECM(oSQL) Catch ex As Exception MyValidationLogger.Error(ex) - MsgBox("Error in delete jumped files:" & vbcrlf & ex.Message, MsgBoxStyle.Critical) + MsgBox("Error in delete jumped files:" & vbCrLf & ex.Message, MsgBoxStyle.Critical) End Try If LOG_HOTSPOTS Then @@ -1662,9 +1665,7 @@ Public Class frmValidator Case "TABLE" If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Table") - oControlInfo = "TABLE#" & oControlInfo - Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone() Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}" DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) @@ -1675,13 +1676,58 @@ Public Class frmValidator Continue For End If - Dim oGrid = ControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False, DocCurrency, PanelValidatorControl) - oMyControl = oGrid - ' NEU: GridView Event registrieren - AddHandler DirectCast(oGrid.MainView, GridView).CellValueChanged, AddressOf GridView_CellValueChanged - AddHandler DirectCast(oGrid.DataSource, DataTable).RowDeleted, AddressOf GridDataSource_RowDeleted - AddHandler DirectCast(oGrid.MainView, GridView).KeyDown, AddressOf GridView_KeyDown - AddHandler DirectCast(oGrid.MainView, GridView).RowDeleting, AddressOf GridView_RowDeleting + Dim displayInSeparateForm As Boolean = False + If Not IsDBNull(oControlRow("DISPLAY_IN_SEPERATE_FORM")) Then + displayInSeparateForm = CBool(oControlRow("DISPLAY_IN_SEPERATE_FORM")) + End If + + If displayInSeparateForm Then + MyValidationLogger.Debug($"[{oControlInfo}] - DisplayInSeparateForm is True. Creating a separate form for the grid.") + ' Button erstellen statt Grid + Dim btnShowGrid As New DevExpress.XtraEditors.SimpleButton() + btnShowGrid.Name = "BTNDYN_GRID_" + oControlRow("NAME").ToString() + Dim oTitle = "TABLE." + oControlRow("NAME").ToString() + Dim oCaption = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO(oTitle) + + If IsNothing(oCaption) Then + btnShowGrid.Text = oControlRow("CTRL_TEXT").ToString() + Else + btnShowGrid.Text = oCaption + End If + btnShowGrid.Font = New Font("Segoe UI", 10.0F, FontStyle.Bold) + ' Button-Position aus oControlRow setzen + If Not IsDBNull(oControlRow("X_LOC")) Then + btnShowGrid.Left = CInt(oControlRow("X_LOC")) + End If + If Not IsDBNull(oControlRow("Y_LOC")) Then + btnShowGrid.Top = CInt(oControlRow("Y_LOC")) + End If + ' Dynamische Breite basierend auf Textlänge berechnen + Using g As Graphics = btnShowGrid.CreateGraphics() + Dim textSize As SizeF = g.MeasureString(btnShowGrid.Text, btnShowGrid.Font) + btnShowGrid.Width = CInt(textSize.Width) + 20 ' +20 für Padding (links/rechts) + End Using + btnShowGrid.Height = 30 + + ' Click-Event für Button + AddHandler btnShowGrid.Click, Sub(sender, e) + OpenGridInSeparateForm(oControlRow, oFilteredDatatable) + End Sub + + PanelValidatorControl.Controls.Add(btnShowGrid) + Else + MyValidationLogger.Debug($"[{oControlInfo}] - DisplayInSeparateForm is False. Creating an embedded grid.") + Dim oGrid = ControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False, DocCurrency, PanelValidatorControl) + oMyControl = oGrid + ' NEU: GridView Event registrieren + AddHandler DirectCast(oGrid.MainView, GridView).CellValueChanged, AddressOf GridView_CellValueChanged + AddHandler DirectCast(oGrid.DataSource, DataTable).RowDeleted, AddressOf GridDataSource_RowDeleted + AddHandler DirectCast(oGrid.MainView, GridView).KeyDown, AddressOf GridView_KeyDown + AddHandler DirectCast(oGrid.MainView, GridView).RowDeleting, AddressOf GridView_RowDeleting + End If + + + Case "LINE" oMyControl = ControlCreator.CreateExistingLine(oControlRow, False) @@ -1739,6 +1785,9 @@ Public Class frmValidator Sub Clear_all_Input() For Each inctrl As Control In Me.PanelValidatorControl.Controls + If inctrl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If Dim Type As Type = inctrl.GetType Select Case True Case Type = GetType(DevExpress.XtraEditors.TextEdit) Or Type = GetType(MemoEdit) @@ -2074,6 +2123,77 @@ Public Class frmValidator End Sub + Private Sub OpenGridInSeparateForm(controlRow As DataRow, dataTable As DataTable) + Try + MyValidationLogger?.Debug($"Öffne Grid in separatem Fenster für Control: {controlRow("NAME")}") + + Dim controlName As String = controlRow("NAME").ToString() + + ' Erstelle das separate Formular + Dim frmTable As New frmControl_Table( + controlRow, + dataTable, + DocCurrency, + Me, + ControlCreator + ) + + ' Modal anzeigen + Dim dialogResult = frmTable.ShowDialog(Me) + + ' Nach dem Schließen: IsDirty-Status und GridControl übertragen + If frmTable.IsDirty Then + MyValidationLogger?.Debug("Separate Grid-Form wurde als 'Dirty' markiert - übertrage Status und GridControl") + + ' 1. GridControl aus separatem Formular holen + Dim separateGrid As GridControl = frmTable.GetGridControl() + + If separateGrid IsNot Nothing Then + ' 2. GridControl in Cache speichern für Check_UpdateIndexe + If _separateGridDataCache.ContainsKey(controlName) Then + ' Ersetze DataTable durch GridControl-Referenz + _separateGridDataCache(controlName) = TryCast(separateGrid.DataSource, DataTable) + Else + _separateGridDataCache.Add(controlName, TryCast(separateGrid.DataSource, DataTable)) + End If + + ' ODER BESSER: Speichere das GridControl selbst + ' Dafür neues Dictionary verwenden + If _separateGridControlCache.ContainsKey(controlName) Then + _separateGridControlCache(controlName) = separateGrid + Else + _separateGridControlCache.Add(controlName, separateGrid) + End If + + MyValidationLogger?.Debug($"GridControl für '{controlName}' gecacht") + End If + + ' 3. IsDirty für dieses Control setzen + If Not listofControls.Contains(controlName) Then + listofControls.Add(controlName) + MyValidationLogger?.Debug($"Control '{controlName}' zu listofControls hinzugefügt (IsDirty)") + End If + + ' Status-Label aktualisieren + SetStatusLabel("Tabellendaten wurden geändert", "Orange") + Else + MyValidationLogger?.Debug("Separate Grid-Form wurde NICHT geändert (IsDirty = False)") + End If + + ' WICHTIG: Formular NICHT disposen, da wir das GridControl noch brauchen! + ' frmTable.Dispose() ← NICHT aufrufen! + + Catch ex As Exception + MyValidationLogger?.Error($"Fehler beim Öffnen des separaten Grid-Fensters: {ex.Message}", ex) + XtraMessageBox.Show( + $"Fehler beim Öffnen des separaten Fensters:{vbCrLf}{ex.Message}", + "Fehler", + MessageBoxButtons.OK, + MessageBoxIcon.Error + ) + End Try + End Sub + Public Sub onDGVRowValidating(ByVal sender As Object, ByVal e As DataGridViewCellCancelEventArgs) Dim dgv As DataGridView = sender Try @@ -4035,6 +4155,8 @@ Public Class frmValidator _CachedSqlDataCache.Clear() _CachedSqlScalarCache.Clear() + _separateGridDataCache.Clear() + _separateGridControlCache.Clear() _CachedSqlControlsByGuid = Nothing CURRENT_WMFILE = Nothing activate_controls(False) @@ -4237,6 +4359,9 @@ Public Class frmValidator Next For Each oControl As Control In PanelValidatorControl.Controls + If oControl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If Dim controlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid If sqlControlIds.Contains(controlId) Then LoadSQLData(oControl, controlId) @@ -4284,6 +4409,9 @@ Public Class frmValidator End If For Each oControl As Control In PanelValidatorControl.Controls Try + If oControl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If If TypeOf oControl Is GridControl Then Dim oGrid As GridControl = DirectCast(oControl, GridControl) Dim oControlMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata) @@ -4914,7 +5042,7 @@ Public Class frmValidator End Function - Private Function GetVariableValuefromSource(oSourceIndexName As String, Optional oIDBTyp As Integer = 0, Optional FromIDB As Boolean = False) As Object + Public Function GetVariableValuefromSource(oSourceIndexName As String, Optional oIDBTyp As Integer = 0, Optional FromIDB As Boolean = False) As Object Try Dim oValuefromSource If IDB_ACTIVE = False Then @@ -4985,6 +5113,9 @@ Public Class frmValidator _CachedControlsByGuid = New Dictionary(Of Integer, Control)() For Each ctrl As Control In PanelValidatorControl.Controls Try + If ctrl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If Dim meta = DirectCast(ctrl.Tag, ClassControlCreator.ControlMetadata) _CachedControlsByGuid(meta.Guid) = ctrl Catch @@ -5011,6 +5142,9 @@ Public Class frmValidator If DTVWCONTROL_INDEX.Rows.Count > 0 Then Dim oCount As Integer = 0 For Each oControl As Control In Me.PanelValidatorControl.Controls + If oControl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If Dim oValueFromSource Dim oFormattedValue As String = "" @@ -5228,9 +5362,6 @@ Public Class frmValidator oControlType = "DevExpress.XtraGrid.GridControl" Dim oMyGridControl As GridControl = oControl - ' ========== OPTIMIERUNG 6: Dictionary-Lookup statt Select() ========== - ' VORHER: DT_COLUMNS_GRID.Select($"CONTROL_ID = {oControlId}") → O(n) pro Grid - ' NACHHER: Dictionary.TryGetValue() → O(1) Dim oDTColumnsPerDevExGrid As DataTable = Nothing If columnsByControl IsNot Nothing AndAlso columnsByControl.TryGetValue(oControlId, oDTColumnsPerDevExGrid) Then MyValidationLogger.Debug($"Grid [{oControl.Name}]: {oDTColumnsPerDevExGrid.Rows.Count} Spalten aus Cache geladen") @@ -5238,7 +5369,6 @@ Public Class frmValidator oDTColumnsPerDevExGrid = DT_COLUMNS_GRID.Clone() MyValidationLogger.Warn($"⚠️ Grid [{oControl.Name}]: Keine Spalten-Definition gefunden!") End If - ' ========== ENDE OPTIMIERUNG 6 ========== Try If oSourceIndexName = "" Then @@ -5993,7 +6123,7 @@ Public Class frmValidator MyValidationLogger.Info("[PERF] frmValidation_Shown START") End If Try - + _gridDataLoader = New ClassGridDataLoader(DatabaseFallback) ' Refresh_FileList() Load_Next_Document(True) If LOG_HOTSPOTS Then @@ -6511,6 +6641,9 @@ Public Class frmValidator If IsNumeric(CTRL_ID) Then For Each oControl As Control In Me.PanelValidatorControl.Controls Try + If oControl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If If IsNothing(DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Then Continue For End If @@ -6856,6 +6989,9 @@ Public Class frmValidator ' ========== ENDE BATCH START ========== ' ========== OPTIMIERUNG: Nur geänderte Controls durchlaufen ========== For Each oControl As Control In Me.PanelValidatorControl.Controls + If oControl.Name.StartsWith("BTNDYN_GRID") Then + Continue For + End If Dim oMeta As ClassControlCreator.ControlMetadata = Nothing Try oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata) @@ -7709,6 +7845,65 @@ Public Class frmValidator Next ' End For Each oControl + ' ========== TEIL 2: Separate Grids aus Cache verarbeiten ========== + ' Nach dem Ende der "For Each oControl As Control In Me.PanelValidatorControl.Controls" Schleife + + If _separateGridControlCache.Count > 0 Then + MyValidationLogger?.Debug($"Verarbeite {_separateGridControlCache.Count} separate Grid(s) aus Cache") + + For Each kvp As KeyValuePair(Of String, GridControl) In _separateGridControlCache + Dim controlName As String = kvp.Key + Dim oGrid As GridControl = kvp.Value + + ' Nur verarbeiten, wenn Control als "dirty" markiert ist + If Not listofControls.Contains(controlName) Then + MyValidationLogger?.Debug($"Separate Grid '{controlName}' wurde nicht geändert - überspringe") + Continue For + End If + + MyValidationLogger?.Debug($"[4] Separates GridControl verarbeiten: [{controlName}]") + + ' Control-Metadaten holen (EXAKT wie bei normalem Grid) + Dim oControlRow As DataRow = GetControlMetaBySql($"NAME='{controlName}'").Rows(0) + Dim oGUID = oControlRow("GUID") + Dim oControlRow1 = (From form In DTVWCONTROL_INDEX.AsEnumerable() + Where form.Item("GUID") = oGUID).SingleOrDefault() + Dim oIndexName As String = If(IsDBNull(oControlRow1("INDEX_NAME")), "", oControlRow1("INDEX_NAME").ToString()) + Dim oIsRequired As Boolean = True + Dim oIDBTyp As Integer = If(IsDBNull(oControlRow1("IDB_TYP")), 0, CInt(oControlRow1("IDB_TYP"))) + + ' Cleanup (wie bei normalem Grid) + CleanupDeletedRows(oGrid) + + ' Settings erstellen (EXAKT wie bei normalem Grid) + Dim oSettings = New ControlSettings() With { + .IndexName = oIndexName, + .ControlType = GetType(GridControl).ToString, + .Name = controlName, + .IsRequired = oIsRequired, + .IDBAttributeType = oIDBTyp + } + + ' Spalten-Definition holen (EXAKT wie bei normalem Grid) + Dim oGridColumnDefinition As DataTable = DT_COLUMNS_GRID.Clone() + Dim oExpression = $"CONTROL_ID = {oGUID}" + Dim selectedRows() As DataRow = DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE") + + If selectedRows.Length > 0 Then + selectedRows.CopyToDataTable(oGridColumnDefinition, LoadOption.PreserveChanges) + End If + + ' WICHTIG: DEINE BESTEHENDE ValidateGridControl Funktion verwenden! + Dim oResult = ValidateGridControl(oGrid, oSettings, oGridColumnDefinition, oMissing, oErrMsgMissingInput) + + If oResult = False Then + MyValidationLogger?.Warn($"⚠️ Validierung fehlgeschlagen für separates Grid [{controlName}] → Exit For") + Exit For + End If + Next + End If + + ' ========== BATCH: Gesammelte Statements abfeuern ========== If IDB_ACTIVE Then If oMissing = False Then diff --git a/app/TaskFlow/logtaskflow.txt b/app/TaskFlow/logtaskflow.txt index 5f28270..2498ded 100644 --- a/app/TaskFlow/logtaskflow.txt +++ b/app/TaskFlow/logtaskflow.txt @@ -1 +1,712 @@ - \ No newline at end of file +17:22:13.5249|taskFLOW|INFO >> MoveNext(frmMain.vb:2146) -> Starting Profile Loading +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2160) -> User clicked normal row. +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2176) -> Clicked ProfileId: [6], Started From: [CMROW] +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2345) -> Item_Scope: InDataRow +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2348) -> Item_Scope: GRID_LOAD_TYPE = OVERVIEW +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2351) -> Item_Scope: OVERVIEWgroupRowText Profile (Fixed): IDB - WISAG-like - VA +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2377) -> Item_Scope: Valid PROFIL_ID +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2389) -> Item_Scope: hitInfo.InDataRow... +17:22:13.5302|taskFLOW|DEBUG >> MoveNext(frmMain.vb:2412) -> Item_Scope: GotDocID 12002 and DocGUID 21231 +17:22:13.5302|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:13.5302|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:13.5302|MSSQLServer|DEBUG >> GetScalarValueWithConnectionObject(MSSQLServer.vb:580) -> GetScalarValueWithConnectionObject: Running Query [SELECT [dbo].[FNPM_CHECK_DocGUID_Valid] (21231)] with Parameters [] +17:22:13.5580|frmValidator|DEBUG >> .ctor(frmValidator.vb:158) -> Initialize Components... +17:22:17.0972|frmValidator|DEBUG >> .ctor(frmValidator.vb:163) -> Initialize _frmValidatorSearch... +17:22:17.3396|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:305) -> ###frmValidation_Load### +17:22:17.3396|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:306) -> Current User Language: [de-DE] +17:22:17.3396|Cache|DEBUG >> .ctor(Cache.vb:34) -> Initializing DocumentResultCache with capacity of [104900000] bytes. +17:22:18.0300|FilesystemEx|DEBUG >> CreateDirectory(FilesystemEx.vb:332) -> Directory C:\Users\SchreiberM\AppData\Roaming\Digital Data\taskFLOW\1.0.0.0\DocumentViewer already exists. Skipping. +17:22:18.0300|FilesystemEx|DEBUG >> CreateDirectory(FilesystemEx.vb:352) -> Using path C:\Users\SchreiberM\AppData\Roaming\Digital Data\taskFLOW\1.0.0.0\DocumentViewer +17:22:18.0300|ConfigManager`1|DEBUG >> LoadAppConfig(ConfigManager.vb:247) -> ApplicationConfig does not exist. +17:22:18.0300|ConfigManager`1|DEBUG >> LoadComputerConfig(ConfigManager.vb:269) -> Computer config does not exist. +17:22:18.0300|ConfigManager`1|DEBUG >> ReadFromFile(ConfigManager.vb:367) -> Loading config from: C:\Users\SchreiberM\AppData\Roaming\Digital Data\taskFLOW\1.0.0.0\DocumentViewer\UserConfig.xml +17:22:18.0431|ConfigManager`1|DEBUG >> LoadUserConfig(ConfigManager.vb:280) -> UserConfig exists and will be used. [C:\Users\SchreiberM\AppData\Roaming\Digital Data\taskFLOW\1.0.0.0\DocumentViewer\UserConfig.xml] +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:407) -> Profile Data loaded +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:416) -> frmValidation_Load finished till Step 3! +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:426) -> Step 4 +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:432) -> Step 5 +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:436) -> Step 6 +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:538) -> Buttontext validation loaded +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:561) -> oProfileRejectionText: Einfach mal ablehnen +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:562) -> oProfile_REJECT_SQL_REASONS: Select 'Ablehnungsgrund 1' union select 'Ablehnungsgrund 2' union select 'Ablehnungsgrund 3' +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:563) -> oProfileNotResponsibleText: Nicht zuständig +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:564) -> oProfile_NOT_RESP_SQL: SELECT '0' OverrideAll,0 IncludeFI +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:587) -> Nicht zuständig und Ablehnungs-Buttons werden eingeblendet! +17:22:18.0431|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:641) -> >> profiledata saved: +17:22:18.0582|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:642) -> >> finalProfile: True +17:22:18.0582|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:643) -> >> Move2Folder: +17:22:18.0582|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:644) -> >> Right_Delete: False +17:22:18.0582|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:647) -> PROFIL_sortbynewest: True +17:22:18.0582|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:661) -> Right_Delete: False +17:22:18.1633|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:18.1633|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:18.1633|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:18.1633|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.1668|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT IIF(LANG.CAPTION IS NULL,T.SPALTEN_HEADER,LANG.CAPTION) SPALTEN_HEADER_LANG, T.* from TBPM_CONTROL_TABLE T WITH (NOLOCK) INNER JOIN TBPM_PROFILE_CONTROLS T1 WITH (NOLOCK) ON T.CONTROL_ID = T1.GUID + LEFT JOIN (SELECT * FROM TBPM_CONTOL_TABLE_LANG WHERE LANG_CODE = 'de-DE') LANG ON T.GUID = LANG.COL_ID WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = 6 ORDER BY T.SEQUENCE] and Parameters [] +17:22:18.1962|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:18.1962|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:18.1982|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:18.1982|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.1982|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING, T.ADVANCED_LOOKUP from TBPM_CONTROL_TABLE T WITH (NOLOCK), TBPM_PROFILE_CONTROLS T1 WITH (NOLOCK) WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = 6 AND LEN(T.SQL_COMMAND) > 0 ORDER BY T.SEQUENCE] and Parameters [] +17:22:18.1982|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:18.1982|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:18.1982|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:18.1982|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.1982|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT + T1.GUID As CONTROL_ID, + T1.PROFIL_ID, + T.CONNECTION_ID, + T.SQL_COMMAND, + T.SPALTENNAME, + T.FORMATTYPE, + T.FORMATSTRING, + T.ADVANCED_LOOKUP + FROM + TBPM_CONTROL_TABLE T, + TBPM_PROFILE_CONTROLS T1 + WHERE + T1.CONTROL_ACTIVE = 1 AND + T.CONTROL_ID = T1.GUID AND + T1.PROFIL_ID = 6 AND + LEN(T.SQL_COMMAND) > 0 AND + T.SQL_COMMAND LIKE '%{#CTRL%' + ORDER BY T.SEQUENCE] and Parameters [] +17:22:18.1982|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 116 - CtrlName: LBL_9407c06c - CtrlIndex: ]: End of Select... +17:22:18.1982|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 120 - CtrlName: LBL_40dee67 - CtrlIndex: ]: End of Select... +17:22:18.1982|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 135 - CtrlName: LBL_17cbc463 - CtrlIndex: ]: End of Select... +17:22:18.2577|taskFLOW|DEBUG >> ReplaceControlValues(clsPatterns.vb:303) -> Control cache initialized with 3 controls +17:22:18.2577|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:18.2577|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:18.2577|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:18.2608|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:18.2608|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:18.2608|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.2608|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:18.2608|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:18.2608|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.2608|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [select 'Kreditor 1' union +select 'Kreditor 2' union +select 'Kreditor 3' union +select 'Kreditor 4' union +select 'Kreditor 5' + + +] and Parameters [] +17:22:18.2608|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1625) -> createControlsLU - Found 2 Controls which are depending on LUAttrStr2 +17:22:18.2608|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LOOKUP#CtrlID: 50 - CtrlName: LUAttrStr2 - CtrlIndex: Attribut String 2]: End of Select... +17:22:18.2608|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1441) -> [TXT#CtrlID: 119 - CtrlName: TXTDisplayOnly - CtrlIndex: @@DISPLAY_ONLY] - TXT Try to create control... +17:22:18.2786|ClassControlCreator|INFO >> TransformDataRow(ClassControlCreator.vb:129) -> Override oReadOnly = True for Control [TXTDisplayOnly] as Attribute is @@DISPLAY_ONLY and ReadOnly = False +17:22:18.2786|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1454) -> [TXT#CtrlID: 119 - CtrlName: TXTDisplayOnly - CtrlIndex: @@DISPLAY_ONLY] - TXT Created!! +17:22:18.2786|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TXT#CtrlID: 119 - CtrlName: TXTDisplayOnly - CtrlIndex: @@DISPLAY_ONLY]: End of Select... +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1632) -> createControlsLU - Found 1 Controls which' enable state is depending on LU_Attr1_Dep_Attr2 +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LOOKUP#CtrlID: 134 - CtrlName: LU_Attr1_Dep_Attr2 - CtrlIndex: Attribut String1]: End of Select... +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 117 - CtrlName: LBL_3de45179 - CtrlIndex: ]: End of Select... +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [CtrlID: 54 - CtrlName: BTN_1b70920b - CtrlIndex: ]: End of Select... +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1441) -> [TXT#CtrlID: 118 - CtrlName: txtAttributString1 - CtrlIndex: Attribut String1] - TXT Try to create control... +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1454) -> [TXT#CtrlID: 118 - CtrlName: txtAttributString1 - CtrlIndex: Attribut String1] - TXT Created!! +17:22:18.2925|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TXT#CtrlID: 118 - CtrlName: txtAttributString1 - CtrlIndex: Attribut String1]: End of Select... +17:22:18.3202|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [DTP#CtrlID: 52 - CtrlName: DTP_e3b36d2e - CtrlIndex: Attribut Date1]: End of Select... +17:22:18.3368|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 144 - CtrlName: LBL_81e62ba3 - CtrlIndex: ]: End of Select... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 55 - CtrlName: LBL_da93a37 - CtrlIndex: ]: End of Select... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [CHK#CtrlID: 53 - CtrlName: CHK_Bit1 - CtrlIndex: Attribut Bit1]: End of Select... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1441) -> [TXT#CtrlID: 143 - CtrlName: txtCurrencyFloat - CtrlIndex: Currency] - TXT Try to create control... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1454) -> [TXT#CtrlID: 143 - CtrlName: txtCurrencyFloat - CtrlIndex: Currency] - TXT Created!! +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TXT#CtrlID: 143 - CtrlName: txtCurrencyFloat - CtrlIndex: Currency]: End of Select... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [DTP#CtrlID: 49 - CtrlName: DTP_750906e8 - CtrlIndex: Attribut Date1]: End of Select... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1441) -> [TXT#CtrlID: 200 - CtrlName: txtCurrencyReadOnly - CtrlIndex: Currency] - TXT Try to create control... +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1454) -> [TXT#CtrlID: 200 - CtrlName: txtCurrencyReadOnly - CtrlIndex: Currency] - TXT Created!! +17:22:18.3388|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TXT#CtrlID: 200 - CtrlName: txtCurrencyReadOnly - CtrlIndex: Currency]: End of Select... +17:22:18.3559|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 202 - CtrlName: LBL_EpKU6h3z-kOELa3QtGty7w - CtrlIndex: ]: End of Select... +17:22:18.3559|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1441) -> [TXT#CtrlID: 201 - CtrlName: TXT_CurrencyRO - CtrlIndex: Currency] - TXT Try to create control... +17:22:18.3559|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1454) -> [TXT#CtrlID: 201 - CtrlName: TXT_CurrencyRO - CtrlIndex: Currency] - TXT Created!! +17:22:18.3559|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TXT#CtrlID: 201 - CtrlName: TXT_CurrencyRO - CtrlIndex: Currency]: End of Select... +17:22:18.3559|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1671) -> We got a DTGRID_COLUMNS definition for [TABLE#CtrlID: 51 - CtrlName: TBCurrency - CtrlIndex: PM-LOGGING] +17:22:18.3951|GridControl|DEBUG >> FillGridTables(GridControl.vb:330) -> No SQL_COMMAND for Column[SpalteCurrency] – skipping. +17:22:18.3951|GridControl|DEBUG >> FillGridTables(GridControl.vb:300) -> Working on SQL for Column[column1]... +17:22:18.3951|GridControl|DEBUG >> FillGridTables(GridControl.vb:315) -> ...has complex patterns!! +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumns(GridControl.vb:565) -> CURRENCY column [SpalteCurrency]: DisplayFormat wird von ConfigureViewColumnsCurrency gesetzt +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumns(GridControl.vb:583) -> Applying currency summary format for column [SpalteCurrency] +17:22:18.4021|GridControl|DEBUG >> ApplyCurrencySummaryFormat(GridControl.vb:395) -> Applying currency summary format for column [SpalteCurrency] with symbol [EUR] +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:634) -> [ConfigureViewColumnsCurrency] riTextEdit erstellt: DisplayFormat=[#,##0.00 EUR], HashCode=[23182124] +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:636) -> [ConfigureViewColumnsCurrency] pGrid.RepositoryItems.Count VOR Schleife=[0] +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:667) -> [ConfigureViewColumnsCurrency] [SpalteCurrency] VOR ColumnEdit: RepositoryItems.Count=[0] +17:22:18.4021|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:672) -> [ConfigureViewColumnsCurrency] [SpalteCurrency] NACH ColumnEdit: RepositoryItems.Count=[0] +17:22:18.4021|GridControl|DEBUG >> ConfigureViewEvents(GridControl.vb:721) -> [ConfigureViewEvents] Column [column1] registered as DYNAMIC_EDITOR column (has placeholders) +17:22:18.4172|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TABLE#CtrlID: 51 - CtrlName: TBCurrency - CtrlIndex: PM-LOGGING]: End of Select... +17:22:18.4746|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut1 Varchar(100) = '{#CTRL#LU_Attr1_dep_Attr2}' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:18.4746|taskFLOW|WARN >> ReplaceControlValues(clsPatterns.vb:333) -> Control [LU_Attr1_dep_Attr2] not found in cache! +17:22:18.4802|taskFLOW|INFO >> ReplaceControlValues(clsPatterns.vb:342) -> Control [LU_Attr1_dep_Attr2] found via fallback. Adding to cache. +17:22:18.4802|taskFLOW|WARN >> ReplaceControlValues(clsPatterns.vb:390) -> ⚠️ LookupControl [LU_Attr1_dep_Attr2] SelectedValues is empty! Using ERROR_REPLACE_VALUE +17:22:18.4802|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut1 Varchar(100) = '0' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:18.4802|GridControl|DEBUG >> ResolveSqlTemplate(GridControl.vb:111) -> [ResolveSqlTemplate] ✓ Cached SQL: Key=[-1847042817] +17:22:18.4802|GridControl|INFO >> _Lambda$__2(GridControl.vb:853) -> [CustomRowCellEdit] 🆕 MISS: Creating editor for [column1] +17:22:18.4802|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:18.4802|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:18.4802|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:18.4802|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:18.4802|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:18.4802|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.4802|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:18.4802|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:18.4802|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:18.4802|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Declare @Attribut1 Varchar(100) = '0' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] and Parameters [] +17:22:18.4802|taskFLOW|DEBUG >> CreateRowSpecificEditor(GridControl.vb:1459) -> [CreateRowSpecificEditor] Retrieved 18 rows for column [column1] +17:22:18.4950|GridControl|DEBUG >> CreateRowSpecificEditor(GridControl.vb:1498) -> [CreateRowSpecificEditor] Created ComboBox with 18 items +17:22:18.4950|GridControl|INFO >> _Lambda$__2(GridControl.vb:868) -> [CustomRowCellEdit] ✓ Cached [column1] editor (Type=[RepositoryItemComboBox]) +17:22:18.4950|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1671) -> We got a DTGRID_COLUMNS definition for [TABLE#CtrlID: 56 - CtrlName: TBKontierung - CtrlIndex: KONTIERUNG] +17:22:25.6600|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TABLE#CtrlID: 56 - CtrlName: TBKontierung - CtrlIndex: KONTIERUNG]: End of Select... +17:22:25.6770|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [LBL#CtrlID: 122 - CtrlName: LBL_cc1524f - CtrlIndex: ]: End of Select... +17:22:25.6770|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1671) -> We got a DTGRID_COLUMNS definition for [TABLE#CtrlID: 121 - CtrlName: TBKontierung read only - CtrlIndex: KONTIERUNG] +17:22:25.6883|GridControl|DEBUG >> FillGridTables(GridControl.vb:330) -> No SQL_COMMAND for Column[column1] – skipping. +17:22:25.6883|GridControl|DEBUG >> FillGridTables(GridControl.vb:330) -> No SQL_COMMAND for Column[column2] – skipping. +17:22:25.6883|GridControl|DEBUG >> FillGridTables(GridControl.vb:330) -> No SQL_COMMAND for Column[col3KontierungReadOnly] – skipping. +17:22:25.6883|GridControl|DEBUG >> ConfigureViewColumns(GridControl.vb:565) -> CURRENCY column [col3KontierungReadOnly]: DisplayFormat wird von ConfigureViewColumnsCurrency gesetzt +17:22:25.6883|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:634) -> [ConfigureViewColumnsCurrency] riTextEdit erstellt: DisplayFormat=[#,##0.00 EUR], HashCode=[21405046] +17:22:25.6883|GridControl|DEBUG >> ConfigureViewColumnsCurrency(GridControl.vb:636) -> [ConfigureViewColumnsCurrency] pGrid.RepositoryItems.Count VOR Schleife=[0] +17:22:25.6883|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1730) -> [TABLE#CtrlID: 121 - CtrlName: TBKontierung read only - CtrlIndex: KONTIERUNG]: End of Select... +17:22:25.7293|frmValidator|DEBUG >> Create_Controls(frmValidator.vb:1758) -> Create_Controls finished! +17:22:25.7293|frmValidator|DEBUG >> frmValidation_Load(frmValidator.vb:673) -> frmValidation_Load finished! +17:22:25.8314|taskFLOW|DEBUG >> Load_Profil_from_Grid(frmMain.vb:2107) -> Overlay closed in Load_Profil_from_Grid +17:22:25.8859|frmValidator|DEBUG >> ShowOverlaySafe(frmValidator.vb:180) -> [Overlay] Geöffnet (RefCount: 0 → 1) +17:22:25.9285|frmValidator|DEBUG >> activate_controls(frmValidator.vb:4688) -> Sub activate_controls - status = False +17:22:26.1456|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut1 Varchar(100) = '{#CTRL#LU_Attr1_dep_Attr2}' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:26.1456|taskFLOW|DEBUG >> ReplaceControlValues(clsPatterns.vb:303) -> Control cache initialized with 22 controls +17:22:26.1456|taskFLOW|WARN >> ReplaceControlValues(clsPatterns.vb:333) -> Control [LU_Attr1_dep_Attr2] not found in cache! +17:22:26.1456|taskFLOW|INFO >> ReplaceControlValues(clsPatterns.vb:342) -> Control [LU_Attr1_dep_Attr2] found via fallback. Adding to cache. +17:22:26.1456|taskFLOW|WARN >> ReplaceControlValues(clsPatterns.vb:390) -> ⚠️ LookupControl [LU_Attr1_dep_Attr2] SelectedValues is empty! Using ERROR_REPLACE_VALUE +17:22:26.1456|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut1 Varchar(100) = '0' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:26.1456|GridControl|INFO >> _Lambda$__2(GridControl.vb:846) -> [CustomRowCellEdit] ✓ CACHE HIT: [column1|-1847042817] +17:22:26.2944|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4103) -> In Load_Next_Document +17:22:26.2944|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4114) -> First Document +17:22:26.2944|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4126) -> CURRENT_JUMP_DOC_GUID: 21231' +17:22:26.2944|frmValidator|INFO >> Load_Next_Document(frmValidator.vb:4139) -> LoadNextDocument - Dokument-GUID: '21231' +17:22:26.2944|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:26.2944|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:26.2944|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:26.2944|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:26.2944|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT dbo.FNPM_GET_FILEPATH(21231,0) AS PATH0, dbo.FNPM_GET_FILEPATH(21231,1) AS PATH1] and Parameters [] +17:22:26.2944|frmValidator|DEBUG >> GetDocPathWindows(frmValidator.vb:3962) -> First Checking file [\\172.24.12.15\windream\WISAG\3031_5701002069.pdf] exists?... +17:22:26.5737|DocumentPathHandler|DEBUG >> TryMapNetworkDrive(DocumentPathHandler.vb:221) -> 📂 WMSUFFIX erkannt - starte Laufwerks-Mapping +17:22:26.5737|Map_Drive|DEBUG >> MapDriveAutomatic(Map_Drive.vb:537) -> 🔍 Suche automatisch freien Laufwerksbuchstaben... +17:22:26.5737|Map_Drive|DEBUG >> MapDriveAutomatic(Map_Drive.vb:538) -> Blacklist: [] +17:22:26.5737|Map_Drive|DEBUG >> MapDriveAutomatic(Map_Drive.vb:539) -> Netzwerkpfad: [\\172.24.12.15\windream] +17:22:26.5737|Map_Drive|INFO >> MapNetworkDrive(Map_Drive.vb:166) -> Kein Laufwerksbuchstabe angegeben - suche nächsten freien Buchstaben... +17:22:26.5737|Map_Drive|DEBUG >> GetNextFreeDriveLetter(Map_Drive.vb:85) -> Nächster freier Laufwerksbuchstabe gefunden: Z: +17:22:26.5737|Map_Drive|INFO >> MapNetworkDrive(Map_Drive.vb:174) -> Automatisch gewählter Laufwerksbuchstabe: Z: +17:22:26.5737|Map_Drive|DEBUG >> MapNetworkDrive(Map_Drive.vb:205) -> ✓ Laufwerk Z: existiert noch nicht - kein Disconnect nötig +17:22:26.5737|Map_Drive|DEBUG >> DisconnectNetworkDrive(Map_Drive.vb:342) -> ℹ️ Laufwerk Z: existiert nicht - Disconnect übersprungen +17:22:26.7306|Map_Drive|DEBUG >> MapNetworkDriveInternal(Map_Drive.vb:251) -> ✓ Laufwerk Z: erfolgreich gemappt +17:22:26.7306|Map_Drive|INFO >> MapNetworkDrive(Map_Drive.vb:211) -> ✓ Netzlaufwerk Z: erfolgreich gemappt zu \\172.24.12.15\windream +17:22:26.7306|Map_Drive|DEBUG >> MapDriveAutomatic(Map_Drive.vb:545) -> ✓ Automatisch gewähltes Laufwerk: Z: +17:22:26.7306|DocumentPathHandler|DEBUG >> TryMapNetworkDrive(DocumentPathHandler.vb:249) -> 📄 Original: [\\172.24.12.15\windream\WISAG\3031_5701002069.pdf] +17:22:26.7306|DocumentPathHandler|DEBUG >> TryMapNetworkDrive(DocumentPathHandler.vb:250) -> 📄 Gemappt: [Z:\WISAG\3031_5701002069.pdf] +17:22:26.7306|DocumentPathHandler|INFO >> ProcessDocumentPath(DocumentPathHandler.vb:137) -> ✓ Laufwerk gemappt: Z: +17:22:26.7306|DocumentPathHandler|DEBUG >> ProcessDocumentPath(DocumentPathHandler.vb:159) -> 📂 Starte Temp-Kopie für: [Z:\WISAG\3031_5701002069.pdf] +17:22:26.7306|DocumentPathHandler|DEBUG >> EnsureTempFolder(DocumentPathHandler.vb:21) -> 📂 Überprüfe Temp-Ordner: [] +17:22:26.7306|DocumentPathHandler|DEBUG >> EnsureTempFolder(DocumentPathHandler.vb:23) -> ⚠️ Temp-Ordner nicht konfiguriert, verwende TEMP_DOCUMENT_FOLDER aus AppSettings +17:22:26.7306|DocumentPathHandler|INFO >> CopyToTempFolder(DocumentPathHandler.vb:279) -> [TempCopy] Effektiver Temp-Ordner: [C:\Users\SchreiberM\AppData\Local\Temp\Documents] +17:22:26.7306|DocumentPathHandler|DEBUG >> CopyToTempFolder(DocumentPathHandler.vb:280) -> [TempCopy] InputTemp=[], GlobalTemp=[C:\Users\SchreiberM\AppData\Local\Temp\Documents] +17:22:26.7306|DocumentPathHandler|DEBUG >> CopyToTempFolder(DocumentPathHandler.vb:290) -> 📄 Kopiere nach Temp: +17:22:26.7306|DocumentPathHandler|DEBUG >> CopyToTempFolder(DocumentPathHandler.vb:291) -> Von: [Z:\WISAG\3031_5701002069.pdf] +17:22:26.7306|DocumentPathHandler|DEBUG >> CopyToTempFolder(DocumentPathHandler.vb:292) -> Nach: [C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf] +17:22:26.7862|DocumentPathHandler|INFO >> ProcessDocumentPath(DocumentPathHandler.vb:165) -> ✓ Datei in Temp kopiert: [3031_5701002069_20260623_172226_735.pdf] +17:22:26.7979|Map_Drive|DEBUG >> DisconnectNetworkDrive(Map_Drive.vb:350) -> ✓ Netzlaufwerk Z: erfolgreich getrennt +17:22:26.7979|DocumentPathHandler|INFO >> UnmapDrive(DocumentPathHandler.vb:316) -> 🔌 Laufwerk Z: getrennt +17:22:26.7979|frmValidator|INFO >> GetDocPathWindows(frmValidator.vb:4007) -> ✓ Dokument verarbeitet: [3031_5701002069_20260623_172226_735.pdf] +17:22:26.7979|frmValidator|INFO >> GetDocPathWindows(frmValidator.vb:4027) -> GetWMDocPathWindows CURRENT_DOC_PATH: \\172.24.12.15\windream\WISAG\3031_5701002069.pdf +17:22:26.7979|frmValidator|DEBUG >> Load_IDB_DOC_DATA(frmValidator.vb:4063) -> Load_IDB_DOC_DATA SQL: select T.* from IDB.dbo.VWIDB_DOC_DATA_DE T, TBPM_PROFILE_FILES T1 WHERE T.IDB_OBJ_ID = T1.DOC_ID AND T1.GUID = 21231 +17:22:26.7979|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:26.7979|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:26.7979|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:26.7979|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:26.7979|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [select T.* from IDB.dbo.VWIDB_DOC_DATA_DE T, TBPM_PROFILE_FILES T1 WHERE T.IDB_OBJ_ID = T1.DOC_ID AND T1.GUID = 21231] and Parameters [] +17:22:26.8076|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4166) -> Got one IDB DocData Result +17:22:26.8076|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:26.8076|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:26.8076|MSSQLServer|DEBUG >> ExecuteNonQueryWithConnectionObject(MSSQLServer.vb:491) -> ExecuteNonQueryWithConnectionObject: Running Command [EXEC PRTF_PROFILE_FILES_WORK 12002,6,1,'InWork'] and Parameters [] +17:22:26.8076|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4199) -> AllDocInfo created... +17:22:26.8076|Loader|DEBUG >> Load(Loader.vb:55) -> DRL Loader - Loading Document Load_FromWindream +17:22:26.8076|Loader|DEBUG >> Load_FromDisk(Loader.vb:140) -> Loading file [C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf] +17:22:26.8305|Loader|DEBUG >> Load_FromDisk(Loader.vb:144) -> Loaded file [C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf] successfully. +17:22:26.8305|Cache|DEBUG >> Add(Cache.vb:50) -> Adding document [12002]. +17:22:26.8305|frmValidator|INFO >> LoadDocument_DDViewer(frmValidator.vb:4665) -> LoadDocument_DDViewer - Current_Document.FullPath: C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf +17:22:26.8305|DocumentViewer|INFO >> LoadFile_FromPath(DocumentViewer.vb:187) -> Loading file [C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf] from Filesystem +17:22:26.8305|DocumentViewer|DEBUG >> SetViewerMode(DocumentViewer.vb:532) -> Viewermode set to [GDPicture] based on extension [.pdf] +17:22:26.8305|DocumentViewer|DEBUG >> DoLoadFile(DocumentViewer.vb:665) -> Starting DoLoadFile with path [C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf] and view override [] +17:22:26.8305|DocumentViewer|DEBUG >> LoadGdPictureFile(DocumentViewer.vb:737) -> Loading GdPicture: C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf +17:22:27.5188|DocumentViewer|INFO >> UpdateMainUi(DocumentViewer.vb:944) -> Updating main UI for viewer mode [GDPicture] +17:22:27.6182|frmValidator|DEBUG >> Load_Next_Document(frmValidator.vb:4250) -> Kein PROFIL_CURRENCY_ATTRIBUTE konfiguriert → EUR +17:22:27.6182|frmValidator|INFO >> Load_Next_Document(frmValidator.vb:4254) -> [FINAL] DocCurrency = [EUR] +17:22:27.6315|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_9407c06c - LOAD IDXVALUES: True +17:22:27.6315|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_40dee67 - LOAD IDXVALUES: True +17:22:27.6315|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_17cbc463 - LOAD IDXVALUES: True +17:22:27.6315|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut String 2 - CONTROLNAME: LUAttrStr2 - LOAD IDXVALUES: True +17:22:27.6315|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut String 2, IDBTyp: 1, FromIDB: False +17:22:27.6315|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut String 2] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6315|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut String 2] MappedName=[Attribut String 2] Value=[Row 3] +17:22:27.6315|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5819) -> [FillIndexValues BUGFIX] Lookup [LUAttrStr2]: DataSource-Backup erstellt +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2189) -> onLookUpselectedValue +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2192) -> onLookUpselectedValue suppressed (global guard active) +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5831) -> [FillIndexValues BUGFIX] Lookup [LUAttrStr2]: SelectedValues auf leere Liste zurückgesetzt +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2189) -> onLookUpselectedValue +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2192) -> onLookUpselectedValue suppressed (global guard active) +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5839) -> [FillIndexValues BUGFIX] Lookup [LUAttrStr2]: SelectedValues FINAL gesetzt = [Row 3] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: @@DISPLAY_ONLY - CONTROLNAME: TXTDisplayOnly - LOAD IDXVALUES: False +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5126) -> oControl TXTDisplayOnly: Indexwert soll nicht geladen werden. +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut String1 - CONTROLNAME: LU_Attr1_Dep_Attr2 - LOAD IDXVALUES: True +17:22:27.6371|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut String1, IDBTyp: 1, FromIDB: False +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut String1] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut String1] MappedName=[Attribut String1] Value=[1000002] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5819) -> [FillIndexValues BUGFIX] Lookup [LU_Attr1_Dep_Attr2]: DataSource-Backup erstellt +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2189) -> onLookUpselectedValue +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2192) -> onLookUpselectedValue suppressed (global guard active) +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5831) -> [FillIndexValues BUGFIX] Lookup [LU_Attr1_Dep_Attr2]: SelectedValues auf leere Liste zurückgesetzt +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2189) -> onLookUpselectedValue +17:22:27.6371|frmValidator|DEBUG >> onLookUpselectedValue(frmValidator.vb:2192) -> onLookUpselectedValue suppressed (global guard active) +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5839) -> [FillIndexValues BUGFIX] Lookup [LU_Attr1_Dep_Attr2]: SelectedValues FINAL gesetzt = [1000002] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_3de45179 - LOAD IDXVALUES: True +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: BTN_1b70920b - LOAD IDXVALUES: True +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut String1 - CONTROLNAME: txtAttributString1 - LOAD IDXVALUES: True +17:22:27.6371|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut String1, IDBTyp: 1, FromIDB: False +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut String1] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut String1] MappedName=[Attribut String1] Value=[1000002] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5159) -> Value from Source: [1000002] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut Date1 - CONTROLNAME: DTP_e3b36d2e - LOAD IDXVALUES: True +17:22:27.6371|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut Date1, IDBTyp: 0, FromIDB: False +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut Date1] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6371|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut Date1] MappedName=[Attribut Date1] Value=[10.06.2031 00:00:00] +17:22:27.6371|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5872) -> DATE konnte umgewandelt werden +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_81e62ba3 - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_da93a37 - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut Bit1 - CONTROLNAME: CHK_Bit1 - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5664) -> Loading checkbox... +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5678) -> Loading Bool-Value from Source... +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5684) -> ..Now GetVariableValue(Attribut Bit1)... +17:22:27.6522|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut Bit1, IDBTyp: 7, FromIDB: False +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut Bit1] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut Bit1] MappedName=[Attribut Bit1] Value=[] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5704) -> oValueFromSource: +17:22:27.6522|frmValidator|INFO >> FillIndexValues(frmValidator.vb:5706) -> >> Versuch, default Value zu laden +17:22:27.6522|frmValidator|INFO >> FillIndexValues(frmValidator.vb:5718) -> >> defaultValue war leer +17:22:27.6522|frmValidator|DEBUG >> onCheckBox_CheckedChange(frmValidator.vb:2513) -> onCheckBox_CheckedChange +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Currency - CONTROLNAME: txtCurrencyFloat - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Currency, IDBTyp: 1, FromIDB: False +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Currency] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Currency] MappedName=[Currency] Value=[120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5159) -> Value from Source: [120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Attribut Date1 - CONTROLNAME: DTP_750906e8 - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Attribut Date1, IDBTyp: 0, FromIDB: False +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Attribut Date1] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Attribut Date1] MappedName=[Attribut Date1] Value=[10.06.2031 00:00:00] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5872) -> DATE konnte umgewandelt werden +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Currency - CONTROLNAME: txtCurrencyReadOnly - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Currency, IDBTyp: 1, FromIDB: False +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Currency] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Currency] MappedName=[Currency] Value=[120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5159) -> Value from Source: [120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_EpKU6h3z-kOELa3QtGty7w - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: Currency - CONTROLNAME: TXT_CurrencyRO - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> GetVariableValuefromSource(frmValidator.vb:4991) -> GetVariableValuefromSource - IDBCase - IndexName: Currency, IDBTyp: 1, FromIDB: False +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:161) -> IDBData - GetVariableValue - Attribute: [Currency] - IsSingleAttribute: [True] - FromIDB: [False] +17:22:27.6522|taskFLOW|DEBUG >> GetVariableValue(ClassIDBData.vb:168) -> IDBData - GetVariableValue - Retrieved from cache: Attribute=[Currency] MappedName=[Currency] Value=[120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5159) -> Value from Source: [120,58] +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: PM-LOGGING - CONTROLNAME: TBCurrency - LOAD IDXVALUES: True +17:22:27.6522|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5302) -> Grid [TBCurrency]: 2 Spalten aus Cache geladen +17:22:35.2511|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5338) -> [FillIndexValues] GridControl [TBCurrency] wird über ClassGridDataLoader befüllt... +17:22:35.2511|ClassGridDataLoader|DEBUG >> FillGridData(ClassGridDataLoader.vb:37) -> FillGridData für Control GUID=51, Name=TBCurrency, Type=TABLE +17:22:35.2844|ClassGridDataLoader|ERROR >> GetFilteredColumnDefinitions(ClassGridDataLoader.vb:390) -> Fehler in GetFilteredColumnDefinitions: Spalte 'SORT_ORDER' gehört nicht zu Tabelle . +17:22:35.2844|ClassGridDataLoader|WARN >> FillGridData(ClassGridDataLoader.vb:49) -> Keine Spalten-Definitionen für Grid GUID=51 +17:22:40.0659|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5356) -> ✓ GridControl [TBCurrency] erfolgreich über ClassGridDataLoader befüllt +17:22:40.0659|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: - CONTROLNAME: LBL_cc1524f - LOAD IDXVALUES: True +17:22:40.0659|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5109) -> INDEX: KONTIERUNG - CONTROLNAME: TBKontierung read only - LOAD IDXVALUES: True +17:22:40.0659|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5302) -> Grid [TBKontierung read only]: 3 Spalten aus Cache geladen +17:22:40.9451|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5338) -> [FillIndexValues] GridControl [TBKontierung read only] wird über ClassGridDataLoader befüllt... +17:22:40.9486|ClassGridDataLoader|DEBUG >> FillGridData(ClassGridDataLoader.vb:37) -> FillGridData für Control GUID=121, Name=TBKontierung read only, Type=TABLE +17:22:40.9486|ClassGridDataLoader|ERROR >> GetFilteredColumnDefinitions(ClassGridDataLoader.vb:390) -> Fehler in GetFilteredColumnDefinitions: Spalte 'SORT_ORDER' gehört nicht zu Tabelle . +17:22:40.9486|ClassGridDataLoader|WARN >> FillGridData(ClassGridDataLoader.vb:49) -> Keine Spalten-Definitionen für Grid GUID=121 +17:22:41.9303|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5356) -> ✓ GridControl [TBKontierung read only] erfolgreich über ClassGridDataLoader befüllt +17:22:41.9624|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:5950) -> ⚠️ FillIndexValues - SQL-Command for Grid-Dropdown-Column contains #CTRL# placeholder, skipping dropdown creation for CONTROL-ID [56] - Column [Summe] +17:22:41.9624|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [IDB] with Connection Id [IDB] +17:22:41.9646|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=IDB;User ID=sa;Password=XXXXX +17:22:41.9646|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:41.9646|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [select Attribut, TERM_VALUE from VWIDB_VALUE_TEXT WHERE LANG_CODE IN ('de-DE','UNQID') AND IDB_OBJ_ID = 12002 AND Attribut in ('PM_Info1','PM_Info2') ORDER BY Attribut] and Parameters [] +17:22:41.9646|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:6015) -> No PM_Info-Configuration!! +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:971) -> ======================================== +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:972) -> === Load_Additional_Searches START === +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:973) -> Parameter: Preload=False +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:974) -> Current_Document: Id=12002, Path=C:\Users\SchreiberM\AppData\Local\Temp\Documents\3031_5701002069_20260623_172226_735.pdf +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:975) -> ======================================== +17:22:41.9646|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1006) -> --- Ergebnisse werden geprüft (DATA/DOC) --- +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:41.9646|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:41.9646|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:41.9646|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:41.9646|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:41.9646|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:41.9646|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:41.9646|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Select 'Test' ] and Parameters [] +17:22:41.9646|frmValidator|INFO >> Load_Additional_Searches(frmValidator.vb:1026) -> ✓ SQL-Search 'Mein TabTitle': 1 Ergebnisse gefunden +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:41.9646|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:41.9803|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:41.9803|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:41.9803|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:41.9803|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:41.9803|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:41.9803|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:41.9803|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Select TOP 125 T.DocID,T.FULL_FILENAME,T.Doctype from [VWCW_DOC_SEARCH] T ] and Parameters [] +17:22:42.0096|frmValidator|INFO >> Load_Additional_Searches(frmValidator.vb:1052) -> ✓ Doc-Search 'Eine DocSuche': 125 Dokumente gefunden +17:22:42.0116|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1072) -> Zusätzliche Doc-Results gecached: 125 Rows +17:22:42.0116|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1077) -> Ergebnisprüfung abgeschlossen: AdditionalDataResultsExist=True, AdditionalDocResultsExist=True +17:22:42.0116|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1079) -> rbnPgGroupAttmt.Visible gesetzt auf: True | Stack: + bei taskFLOW.frmValidator.FillIndexValues(Boolean first, String SingleAttribute) in E:\SchreiberM\Visual Studio\GIT\1_smartUP\TaskFlow\app\TaskFlow\frmValidator.vb:Zeile 6037. +17:22:42.0116|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1114) -> --- NORMAL-MODUS aktiviert (nur vorbereiten, NICHT Show) --- +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:86) -> === TabPreload START === +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:87) -> Parameters: TabCountSQL=1, TabCountDoc=1, DTSQL.Rows=1, DTDOC.Rows=1 +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:106) -> Ausführung auf UI-Thread +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:120) -> 🚫 Tab-Events deaktiviert +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:126) -> ✓ _DTDATASearches und _DTDocSearches zugewiesen: SQL=1, Doc=1 +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:146) -> Panel1Collapsed (SQL)=False, Panel2Collapsed (Doc)=False +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:154) -> ✓ DocumentViewer1 sichtbar gemacht (Doc-Searches vorhanden) +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:165) -> Konfiguriere SQL-Tabs: 1 Definitionen +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=1) +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=2) +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=3) +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=4) +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=-1) +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:171) -> Alle 5 SQL-Tabs auf PageVisible=False gesetzt +17:22:42.0116|taskFLOW|DEBUG >> XtraTabControlSQL_SelectedPageChanged(frmValidatorSearch.vb:330) -> 🚫 XtraTabControlSQL_SelectedPageChanged unterdrückt (SelectedTabPageIndex=0) +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:182) -> SQL-Tab 0: Text='Mein TabTitle', PageVisible=True +17:22:42.0116|taskFLOW|INFO >> TabPreload(frmValidatorSearch.vb:189) -> ✓ 1 SQL-Tabs konfiguriert +17:22:42.0116|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:199) -> Konfiguriere Doc-Tabs: 1 Definitionen +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=1) +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=2) +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=3) +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=4) +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=-1) +17:22:42.0278|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:205) -> Alle 5 Doc-Tabs auf PageVisible=False gesetzt +17:22:42.0278|taskFLOW|DEBUG >> XtraTabControlDocs_SelectedPageChanged_1(frmValidatorSearch.vb:385) -> 🚫 XtraTabControlDocs_SelectedPageChanged unterdrückt (SelectedTabPageIndex=0) +17:22:42.0278|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:216) -> Doc-Tab 0: Text='Eine DocSuche', PageVisible=True +17:22:42.0278|taskFLOW|INFO >> TabPreload(frmValidatorSearch.vb:223) -> ✓ 1 Doc-Tabs konfiguriert +17:22:42.0278|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:236) -> ✓ Tab-Events reaktiviert +17:22:42.0278|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:251) -> Setze SQL SelectedTabPageIndex manuell auf 0 +17:22:42.0278|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:266) -> SQL-Tab 0: erzwungener Initial-Refresh +17:22:42.0278|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.0278|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.0278|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.0278|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.0278|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.0278|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0278|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.0278|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.0278|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0278|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Select 'Test' ] and Parameters [] +17:22:42.0506|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:286) -> Setze Doc SelectedTabPageIndex manuell auf 0 +17:22:42.0506|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:301) -> Doc-Tab 0: erzwungener Initial-Refresh +17:22:42.0506|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.0506|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.0506|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.0506|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.0506|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.0506|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0506|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.0506|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.0506|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0506|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Select TOP 125 T.DocID,T.FULL_FILENAME,T.Doctype from [VWCW_DOC_SEARCH] T ] and Parameters [] +17:22:42.0905|taskFLOW|DEBUG >> TabPreload(frmValidatorSearch.vb:310) -> === TabPreload END === +17:22:42.0905|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1123) -> Load_Additional_Searches: Vorbereitung abgeschlossen (Preload=False), Formular bleibt geschlossen. +17:22:42.0905|frmValidator|DEBUG >> Load_Additional_Searches(frmValidator.vb:1129) -> === Load_Additional_Searches END === +17:22:42.0905|frmValidator|DEBUG >> FillIndexValues(frmValidator.vb:6038) -> [FillIndexValues] Nach Load_Additional_Searches: rbnPgGroupAttmt.Visible=True +17:22:42.0905|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut1 Varchar(100) = '{#CTRL#LU_Attr1_dep_Attr2}' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.0905|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut1 Varchar(100) = '1000002' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.0905|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.0905|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.0905|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0905|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.0905|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.0905|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0905|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Declare @Attribut1 Varchar(100) = '1000002' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] and Parameters [] +17:22:42.0905|ClassControlCreator|DEBUG >> GridTables_HandleControlValueChange(ClassControlCreator.vb:917) -> Force-setting Editor for all Gridcells.. +17:22:42.0905|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [SELECT EMAIL, GUID, USERNAME,PRENAME,NAME,LANGUAGE,USERID_FK_INT_ECM,DATE_FORMAT,ADDED_WHO,ADDED_WHEN FROm TBDD_USER +WHERE USERID_FK_INT_ECM > {#CTRL#txtAttributString1} +] +17:22:42.0905|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [SELECT EMAIL, GUID, USERNAME,PRENAME,NAME,LANGUAGE,USERID_FK_INT_ECM,DATE_FORMAT,ADDED_WHO,ADDED_WHEN FROm TBDD_USER +WHERE USERID_FK_INT_ECM > 1000002 +] +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.0905|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.0905|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.0905|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.0905|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.0905|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.0905|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.0905|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.1055|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT EMAIL, GUID, USERNAME,PRENAME,NAME,LANGUAGE,USERID_FK_INT_ECM,DATE_FORMAT,ADDED_WHO,ADDED_WHEN FROm TBDD_USER +WHERE USERID_FK_INT_ECM > 1000002 +] and Parameters [] +17:22:42.1055|ClassControlCreator|DEBUG >> GridTables_HandleControlValueChange(ClassControlCreator.vb:917) -> Force-setting Editor for all Gridcells.. +17:22:42.1055|ClassControlCreator|DEBUG >> GridTables_HandleControlValueChange(ClassControlCreator.vb:908) -> GridTables_HandleControlValueChange -> Skipping column [Col7] (has #TBCOL# placeholders, will be resolved per row) +17:22:42.1261|frmValidator|DEBUG >> UpdateGridCurrencyFormats(frmValidator.vb:4466) -> [UpdateGridCurrencyFormats] DocCurrency is EUR or empty, cache updated but skipping format rebuild. +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1167) -> in LoadSQLData for ControlID [50]... +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1180) -> LoadSQLData for Control [LUAttrStr2] with GUID [50] ... +17:22:42.1261|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.1261|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.1261|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.1261|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.1261|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [select 'Kreditor 1' union +select 'Kreditor 2' union +select 'Kreditor 3' union +select 'Kreditor 4' union +select 'Kreditor 5' + + +] and Parameters [] +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1223) -> [LoadSQLData DEBUG] Lookup [LUAttrStr2] konfiguriert: +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1224) -> DataSource-Typ: System.Data.DataTable +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1225) -> ValueMember: [Column1] +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1226) -> DisplayMember: [Column1] +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1233) -> [LoadSQLData BUGFIX] Alte SelectedValues gesichert: [Row 3] +17:22:42.1261|frmValidator|WARN >> LoadSQLData(frmValidator.vb:1264) -> ⚠️ [LoadSQLData BUGFIX] Wert [Row 3] existiert NICHT im neuen DataSource ✗ +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1167) -> in LoadSQLData for ControlID [119]... +17:22:42.1261|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1180) -> LoadSQLData for Control [TXTDisplayOnly] with GUID [119] ... +17:22:42.1261|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [SELECT CASE '{#CTRL#LUAttrStr2}' +WHEN 'Kreditor 1' THEN 'Ort 1' +WHEN 'Kreditor 2' THEN 'Ort 2' +WHEN 'Kreditor 3' THEN 'Ort 3' +WHEN 'Kreditor 4' THEN 'Ort 4' +WHEN 'Kreditor 5' THEN 'Ort 5' END +] +17:22:42.1261|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [SELECT CASE 'Row 3' +WHEN 'Kreditor 1' THEN 'Ort 1' +WHEN 'Kreditor 2' THEN 'Ort 2' +WHEN 'Kreditor 3' THEN 'Ort 3' +WHEN 'Kreditor 4' THEN 'Ort 4' +WHEN 'Kreditor 5' THEN 'Ort 5' END +] +17:22:42.1261|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.1261|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.1362|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.1362|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.1362|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.1362|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.1362|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.1362|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.1362|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.1362|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT CASE 'Row 3' +WHEN 'Kreditor 1' THEN 'Ort 1' +WHEN 'Kreditor 2' THEN 'Ort 2' +WHEN 'Kreditor 3' THEN 'Ort 3' +WHEN 'Kreditor 4' THEN 'Ort 4' +WHEN 'Kreditor 5' THEN 'Ort 5' END +] and Parameters [] +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1167) -> in LoadSQLData for ControlID [134]... +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1180) -> LoadSQLData for Control [LU_Attr1_Dep_Attr2] with GUID [134] ... +17:22:42.1362|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut2 Varchar(100) = '{#CTRL#LUAttrStr2}' +If @Attribut2 = 'Kreditor 1' + select 'Bankverbindung1 Kred 1' union +select 'Bankverbindung2 Kred 1' +Else + select 'Bankverbindung1 Kred Else' +union +select 'Bankverbindung2 Kred Else' + +] +17:22:42.1362|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut2 Varchar(100) = 'Row 3' +If @Attribut2 = 'Kreditor 1' + select 'Bankverbindung1 Kred 1' union +select 'Bankverbindung2 Kred 1' +Else + select 'Bankverbindung1 Kred Else' +union +select 'Bankverbindung2 Kred Else' + +] +17:22:42.1362|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.1362|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.1362|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.1362|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.1362|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Declare @Attribut2 Varchar(100) = 'Row 3' +If @Attribut2 = 'Kreditor 1' + select 'Bankverbindung1 Kred 1' union +select 'Bankverbindung2 Kred 1' +Else + select 'Bankverbindung1 Kred Else' +union +select 'Bankverbindung2 Kred Else' + +] and Parameters [] +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1223) -> [LoadSQLData DEBUG] Lookup [LU_Attr1_Dep_Attr2] konfiguriert: +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1224) -> DataSource-Typ: System.Data.DataTable +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1225) -> ValueMember: [] +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1226) -> DisplayMember: [] +17:22:42.1362|frmValidator|DEBUG >> LoadSQLData(frmValidator.vb:1233) -> [LoadSQLData BUGFIX] Alte SelectedValues gesichert: [1000002] +17:22:42.1362|frmValidator|WARN >> LoadSQLData(frmValidator.vb:1264) -> ⚠️ [LoadSQLData BUGFIX] Wert [1000002] existiert NICHT im neuen DataSource ✗ +17:22:42.1627|frmValidator|ERROR >> Load_Next_Document(frmValidator.vb:4423) -> System.InvalidCastException: Das Objekt des Typs "System.Data.DataRow" kann nicht in Typ "ControlMetadata" umgewandelt werden. +17:22:42.1735|frmValidator|INFO >> Load_Next_Document(frmValidator.vb:4427) -> unexpected error in Load_Next_Document: Das Objekt des Typs "System.Data.DataRow" kann nicht in Typ "ControlMetadata" umgewandelt werden. +17:22:42.1957|taskFLOW|DEBUG >> frmError_Activated(frmError.vb:70) -> [frmError] Dialog aktiviert +17:22:42.2726|taskFLOW|DEBUG >> frmError_Shown(frmError.vb:66) -> [frmError] Dialog angezeigt - Enabled: True +17:22:42.3658|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut1 Varchar(100) = '{#CTRL#LU_Attr1_dep_Attr2}' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.3658|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut1 Varchar(100) = '1000002' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.3658|GridControl|DEBUG >> ResolveSqlTemplate(GridControl.vb:111) -> [ResolveSqlTemplate] ✓ Cached SQL: Key=[-445029346] +17:22:42.3658|GridControl|INFO >> _Lambda$__2(GridControl.vb:853) -> [CustomRowCellEdit] 🆕 MISS: Creating editor for [column1] +17:22:42.3658|DatabaseWithFallback|DEBUG >> GetDatatable(DatabaseWithFallback.vb:193) -> Client is empty, falling back to direct database access. +17:22:42.3658|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:341) -> Fetching data from database [ECM] with Connection Id [ECM] +17:22:42.3658|DatabaseWithFallback|DEBUG >> GetDatatableFromDatabase(DatabaseWithFallback.vb:349) -> Retrieving Connection String from Connection Id [1] +17:22:42.3658|MSSQLServer|DEBUG >> Get_ConnectionStringforID(MSSQLServer.vb:173) -> Getting ConnectionString for ConnectionId [1] +17:22:42.3658|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX; +17:22:42.3705|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.3705|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_CONNECTION WHERE GUID = 1] and Parameters [] +17:22:42.3705|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX +17:22:42.3705|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction] +17:22:42.3705|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [Declare @Attribut1 Varchar(100) = '1000002' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] and Parameters [] +17:22:42.3705|taskFLOW|DEBUG >> CreateRowSpecificEditor(GridControl.vb:1459) -> [CreateRowSpecificEditor] Retrieved 18 rows for column [column1] +17:22:42.3705|GridControl|DEBUG >> CreateRowSpecificEditor(GridControl.vb:1498) -> [CreateRowSpecificEditor] Created ComboBox with 18 items +17:22:42.3705|GridControl|INFO >> _Lambda$__2(GridControl.vb:868) -> [CustomRowCellEdit] ✓ Cached [column1] editor (Type=[RepositoryItemComboBox]) +17:22:42.3868|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:164) -> input BEFORE replacing: [Declare @Attribut1 Varchar(100) = '{#CTRL#LU_Attr1_dep_Attr2}' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.3868|taskFLOW|DEBUG >> ReplaceAllValues(clsPatterns.vb:180) -> input AFTER replacing: [Declare @Attribut1 Varchar(100) = '1000002' +If @Attribut1 = 'TBDD_USER' + select USERNAME FROM TBDD_USER ORDER BY USERNAME +Else + select NAME FROM TBDD_USER ORDER BY NAME + +] +17:22:42.3868|GridControl|INFO >> _Lambda$__2(GridControl.vb:846) -> [CustomRowCellEdit] ✓ CACHE HIT: [column1|-445029346] +17:22:45.4034|taskFLOW|DEBUG >> frmError_Activated(frmError.vb:70) -> [frmError] Dialog aktiviert +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:13) -> [frmError] OK_Button_Click aufgerufen von: +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> frmError.OK_Button_Click (Zeile 12) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.OnClick (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Button.OnClick (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Button.OnMouseUp (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.WmMouseUp (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ButtonBase.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Button.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ControlNativeWindow.OnMessage (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ControlNativeWindow.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> NativeWindow.DebuggableCallback (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> UnsafeNativeMethods.DispatchMessageW (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ThreadContext.RunMessageLoopInner (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ThreadContext.RunMessageLoop (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Application.RunDialog (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Form.ShowDialog (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Form.ShowDialog (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> frmValidator.Load_Next_Document (Zeile 4429) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> frmValidator.frmValidation_Shown (Zeile 6140) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Form.OnShown (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> XtraForm.OnShown (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Form.CallShownEvent (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.InvokeMarshaledCallbackDo (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.InvokeMarshaledCallbackHelper (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ExecutionContext.RunInternal (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ExecutionContext.Run (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ExecutionContext.Run (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.InvokeMarshaledCallback (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.InvokeMarshaledCallbacks (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Control.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ScrollableControl.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Form.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> DForm.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> XtraForm.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> RibbonForm.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ControlNativeWindow.OnMessage (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ControlNativeWindow.WndProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> NativeWindow.DebuggableCallback (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> UnsafeNativeMethods.DefSubclassProc (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> Win32Subclasser.SubClassProcInner (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> UnsafeNativeMethods.DispatchMessageW (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ThreadContext.RunMessageLoopInner (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> ThreadContext.RunMessageLoop (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> WindowsFormsApplicationBase.OnRun (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> WindowsFormsApplicationBase.DoApplicationModel (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> WindowsFormsApplicationBase.Run (Zeile 0) +17:22:45.5478|taskFLOW|DEBUG >> OK_Button_Click(frmError.vb:15) -> MyApplication.Main (Zeile 83) +17:22:45.5478|taskFLOW|DEBUG >> CloseDialog(frmError.vb:51) -> [frmError] CloseDialog: Flag gesetzt, starte verzögerten Close +17:22:45.5590|taskFLOW|DEBUG >> frmError_FormClosing(frmError.vb:75) -> [frmError] FormClosing: Close bereits aktiv, erlauben +17:22:45.5590|taskFLOW|DEBUG >> _Lambda$__25-0(frmError.vb:59) -> [frmError] Dialog geschlossen via BeginInvoke +17:22:45.5849|frmValidator|DEBUG >> CloseOverlaySafe(frmValidator.vb:200) -> [Overlay] RefCount: 1 → 0 +17:22:45.5849|frmValidator|DEBUG >> CloseOverlaySafe(frmValidator.vb:206) -> [Overlay] ✓ Geschlossen +17:22:45.5925|frmValidator|DEBUG >> frmValidation_Shown(frmValidator.vb:6221) -> frmValidation_Shown finished! +17:22:45.5925|frmValidator|DEBUG >> frmValidation_Shown(frmValidator.vb:6228) -> ℹ Overlay war bereits geschlossen