This commit is contained in:
Jonathan Jenne 2018-12-20 17:05:39 +01:00
parent 00dd5fd2e1
commit 1e37da9749

View File

@ -1663,6 +1663,142 @@ Public Class frmValidator
End Try End Try
End Function End Function
Private Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object, CheckDuplikat As Boolean, vType As Object)
Dim ValueArray()
Try
Dim missing As Boolean = False
Dim Anzahl As Integer = 0
'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 CheckDuplikat = False Then
For Each value As Object In wertWD
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, value)
Anzahl += 1
Next
'Und jetzt den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
Next
Else
'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) = ConvertVectorType(vType, WDValue)
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) = ConvertVectorType(vType, NewValue)
Anzahl += 1
Else
End If
End If
Next
End If
End If
Else
'Den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If CheckDuplikat = True 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) = ConvertVectorType(vType, NewValue)
Anzahl += 1
Else
End If
Else 'Dererste Wert, also hinzufügen
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
Else
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
End If
Next
End If
Return ValueArray
Catch ex As Exception
Return valueArray
End Try
End Function
Public Function ConvertVectorType(vType As Object, value As String)
Select Case vType
Case 36865 ' 36865
'Umwandeln in String
Return value
Case 4097 '4097
'Umwandeln in String
Return value
Case 4098 '4098
'Umwandeln in Integer
value = value.Replace(" ", "")
Return CInt(value)
Case 4099 '4099
value = value.
Replace(" ", "").
Replace(".", ",")
'Umwandeln in Double
Return CDbl(value)
Case 4100 '4100
'Umwandeln in Boolean
Return CBool(value)
Case 4101 '4101
'Umwandeln in Date
Return CDate(value)
Case 4107 '4107
Return Convert.ToInt64(value)
Case 4103 '4103
'Umwandeln in Datum Uhrzeit
Return value
Case Else
'Umwandeln in String
Return value
End Select
End Function
Private Function ReturnVektor_IndexValue(VKTBezeichner As String) Private Function ReturnVektor_IndexValue(VKTBezeichner As String)
Try Try
Dim value Dim value
@ -2483,6 +2619,104 @@ Public Class frmValidator
End If End If
Dim Type As String = inctrl.GetType.ToString Dim Type As String = inctrl.GetType.ToString
Select Case Type Select Case Type
Case "DigitalData.Controls.LookupGrid.LookupControl"
Try
Dim lookup As LookupControl = inctrl
If lookup.SelectedValues.Count = 0 And _MUSSEINGABE = True Then
missing = True
errmessage = $"No value selected in control '{inctrl.Name}'"
inctrl.BackColor = Color.Red
Exit For
Else
If lookup.MultiSelect = True Then
Dim Zeilen As Integer = lookup.SelectedValues.Count
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If Zeilen > 0 Then
Dim ZeilenGrid As Integer = 0
Dim myVektorArr As String()
'Jeden Werte des Datagridviews durchlaufen
For Each value As String In lookup.SelectedValues
If value Is Nothing = False Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = value
ZeilenGrid += 1
End If
Next
'Jetzt die Datei indexieren
If Indexiere_File(aktivesDokument, _IDXName, myVektorArr) = False Then
missing = True
errmessage = "Fehler beim Indexieren Vektorfeld - ERROR: " & idxerr_message
Exit For
End If
End If
Else
input = lookup.SelectedValues.FirstOrDefault()
'den aktuellen Wert in windream auslesen
Dim wertWD
If _IDXName.StartsWith("[%VKT") Then
wertWD = ReturnVektor_IndexValue(_IDXName)
Else
wertWD = aktivesDokument.GetVariableValue(_IDXName)
If Not IsNothing(wertWD) Then
If wertWD.ToString = "System.Object[]" Then
If wertWD.Length = 1 Then
wertWD = wertWD(0)
Else '
ClassLogger.Add(" >> Vectorfield " & _IDXName & "' contains more then one value - First value will be used", False)
wertWD = wertWD(0)
End If
End If
Else
wertWD = ""
End If
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If IsNothing(wertWD) Or wertWD <> input Then
'Wenn der Wert in ein Vektorfeld geschrieben wird
If _IDXName.StartsWith("[%VKT") Then
input = Return_PM_VEKTOR(input, _IDXName)
'Hier muss nun separat als Vektorfeld indexiert werden
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
missing = True
errmessage = "Fehler beim Indexieren Textbox als VEKTOR - ERROR: " & idxerr_message
Exit For
End If
Else
Dim result() As String
ReDim Preserve result(0)
result(0) = input
If Indexiere_File(aktivesDokument, _IDXName, result) = False Then
missing = True
errmessage = "Fehler beim Indexieren Textbox - ERROR: " & idxerr_message
Exit For
Else
'Nun das Logging
If PROFIL_LOGINDEX <> "" Then
input = Return_LOGString(input, wertWD, _IDXName)
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
End If
End If
End If
End If
End If
End If
End If
Catch ex As Exception
End Try
Case "System.Windows.Forms.TextBox" Case "System.Windows.Forms.TextBox"
Try Try
'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist 'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist