MS Anpassung Speicherung IDBData
This commit is contained in:
@@ -210,7 +210,7 @@
|
|||||||
oID_IS_FOREIGN = 1
|
oID_IS_FOREIGN = 1
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim oDELSQL = $"EXEC PRIDB_DELETE_TERM_OBJECT_METADATA {CURRENT_DOC_ID},'{oAttributeName}','{oTerm2Delete}','{USER_USERNAME}','{USER_LANGUAGE}',{oID_IS_FOREIGN}"
|
Dim oDELSQL = $"EXEC PRIDB_DELETE_TERM_OBJECT_METADATA {CURRENT_DOC_ID},'{oAttributeName}','{oTerm2Delete}','{USER_USERNAME}','{USER_LANGUAGE}',{oID_IS_FOREIGN};"
|
||||||
LOGGER.Debug($"Delete_Term_Object_From_Metadata: {oDELSQL}")
|
LOGGER.Debug($"Delete_Term_Object_From_Metadata: {oDELSQL}")
|
||||||
'DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
'DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
||||||
Return ExecuteOrQueue(oDELSQL)
|
Return ExecuteOrQueue(oDELSQL)
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
End Function
|
End Function
|
||||||
Public Function Delete_AttributeData(pIDB_OBJID As Int64, pAttributeName As String) As Object
|
Public Function Delete_AttributeData(pIDB_OBJID As Int64, pAttributeName As String) As Object
|
||||||
Try
|
Try
|
||||||
Dim oDELSQL = $"EXEC PRIDB_DELETE_ATTRIBUTE_DATA {pIDB_OBJID},'{pAttributeName}','{USER_USERNAME}'"
|
Dim oDELSQL = $"EXEC PRIDB_DELETE_ATTRIBUTE_DATA {pIDB_OBJID},'{pAttributeName}','{USER_USERNAME}';"
|
||||||
LOGGER.Debug($"Delete_Attribute_Data: {oDELSQL}")
|
LOGGER.Debug($"Delete_Attribute_Data: {oDELSQL}")
|
||||||
' DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
' DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
||||||
Return ExecuteOrQueue(oDELSQL)
|
Return ExecuteOrQueue(oDELSQL)
|
||||||
@@ -235,13 +235,18 @@
|
|||||||
|
|
||||||
Public Function SetVariableValue(oAttributeName As String, oNewValue As Object, Optional CheckDeleted As Boolean = False, Optional oIDBTyp As Integer = 0)
|
Public Function SetVariableValue(oAttributeName As String, oNewValue As Object, Optional CheckDeleted As Boolean = False, Optional oIDBTyp As Integer = 0)
|
||||||
Try
|
Try
|
||||||
|
Dim omsg = $"IDBData - SetVariableValue - Attribute: [{oAttributeName}] - NewValue: [{oNewValue}] - CheckDeleted: [{CheckDeleted.ToString}] - oIDBTyp: [{oIDBTyp}]"
|
||||||
|
LOGGER.Debug(omsg)
|
||||||
Dim omytype = oNewValue.GetType.ToString
|
Dim omytype = oNewValue.GetType.ToString
|
||||||
If omytype = "System.Data.DataTable" Then
|
If omytype = "System.Data.DataTable" Then
|
||||||
Dim oDTMyNewValues As DataTable = oNewValue
|
Dim oDTMyNewValues As DataTable = oNewValue
|
||||||
Dim oAttributeResultFromDB
|
Dim oAttributeResultFromDB
|
||||||
Dim oTypeOldResult
|
Dim oTypeOldResult
|
||||||
|
' Für DataTable (Mehrfachauswahl/Vektor) IMMER auf gelöschte Werte prüfen,
|
||||||
|
' unabhängig vom übergebenen CheckDeleted-Parameter.
|
||||||
|
Dim oEffectiveCheckDeleted As Boolean = True
|
||||||
|
|
||||||
If CheckDeleted = True Then
|
If oEffectiveCheckDeleted = True Then
|
||||||
oAttributeResultFromDB = GetVariableValue(oAttributeName, oIDBTyp)
|
oAttributeResultFromDB = GetVariableValue(oAttributeName, oIDBTyp)
|
||||||
oTypeOldResult = oAttributeResultFromDB.GetType.ToString
|
oTypeOldResult = oAttributeResultFromDB.GetType.ToString
|
||||||
If TypeOf oAttributeResultFromDB Is DataTable Then
|
If TypeOf oAttributeResultFromDB Is DataTable Then
|
||||||
@@ -306,7 +311,7 @@
|
|||||||
'Dim oSuccess As Boolean = False
|
'Dim oSuccess As Boolean = False
|
||||||
Dim oVALUE = oNewValueRow.Item(1).ToString
|
Dim oVALUE = oNewValueRow.Item(1).ToString
|
||||||
oVALUE = oVALUE.Replace("'", "''")
|
oVALUE = oVALUE.Replace("'", "''")
|
||||||
Dim oPRSQL = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oVALUE}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT"
|
Dim oPRSQL = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oVALUE}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT;"
|
||||||
LOGGER.Debug(oPRSQL)
|
LOGGER.Debug(oPRSQL)
|
||||||
'oSuccess = DatabaseFallback.ExecuteNonQueryIDB(oPRSQL)
|
'oSuccess = DatabaseFallback.ExecuteNonQueryIDB(oPRSQL)
|
||||||
If Not ExecuteOrQueue(oPRSQL) Then Return False
|
If Not ExecuteOrQueue(oPRSQL) Then Return False
|
||||||
@@ -317,7 +322,7 @@
|
|||||||
Return True
|
Return True
|
||||||
Else
|
Else
|
||||||
'oNewValue = oNewValue.Replace("'", "' + NCHAR(39) + '")
|
'oNewValue = oNewValue.Replace("'", "' + NCHAR(39) + '")
|
||||||
Dim oPRIDB_NEW_OBJ_DATA = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oNewValue}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT"
|
Dim oPRIDB_NEW_OBJ_DATA = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oNewValue}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT;"
|
||||||
LOGGER.Debug(oPRIDB_NEW_OBJ_DATA)
|
LOGGER.Debug(oPRIDB_NEW_OBJ_DATA)
|
||||||
' Return DatabaseFallback.ExecuteNonQueryIDB(oPRIDB_NEW_OBJ_DATA)
|
' Return DatabaseFallback.ExecuteNonQueryIDB(oPRIDB_NEW_OBJ_DATA)
|
||||||
Return ExecuteOrQueue(oPRIDB_NEW_OBJ_DATA)
|
Return ExecuteOrQueue(oPRIDB_NEW_OBJ_DATA)
|
||||||
|
|||||||
@@ -716,8 +716,8 @@ Public Class frmValidator
|
|||||||
Try
|
Try
|
||||||
Dim oSQL As String
|
Dim oSQL As String
|
||||||
If CURRENT_DOC_GUID <> 0 Then
|
If CURRENT_DOC_GUID <> 0 Then
|
||||||
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},'FreeFile'", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID)
|
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},'FreeFile';", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID)
|
||||||
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbNewLine & oPRoc
|
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbCrLf & oPRoc
|
||||||
Else
|
Else
|
||||||
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
|
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
|
||||||
End If
|
End If
|
||||||
@@ -999,83 +999,55 @@ Public Class frmValidator
|
|||||||
MyValidationLogger.Debug($" DataSource-Typ: {lookup.Properties.DataSource?.GetType()}")
|
MyValidationLogger.Debug($" DataSource-Typ: {lookup.Properties.DataSource?.GetType()}")
|
||||||
MyValidationLogger.Debug($" ValueMember: [{lookup.Properties.ValueMember}]")
|
MyValidationLogger.Debug($" ValueMember: [{lookup.Properties.ValueMember}]")
|
||||||
MyValidationLogger.Debug($" DisplayMember: [{lookup.Properties.DisplayMember}]")
|
MyValidationLogger.Debug($" DisplayMember: [{lookup.Properties.DisplayMember}]")
|
||||||
Dim ds = TryCast(lookup.Properties.DataSource, DataTable)
|
Dim originalValueMember = lookup.Properties.ValueMember
|
||||||
If ds IsNot Nothing Then
|
Dim originalDisplayMember = lookup.Properties.DisplayMember
|
||||||
MyValidationLogger.Debug($" DataSource hat {ds.Rows.Count} Zeilen, {ds.Columns.Count} Spalten")
|
|
||||||
If ds.Rows.Count > 0 Then
|
|
||||||
MyValidationLogger.Debug($" Erster Wert: [{ds.Rows(0)(lookup.Properties.ValueMember)}]")
|
|
||||||
MyValidationLogger.Debug($" Spalten: {String.Join(", ", ds.Columns.Cast(Of DataColumn)().Select(Function(c) c.ColumnName))}")
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
MyValidationLogger.Warn($"⚠️ DataSource ist NICHT vom Typ DataTable!")
|
|
||||||
End If
|
|
||||||
' ========== BUGFIX: Wert SICHERN bevor DataSource überschrieben wird ==========
|
|
||||||
Dim previousSelectedValues As List(Of String) = Nothing
|
|
||||||
|
|
||||||
' Aber ACHTUNG: Nur sichern, wenn bereits Werte gesetzt sind!
|
Dim previousSelectedValues As List(Of String) = Nothing
|
||||||
If lookup.Properties.SelectedValues IsNot Nothing AndAlso lookup.Properties.SelectedValues.Count > 0 Then
|
If lookup.Properties.SelectedValues IsNot Nothing AndAlso lookup.Properties.SelectedValues.Count > 0 Then
|
||||||
' Hier KÖNNEN Werte drin sein (z.B. "4711" aus FillIndexValues)
|
|
||||||
previousSelectedValues = New List(Of String)(lookup.Properties.SelectedValues)
|
previousSelectedValues = New List(Of String)(lookup.Properties.SelectedValues)
|
||||||
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] Alte SelectedValues gesichert: [{String.Join(",", previousSelectedValues)}]")
|
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] Alte SelectedValues gesichert: [{String.Join(",", previousSelectedValues)}]")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
' DataSource MIT NEUEM DataTable ÜBERSCHREIBEN (das ist der "Fehler")
|
lookup.Properties.BeginUpdate()
|
||||||
lookup.Properties.DataSource = oDTContent
|
Try
|
||||||
lookup.Properties.ValueMember = oDTContent.Columns.Item(0).ColumnName
|
lookup.Properties.DataSource = oDTContent
|
||||||
lookup.Properties.DisplayMember = oDTContent.Columns.Item(0).ColumnName
|
|
||||||
' *** DEBUG-CODE HIER EINFÜGEN ***
|
|
||||||
MyValidationLogger.Debug($"[LoadSQLData DEBUG] Lookup [{name}] konfiguriert:")
|
|
||||||
MyValidationLogger.Debug($" DataSource-Typ: {lookup.Properties.DataSource?.GetType()}")
|
|
||||||
MyValidationLogger.Debug($" ValueMember: [{lookup.Properties.ValueMember}]")
|
|
||||||
MyValidationLogger.Debug($" DisplayMember: [{lookup.Properties.DisplayMember}]")
|
|
||||||
|
|
||||||
ds = TryCast(lookup.Properties.DataSource, DataTable)
|
Dim valueMember As String = originalValueMember
|
||||||
If ds IsNot Nothing Then
|
If String.IsNullOrWhiteSpace(valueMember) OrElse Not oDTContent.Columns.Contains(valueMember) Then
|
||||||
MyValidationLogger.Debug($" DataSource hat {ds.Rows.Count} Zeilen, {ds.Columns.Count} Spalten")
|
valueMember = oDTContent.Columns(0).ColumnName
|
||||||
If ds.Rows.Count > 0 Then
|
|
||||||
Try
|
|
||||||
MyValidationLogger.Debug($" Erster Wert: [{ds.Rows(0)(lookup.Properties.ValueMember)}]")
|
|
||||||
MyValidationLogger.Debug($" Spalten: {String.Join(", ", ds.Columns.Cast(Of DataColumn)().Select(Function(c) c.ColumnName))}")
|
|
||||||
Catch ex As Exception
|
|
||||||
MyValidationLogger.Warn($"⚠️ Error in LookUpLoadSQLData: {ex.Message}")
|
|
||||||
End Try
|
|
||||||
End If
|
End If
|
||||||
Else
|
|
||||||
MyValidationLogger.Warn($"⚠️ DataSource ist NICHT vom Typ DataTable!")
|
|
||||||
End If
|
|
||||||
' *** ENDE DEBUG-CODE ***
|
|
||||||
' ========== CRITICAL: Nach DataSource-Zuweisung sind SelectedValues GELÖSCHT! ==========
|
|
||||||
' Daher müssen wir sie WIEDERHERSTELLEN:
|
|
||||||
If previousSelectedValues IsNot Nothing AndAlso previousSelectedValues.Count > 0 Then
|
|
||||||
' Nur wiederherstellen wenn:
|
|
||||||
' 1. Wir vorher Werte gesichert haben UND
|
|
||||||
' 2. Die Werte im NEUEN DataSource existieren
|
|
||||||
|
|
||||||
' Optional: Validierung dass Werte noch im neuen DataSource vorhanden sind
|
Dim displayMember As String = originalDisplayMember
|
||||||
Dim newDataSource As DataTable = lookup.Properties.DataSource
|
If String.IsNullOrWhiteSpace(displayMember) OrElse Not oDTContent.Columns.Contains(displayMember) Then
|
||||||
Dim validValues As New List(Of String)
|
displayMember = valueMember
|
||||||
|
End If
|
||||||
|
|
||||||
For Each oldValue As String In previousSelectedValues
|
lookup.Properties.ValueMember = valueMember
|
||||||
' Prüfe ob oldValue im neuen DataSource existiert
|
lookup.Properties.DisplayMember = displayMember
|
||||||
Dim exists = newDataSource.AsEnumerable().
|
|
||||||
Any(Function(r) r.Item(0).ToString = oldValue)
|
|
||||||
|
|
||||||
If exists Then
|
If previousSelectedValues IsNot Nothing AndAlso previousSelectedValues.Count > 0 Then
|
||||||
validValues.Add(oldValue)
|
Dim validValues As New List(Of String)
|
||||||
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] Wert [{oldValue}] existiert im neuen DataSource ✓")
|
|
||||||
Else
|
For Each oldValue As String In previousSelectedValues
|
||||||
MyValidationLogger.Warn($"⚠️ [LoadSQLData BUGFIX] Wert [{oldValue}] existiert NICHT im neuen DataSource ✗")
|
Dim exists = oDTContent.AsEnumerable().
|
||||||
|
Any(Function(r) r.Item(valueMember).ToString = oldValue)
|
||||||
|
|
||||||
|
If exists Then
|
||||||
|
validValues.Add(oldValue)
|
||||||
|
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] Wert [{oldValue}] existiert im neuen DataSource ✓")
|
||||||
|
Else
|
||||||
|
MyValidationLogger.Warn($"⚠️ [LoadSQLData BUGFIX] Wert [{oldValue}] existiert NICHT im neuen DataSource ✗")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
If validValues.Count > 0 Then
|
||||||
|
lookup.Properties.SelectedValues = validValues
|
||||||
|
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] SelectedValues wiederhergestellt: [{String.Join(",", validValues)}]")
|
||||||
End If
|
End If
|
||||||
Next
|
|
||||||
|
|
||||||
' Nur wenn noch gültige Werte übrig sind
|
|
||||||
If validValues.Count > 0 Then
|
|
||||||
lookup.Properties.SelectedValues = validValues
|
|
||||||
MyValidationLogger.Debug($"[LoadSQLData BUGFIX] SelectedValues wiederhergestellt: [{String.Join(",", validValues)}]")
|
|
||||||
Else
|
|
||||||
MyValidationLogger.Warn($"⚠️ [LoadSQLData BUGFIX] Keine Werte zum Wiederherstellen vorhanden!")
|
|
||||||
End If
|
End If
|
||||||
End If
|
Finally
|
||||||
|
lookup.Properties.EndUpdate()
|
||||||
|
End Try
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MyValidationLogger.Warn("⚠️ Error in LookUpLoadSQLData: " & ex.Message)
|
MyValidationLogger.Warn("⚠️ Error in LookUpLoadSQLData: " & ex.Message)
|
||||||
@@ -6985,7 +6957,7 @@ Public Class frmValidator
|
|||||||
Try
|
Try
|
||||||
MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)")
|
MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)")
|
||||||
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},{3}", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID, "FreeFile")
|
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},{3}", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID, "FreeFile")
|
||||||
Dim oSQL = oPRoc & vbNewLine &
|
Dim oSQL = oPRoc & vbCrLf &
|
||||||
$"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID};"
|
$"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID};"
|
||||||
If LOG_HOTSPOTS Then
|
If LOG_HOTSPOTS Then
|
||||||
' ========== DIAGNOSE: Vor DB-Execute ==========
|
' ========== DIAGNOSE: Vor DB-Execute ==========
|
||||||
|
|||||||
Reference in New Issue
Block a user