MS24112015

This commit is contained in:
SchreiberM
2015-11-24 11:13:04 +01:00
parent 80247e18dd
commit ad1308fe18
47 changed files with 5379 additions and 1570 deletions

View File

@@ -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)