From 1e37da974939c444fd9910ea19bae81391873371 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 20 Dec 2018 17:05:39 +0100 Subject: [PATCH] jj --- app/DD_PM_WINDREAM/frmValidator.vb | 234 +++++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 3191ac4..66fa3dd 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -1663,6 +1663,142 @@ Public Class frmValidator End Try 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) Try Dim value @@ -2483,6 +2619,104 @@ Public Class frmValidator End If Dim Type As String = inctrl.GetType.ToString 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" Try 'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist