MS24112015
This commit is contained in:
@@ -1021,32 +1021,39 @@ Public Class ClassWindream
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: WMObjectVariableValueTypeFulltext", False)
|
||||
convertValue = CStr(value)
|
||||
Case 4097
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4097 Vektor alphanumerisch", False)
|
||||
'Vektor alphanumerisch
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case 4098
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4098 Vektor Numerisch", False)
|
||||
'Vektor Numerisch
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case 4099
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4099 Vektor Kommazahl", False)
|
||||
'Vektor Kommazahl
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case 4101
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4101 Vektor Date", False)
|
||||
'Vektor Kommazahl
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case 4103
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4103 Vektor DateTime", False)
|
||||
'Vektor DateTime
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case 4107
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4107 Integer 64bit", False)
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 4107 Integer 64bit", False)
|
||||
convertValue = CStr(value)
|
||||
Case 36865
|
||||
vektor = True
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes: 36865 Vektor alphanumerisch", False)
|
||||
'Vektor Kommazahl
|
||||
vektor = True
|
||||
convertValue = CStr(value)
|
||||
Case Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Typ des windream-Indexes konnte nicht bestimmt werden!", False)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Versuch des Auslesens (vType): " & vType)
|
||||
@@ -1088,15 +1095,164 @@ Public Class ClassWindream
|
||||
ClassLogger.Add(" >> Kein Indexwert vorhanden", False)
|
||||
End If
|
||||
Else
|
||||
'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> VEKTORFELD: Vorbereiten des Arrays", False)
|
||||
|
||||
Dim myArray()
|
||||
|
||||
'For Each row As DataRow In DT.Rows
|
||||
'MsgBox(aName & vbNewLine & row.Item("Indexname") & vbNewLine & CStr(row.Item("Wert")))
|
||||
'Next
|
||||
Dim Anzahl As Integer = aValues.Length
|
||||
'Vektorfeld wird mit EINEM Wert gefüllt
|
||||
If Anzahl = 1 Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Vektorfeld wird mit EINEM Wert gefüllt ", False)
|
||||
ReDim myArray(0)
|
||||
Select Case vType
|
||||
Case 36865
|
||||
'Umwandeln in String
|
||||
myArray(0) = CStr(value)
|
||||
Case 4097
|
||||
'Umwandeln in String
|
||||
myArray(0) = CStr(value)
|
||||
Case 4098
|
||||
'Umwandeln in Integer
|
||||
value = value.ToString.Replace(" ", "")
|
||||
myArray(0) = CInt(value)
|
||||
Case 4099
|
||||
Dim Str As String = value
|
||||
Str = Str.ToString.Replace(" ", "")
|
||||
'Umwandeln in Double
|
||||
myArray(0) = CDbl(Str.Replace(".", ","))
|
||||
Case 4101
|
||||
'Umwandeln in Date
|
||||
myArray(0) = CDate(value)
|
||||
Case 4107
|
||||
myArray(0) = Convert.ToInt64(value)
|
||||
Case 4103
|
||||
'Umwandeln in Datum Uhrzeit
|
||||
myArray(0) = value
|
||||
Case Else
|
||||
'Umwandeln in String
|
||||
myArray(0) = CStr(value)
|
||||
End Select
|
||||
|
||||
'Jetzt überprüfen ob Werte in Vektorfeld angefügt oder überschrieben werden sollen
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Konvertierter Wert: " & myArray(0).ToString, False)
|
||||
|
||||
Dim VektorArray()
|
||||
|
||||
'Immer anfügen
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Check Existing Vektorvalues", False)
|
||||
VektorArray = Return_VektorArray(oDocument, aName, myArray)
|
||||
|
||||
If VektorArray Is Nothing = False Then
|
||||
ReDim myArray(VektorArray.Length - 1)
|
||||
Array.Copy(VektorArray, myArray, VektorArray.Length)
|
||||
|
||||
'Jetzt die Nachindexierung für Vektor-Felder
|
||||
oDocument.SetVariableValue(aName, myArray)
|
||||
'myArray)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> 'SetVariableValue' für VEKTOR mit einem Wert erfolgreich", False)
|
||||
|
||||
'Die Änderungen festsschreiben/speichern
|
||||
oDocument.Save()
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Vektorfeld wird mit MEHREREN Werten gefüllt ", False)
|
||||
' das ausgewählte Profil in _selectedProfile laden
|
||||
|
||||
|
||||
'Die Größe des Arrays festlegen
|
||||
ReDim myArray(Anzahl - 1)
|
||||
Dim i1 As Integer = 0
|
||||
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
|
||||
For Each obj In myArray
|
||||
myArray(i1) = CStr(obj)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Wert (" & i1 & ") aus Datatable: '" & myArray(i1).ToString & "'", False)
|
||||
i1 = i1 + 1
|
||||
Next
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Array wurde erfolgreich erzeugt", False)
|
||||
|
||||
|
||||
Dim VektorArray()
|
||||
|
||||
VektorArray = Return_VektorArray(oDocument, aName, myArray)
|
||||
|
||||
If VektorArray Is Nothing = False Then
|
||||
'Das Array wieder anpassen
|
||||
ReDim myArray(VektorArray.Length - 1)
|
||||
'Array.Copy(VektorArray, myArray, VektorArray.Length)
|
||||
i1 = 0
|
||||
For Each _value As Object In VektorArray
|
||||
Select Case vType
|
||||
Case 36865
|
||||
myArray(i1) = CStr(_value)
|
||||
Case 4097
|
||||
myArray(i1) = CStr(_value)
|
||||
Case 4098
|
||||
Dim v As String = _value.ToString.Replace(" ", "")
|
||||
myArray(i1) = CInt(v)
|
||||
Case 4099
|
||||
'Vektroryp Double
|
||||
Dim Str As String = _value
|
||||
Str = Str.ToString.Replace(" ", "")
|
||||
myArray(i1) = CDbl(Str.Replace(".", ","))
|
||||
Case 4101
|
||||
'Vektortyp DATE
|
||||
Dim dat As String = _value
|
||||
myArray(i1) = CDate(dat.Replace(".", ","))
|
||||
Case 4107
|
||||
myArray(i1) = Convert.ToInt64(_value)
|
||||
Case Else
|
||||
'Vektortyp ALPHANUMERISCH
|
||||
'Die Größe des Arrays festlegen
|
||||
myArray(i1) = CStr(myArray(0))
|
||||
End Select
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Konvertierter Wert (" & i1 & ") : '" & myArray(i1).ToString & "'", False)
|
||||
i1 += 1
|
||||
Next
|
||||
'Jetzt die Nachindexierung für Vektor-Felder
|
||||
Try
|
||||
oDocument.SetVariableValue(aName, myArray)
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("RunIndexing -Unexpected error in indexing Vectorfield: " & ex.Message, True)
|
||||
oDocument.Save()
|
||||
oDocument.unlock()
|
||||
Return False
|
||||
End Try
|
||||
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> 'SetVariableValue' für VEKTOR erfolgreich", False)
|
||||
|
||||
' oDocument.LockRights()
|
||||
|
||||
'Die Änderungen festsschreiben/speichern
|
||||
oDocument.Save()
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(">> Indexierung erfolgreich beendet (Save ...", False)
|
||||
Else
|
||||
ClassLogger.Add(" - Achtung: VektorArray Is NOTHING", False)
|
||||
oDocument.Save()
|
||||
Return True
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" ...Array der Indexwerte ist leer/Nothing - Keine Nachindexierung", False)
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
i += 1
|
||||
|
||||
Next
|
||||
@@ -1118,6 +1274,80 @@ Public Class ClassWindream
|
||||
oDocument.unlock()
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object)
|
||||
Try
|
||||
Dim missing As Boolean = False
|
||||
Dim Anzahl As Integer = 0
|
||||
Dim ValueArray()
|
||||
'Jeden Wert des Vektorfeldes durchlaufen
|
||||
Dim wertWD = oDocument.GetVariableValue(vktIndexName)
|
||||
If wertWD Is Nothing = False Then
|
||||
'Nochmals prüfen ob wirklich Array
|
||||
If wertWD.GetType.ToString.Contains("System.Object") Then
|
||||
'Keine Duplikatprüfung also einfach neues Array füllen
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Duplikatprüfung soll durchgeführt werden.", False)
|
||||
'Duplikat Prüfung an, also nur anhängen wenn Wert <>
|
||||
For Each WDValue As Object In wertWD
|
||||
If WDValue Is Nothing = False Then
|
||||
'Erst einmal die ALten Werte schreiben
|
||||
ReDim Preserve ValueArray(Anzahl)
|
||||
'Den Wert im Array speichern
|
||||
ValueArray(Anzahl) = WDValue.ToString
|
||||
Anzahl += 1
|
||||
End If
|
||||
Next
|
||||
'Jetzt die Neuen Werte auf Duplikate überprüfen
|
||||
For Each NewValue As Object In NIIndexe
|
||||
If NewValue Is Nothing = False Then
|
||||
If ValueArray.Contains(NewValue) = False Then
|
||||
'Das Array anpassen
|
||||
ReDim Preserve ValueArray(Anzahl)
|
||||
'Den Wert im Array speichern
|
||||
ValueArray(Anzahl) = NewValue.ToString
|
||||
Anzahl += 1
|
||||
Else
|
||||
ClassLogger.Add(" >> Value '" & NewValue.ToString & "' bereits in Vektorfeld enthalten", False)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Vektorfeld ist noch leer....", False)
|
||||
'Den/die Neuen Wert(e) anfügen
|
||||
For Each NewValue As Object In NIIndexe
|
||||
If NewValue Is Nothing = False Then
|
||||
|
||||
If ValueArray Is Nothing = False Then
|
||||
If ValueArray.Contains(NewValue) = False Then
|
||||
'Das Array anpassen
|
||||
ReDim Preserve ValueArray(Anzahl)
|
||||
'Den Wert im Array speichern
|
||||
ValueArray(Anzahl) = NewValue.ToString
|
||||
Anzahl += 1
|
||||
Else
|
||||
ClassLogger.Add(" >> Value '" & NewValue.ToString & "' bereits in Array enthalten", False)
|
||||
End If
|
||||
Else 'Dererste Wert, also hinzufügen
|
||||
'Das Array anpassen
|
||||
ReDim Preserve ValueArray(Anzahl)
|
||||
'Den Wert im Array speichern
|
||||
ValueArray(Anzahl) = NewValue.ToString
|
||||
Anzahl += 1
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
Return ValueArray
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("Unexpected Error in ClassWindream.Return_VektorArray: " & ex.Message, True)
|
||||
End Try
|
||||
|
||||
|
||||
End Function
|
||||
Private Shared Function IsNotEmpty(ByVal aValue As Object)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user