6341 lines
346 KiB
VB.net
6341 lines
346 KiB
VB.net
Imports DevExpress.DataAccess.Native.Sql
|
||
Imports DevExpress.DataProcessing.InMemoryDataProcessor
|
||
Imports DevExpress.Utils
|
||
Imports DevExpress.XtraBars
|
||
Imports DevExpress.XtraEditors
|
||
Imports DevExpress.XtraEditors.Mask
|
||
Imports DevExpress.XtraEditors.Repository
|
||
Imports DevExpress.XtraExport.Helpers
|
||
Imports DevExpress.XtraGrid
|
||
Imports DevExpress.XtraGrid.Columns
|
||
Imports DevExpress.XtraGrid.Views.Base
|
||
Imports DevExpress.XtraGrid.Views.Grid
|
||
Imports DigitalData.Controls.LookupGrid
|
||
Imports DigitalData.GUIs.Common
|
||
Imports DigitalData.GUIs.Common.DocumentResultList
|
||
Imports DigitalData.Modules.Base
|
||
Imports DigitalData.Modules.EDMI.API.Constants
|
||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||
Imports DigitalData.Modules.Interfaces
|
||
Imports DigitalData.Modules.Logging
|
||
Imports DigitalData.Modules.ZooFlow
|
||
Imports DigitalData.Modules.ZooFlow.Constants
|
||
Imports System.ComponentModel
|
||
'Imports System.Data.SqlClient
|
||
Imports System.Globalization
|
||
Imports System.IO
|
||
Imports System.Reflection
|
||
Imports System.Runtime.InteropServices
|
||
Imports System.Text.RegularExpressions
|
||
Imports System.Threading
|
||
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement
|
||
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox
|
||
Imports WINDREAMLib
|
||
|
||
Public Class frmValidator
|
||
Public Event CustomColumnDisplayText As CustomColumnDisplayTextEventHandler
|
||
Private Property Current_Document As DocumentResultList.Document = Nothing
|
||
''' <summary>
|
||
''' Contains all controls for the current profile
|
||
''' </summary>
|
||
Private Property DT_CONTROLS As DataTable
|
||
|
||
''' <summary>
|
||
''' Contains all grid columns for the current profile
|
||
''' </summary>
|
||
Private Property DT_COLUMNS_GRID As DataTable
|
||
|
||
''' <summary>
|
||
''' Contains all grid columns for the current profile which have an sql but don't have a reference to a control
|
||
''' </summary>
|
||
Private Property DT_COLUMNS_GRID_WITH_SQL As DataTable
|
||
|
||
''' <summary>
|
||
''' Contains all grid columns for the current profile which have an sql and have a reference to a control
|
||
''' </summary>
|
||
Private Property DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER As DataTable
|
||
|
||
Private Property DTInfoDoc As DataTable
|
||
Private Property PROFIL_sortbynewest As Boolean
|
||
Private Property PROFIL_VEKTORINDEX
|
||
Private Property PROFIL_FINISH_SQL
|
||
Private Property PROFIL_LOGINDEX
|
||
Private Property PROFIL_CURRENCY_ATTRIBUTE
|
||
Private Property PROFIL_REJECT_ACTIONS_ATTRIBUTE As String = ""
|
||
Private Property PROFIL_REJECT_COMMENT_ATTRIBUTE As String = ""
|
||
Private Property PROFIL_NOT_RESP_COMMENT_ATTR As String = ""
|
||
Private Property REJECTION_ACTIVE As Boolean = False
|
||
Private Property oErrMsgMissingInput
|
||
|
||
Private Const PMDelimiter As String = "~"
|
||
|
||
Private Property finalProfile As Boolean
|
||
Private Property Move2Folder As String
|
||
'Private Property DataASorDB As ClassDataASorDB
|
||
Private Property allgFunk As New ClassAllgemeineFunktionen
|
||
|
||
Public Shared Property WMDocPathWindows As String
|
||
Private Property DocPathWindows As String
|
||
'Anzahl der Validierungsdokumente
|
||
Private Property Amount_Docs2Validate As Integer
|
||
Private Property first_control As Control
|
||
Private Property last_control As Control
|
||
|
||
Public Shared Property idxerr_message As String = ""
|
||
|
||
Private Property _frmValidatorSearch As frmValidatorSearch
|
||
|
||
Private Property DT_AdditionalSearches_Resultset_Docs As DataTable
|
||
|
||
Private Property _Indexe_Loaded As Boolean = False
|
||
Private Property _DependingControl_In_Action As Boolean = False
|
||
Private Property _DependingColumn_In_Action As Boolean = False
|
||
Private Property _SetControlValue_In_Action As Boolean = False
|
||
Public Property _FormLoaded As Boolean = False
|
||
Private Property _FormClosing As Boolean = False
|
||
Private Property _ControlHandleStarted As Boolean = False
|
||
Private Property _ItemWorked As Boolean = False
|
||
|
||
|
||
Private Property Override As Boolean = False
|
||
Private Property OverrideAll As Boolean = False
|
||
Private Property Override_SQLCommand As String = ""
|
||
Private Property listChangedLookup As New List(Of String)
|
||
|
||
Private DD_Documentloader As Loader
|
||
Private ControlCreator As ClassControlCreator
|
||
Private PerformanceLogger As Logger
|
||
Private Validator As Validator
|
||
Private Const LOG_PERF = True
|
||
Private ReadOnly ValidatorLogger As Logger
|
||
|
||
Private Property OperationMode As OperationMode
|
||
Private ReadOnly Environment As Environment
|
||
Private AdditionalDocResultsExist As Boolean = False
|
||
Private AdditionalDataResultsExist As Boolean = False
|
||
Private oProfileFinalText As String = ""
|
||
Private oProfileRejectionText As String = ""
|
||
Private oProfileNotResponsibleText As String = ""
|
||
Private oProfileNotResponsibleQuestion As String = ""
|
||
|
||
Private oProfile_REJECT_SQL_REASONS As String
|
||
Private oProfile_NOT_RESP_SQL As String
|
||
Private listofControls As New List(Of String)
|
||
|
||
Private frmMessages As frmValidator_Messages
|
||
|
||
Private Class S
|
||
Inherits My.Resources.frmValidator_Strings
|
||
End Class
|
||
|
||
Public Sub New(pEnvironment As Environment)
|
||
PerformanceLogger = LOGCONFIG.GetLoggerFor("PERF")
|
||
If LOG_PERF Then PerformanceLogger.Info("New")
|
||
ValidatorLogger = LOGCONFIG.GetLogger()
|
||
|
||
'MyBase.New
|
||
ValidatorLogger.Debug("Initialize Components...")
|
||
InitializeComponent()
|
||
Environment = pEnvironment
|
||
|
||
Try
|
||
ValidatorLogger.Debug("Initialize _frmValidatorSearch...")
|
||
_frmValidatorSearch = New frmValidatorSearch(Me, Environment)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
|
||
End Sub
|
||
|
||
Private Function GetOperationMode() As OperationMode
|
||
Dim oOperationMode As OperationMode
|
||
|
||
If Environment.Service.Client Is Nothing And OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
|
||
Return OperationMode.NoAppServer
|
||
End If
|
||
If Not IsNothing(Environment.Service.Client) Then
|
||
If Environment.Service.Client.IsOnline AndAlso Environment.Service.Client.ServerAddress <> String.Empty And IDB_USES_WMFILESTORE = False Then
|
||
oOperationMode = OperationMode.WithAppServer
|
||
Else
|
||
oOperationMode = OperationMode.NoAppServer
|
||
End If
|
||
End If
|
||
|
||
If OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
|
||
oOperationMode = OperationMode.ZooFlow
|
||
End If
|
||
|
||
Return oOperationMode
|
||
End Function
|
||
Private Function IsPositionVisible(position As Point) As Boolean
|
||
For Each scr As Screen In Screen.AllScreens
|
||
If scr.WorkingArea.Contains(position) Then
|
||
Return True ' Punkt ist sichtbar
|
||
End If
|
||
Next
|
||
Return False ' Punkt ist außerhalb aller sichtbaren Bereiche
|
||
End Function
|
||
Private Sub frmValidation_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
||
|
||
Try
|
||
|
||
|
||
If LOG_PERF Then PerformanceLogger.Info("frmValidation_Load")
|
||
ValidatorLogger.Debug("###frmValidation_Load###")
|
||
ValidatorLogger.Debug("Current User Language: [{0}]", USER_LANGUAGE)
|
||
|
||
' Operation mode is either guessed from service settings
|
||
' or explictly set from OperationModeOverride in Params
|
||
OperationMode = GetOperationMode()
|
||
|
||
DD_Documentloader = New Loader(LOGCONFIG, OperationMode, Environment.Service.Client, Environment.User)
|
||
ControlCreator = New ClassControlCreator(LOGCONFIG)
|
||
Validator = New Validator(LOGCONFIG)
|
||
|
||
Override = False
|
||
_ItemWorked = False
|
||
SplitContainer1.Panel2Collapsed = True
|
||
first_control = Nothing
|
||
_FormClosing = False
|
||
|
||
_FormLoaded = False
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error in frmValidation_load1: {ex.Message}")
|
||
End Try
|
||
|
||
Try
|
||
If My.Settings.frmValidatorPosition.IsEmpty = False Then
|
||
|
||
If IsPositionVisible(My.Settings.frmValidatorPosition) Then
|
||
' Position ist sichtbar, das Formular wird dort angezeigt
|
||
Try
|
||
ScreenEx.RestoreFormPosition(Me, My.Settings.frmValidatorPosition)
|
||
Catch ex As Exception
|
||
Me.StartPosition = FormStartPosition.CenterScreen
|
||
End Try
|
||
|
||
If My.Settings.frmValidatorPosition.X > 0 And My.Settings.frmValidatorPosition.Y > 0 Then
|
||
Location = My.Settings.frmValidatorPosition
|
||
Else
|
||
Try
|
||
ValidatorLogger.Debug($"!! Invalid PositionData X({My.Settings.frmValidatorPosition.X}), Y({My.Settings.frmValidatorPosition.Y})")
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
|
||
End If
|
||
|
||
Else
|
||
' Position ist unsichtbar, Standardposition verwenden
|
||
Me.StartPosition = FormStartPosition.CenterScreen
|
||
|
||
End If
|
||
End If
|
||
If My.Settings.frmValidatorSize.IsEmpty = False Then
|
||
If My.Settings.frmValidatorSize.Width > 0 And My.Settings.frmValidatorSize.Height > 0 Then
|
||
If My.Settings.frmValidatorWindowState = "Normal" Then
|
||
Size = My.Settings.frmValidatorSize
|
||
Else
|
||
Me.WindowState = FormWindowState.Maximized
|
||
End If
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Info($"Error loading position: {ex.Message}")
|
||
End Try
|
||
|
||
Dim _step = 0
|
||
Try
|
||
DocumentViewerValidator.Init(LOGCONFIG, GDPICTURE_LICENSE)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
Try
|
||
_step = 1
|
||
_step = 2
|
||
|
||
DTVWCONTROL_INDEX.Clear()
|
||
Dim oExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}"
|
||
DTVWCONTROLS_INDEX.Select(oExpression, "Y_LOC, X_LOC").CopyToDataTable(DTVWCONTROL_INDEX, LoadOption.PreserveChanges)
|
||
|
||
_step = 3
|
||
ValidatorLogger.Debug("Profile Data loaded")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||
ValidatorLogger.Info(">> Error in LOADING profile-data: " & ex.Message, True)
|
||
Me.Close()
|
||
End Try
|
||
ValidatorLogger.Debug("frmValidation_Load finished till Step 3!")
|
||
|
||
|
||
Try
|
||
If CURRENT_DT_PROFILE.Rows.Count = 0 Then
|
||
ValidatorLogger.Info(">> ProfileData could not be loaded - Profile: : " & CURRENT_ProfilName, True)
|
||
MsgBox("ProfileData could not be loaded - Profile: " & CURRENT_ProfilName, MsgBoxStyle.Critical, "Attention:")
|
||
Me.Close()
|
||
End If
|
||
_step = 4
|
||
ValidatorLogger.Debug("Step 4")
|
||
If CURRENT_DT_PROFILE.Rows.Count > 1 Then
|
||
MsgBox("More than 1 profile (" & CURRENT_DT_PROFILE.Rows.Count & ") returned!!", MsgBoxStyle.Critical, "Attention:")
|
||
Else
|
||
_step = 5
|
||
ValidatorLogger.Debug("Step 5")
|
||
If CURRENT_DT_PROFILE.Rows.Count = 1 Then
|
||
_step = 6
|
||
ValidatorLogger.Debug("Step 6")
|
||
For Each oProfileRow As DataRow In CURRENT_DT_PROFILE.Rows
|
||
PROFIL_FINISH_SQL = oProfileRow.Item("SQL_BTN_FINISH")
|
||
PROFIL_VEKTORINDEX = oProfileRow.Item("PM_VEKTOR_INDEX")
|
||
PROFIL_CURRENCY_ATTRIBUTE = oProfileRow.Item("CURRENCY_ATTRIBUTE")
|
||
|
||
PROFIL_REJECT_ACTIONS_ATTRIBUTE = oProfileRow.Item("REJECT_ACTIONS_ATTRIBUTE")
|
||
PROFIL_REJECT_COMMENT_ATTRIBUTE = oProfileRow.Item("REJECT_COMMENT_ATTRIBUTE")
|
||
PROFIL_NOT_RESP_COMMENT_ATTR = oProfileRow.Item("NOT_RESP_COMMENT_ATTRIBUTE")
|
||
REJECTION_ACTIVE = False
|
||
PROFIL_LOGINDEX = oProfileRow.Item("LOG_INDEX")
|
||
CURRENT_PROFILE_LOG_INDEX = PROFIL_LOGINDEX
|
||
Dim oProfileTitle As String = ""
|
||
Dim oProfileDescription As String = ""
|
||
|
||
For Each oRow As DataRow In CURRENT_DT_PROFILE_LANGUAGE.Rows
|
||
Console.WriteLine(oRow.Item("TITLE"))
|
||
If oRow.Item("TITLE") = $"PROFILE_TITLE{CURRENT_ProfilGUID}" Then
|
||
oProfileTitle = oRow.Item("STRING1")
|
||
ElseIf oRow.Item("TITLE") = $"PROFILE_DESCRIPTION{CURRENT_ProfilGUID}" Then
|
||
oProfileDescription = oRow.Item("STRING1")
|
||
ElseIf oRow.Item("TITLE") = $"PROFILE_FINAL_TEXT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
|
||
If oRow.Item("STRING1") <> "" Then
|
||
oProfileFinalText = oRow.Item("STRING1")
|
||
End If
|
||
ElseIf oRow.Item("TITLE") = $"PROFILE_REJECTION_CAPT{CURRENT_ProfilGUID}" Then
|
||
oProfileRejectionText = oRow.Item("STRING1")
|
||
ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_CAPT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
|
||
oProfileNotResponsibleText = oRow.Item("STRING1")
|
||
ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_QUEST{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
|
||
oProfileNotResponsibleQuestion = oRow.Item("STRING1")
|
||
End If
|
||
Next
|
||
|
||
If oProfileTitle = "" Then
|
||
oProfileTitle = oProfileRow.Item("TITLE")
|
||
End If
|
||
Me.Text = ADDITIONAL_TITLE & " - " & oProfileTitle
|
||
If oProfileDescription = "" Then
|
||
IIf(IsDBNull(oProfileRow.Item("DESCRIPTION")), "", oProfileRow.Item("DESCRIPTION"))
|
||
End If
|
||
TITLELabel1.Text = oProfileTitle
|
||
DESCRIPTIONLabel.Text = oProfileDescription
|
||
If PROFIL_VEKTORINDEX.GetType.ToString.ToLower = "system.dbnull" Then
|
||
PROFIL_VEKTORINDEX = ""
|
||
End If
|
||
If PROFIL_LOGINDEX.GetType.ToString.ToLower = "system.dbnull" Then
|
||
PROFIL_LOGINDEX = ""
|
||
End If
|
||
|
||
finalProfile = oProfileRow.Item("FINAL_PROFILE")
|
||
Move2Folder = IIf(IsDBNull(oProfileRow.Item("MOVE2Folder")), "", oProfileRow.Item("MOVE2Folder"))
|
||
Try
|
||
If finalProfile = True Then
|
||
If oProfileFinalText = "" Then
|
||
oProfileFinalText = IIf(IsDBNull(oProfileRow.Item("FINAL_TEXT")), "", oProfileRow.Item("FINAL_TEXT") & (" (F2)"))
|
||
Else
|
||
oProfileFinalText = $"{oProfileFinalText} (F2)"
|
||
End If
|
||
|
||
btnSave.Text = oProfileFinalText
|
||
Else
|
||
oProfileFinalText = IIf(IsDBNull(oProfileRow.Item("FINAL_TEXT")), "", oProfileRow.Item("FINAL_TEXT") & (" (F2)"))
|
||
'btnSave.Text = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
|
||
If oProfileFinalText = String.Empty Then
|
||
oProfileFinalText = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
|
||
End If
|
||
btnSave.Text = oProfileFinalText
|
||
End If
|
||
ValidatorLogger.Debug("Buttontext validation loaded")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Error loading final profile text:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||
ValidatorLogger.Info(">> Error loading final profile text: " & ex.Message, True)
|
||
End Try
|
||
Dim PROF_BTN_RE_CAPT = oProfileRow.Item("BTN_REJECT_CAPTION")
|
||
Dim PROF_SQL_BTN_REJECT = oProfileRow.Item("SQL_BTN_REJECT")
|
||
oProfile_REJECT_SQL_REASONS = oProfileRow.Item("REJECT_SQL_REASONS")
|
||
oProfile_NOT_RESP_SQL = oProfileRow.Item("NOT_RESP_SQL")
|
||
|
||
|
||
If oProfileRejectionText = String.Empty Then
|
||
oProfileRejectionText = PROF_BTN_RE_CAPT
|
||
End If
|
||
|
||
|
||
|
||
ValidatorLogger.Debug($"oProfileRejectionText: " + oProfileRejectionText)
|
||
ValidatorLogger.Debug($"oProfile_REJECT_SQL_REASONS: " + oProfile_REJECT_SQL_REASONS)
|
||
ValidatorLogger.Debug($"oProfileNotResponsibleText: " + oProfileNotResponsibleText)
|
||
ValidatorLogger.Debug($"oProfile_NOT_RESP_SQL: " + oProfile_NOT_RESP_SQL)
|
||
ValidatorLogger.Debug($"oProfileRejectionText: " + oProfileRejectionText)
|
||
Dim functBtnReject As Boolean = False
|
||
Dim functBtnNR As Boolean = False
|
||
If oProfileRejectionText <> String.Empty And oProfile_REJECT_SQL_REASONS <> String.Empty Then
|
||
functBtnReject = True
|
||
End If
|
||
If oProfileNotResponsibleText <> String.Empty And oProfile_NOT_RESP_SQL <> String.Empty Then
|
||
If IDB_ACTIVE = True Then
|
||
functBtnNR = True
|
||
End If
|
||
End If
|
||
If functBtnReject = False And functBtnNR = False Then
|
||
ValidatorLogger.Debug($"!Keine Ablehnung und Nicht zuständig Funktion konfiguriert!")
|
||
SplitContainerReject_NotResp.Visible = False
|
||
SplitContainerButtons.CollapsePanel = SplitCollapsePanel.None
|
||
SplitContainerButtons.PanelVisibility = SplitPanelVisibility.Panel2
|
||
Else
|
||
SplitContainerButtons.CollapsePanel = SplitCollapsePanel.Panel1
|
||
SplitContainerReject_NotResp.Visible = True
|
||
If functBtnReject = True And functBtnNR = True Then
|
||
ValidatorLogger.Debug($"Nicht zuständig und Ablehnungs-Buttons werden eingeblendet!")
|
||
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.None
|
||
SplitContainerButtons.PanelVisibility = SplitPanelVisibility.Both
|
||
btnReject.Text = oProfileRejectionText
|
||
btnNotResponsible.Text = oProfileNotResponsibleText
|
||
If USER_GHOST_MODE_ACTIVE Then
|
||
btnReject.Enabled = False
|
||
btnNotResponsible.Enabled = False
|
||
Else
|
||
btnReject.Enabled = True
|
||
btnNotResponsible.Enabled = True
|
||
End If
|
||
Else
|
||
If functBtnNR = True Then
|
||
ValidatorLogger.Debug($"Nicht zuständig Button wird eingeblendet!")
|
||
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.Panel1
|
||
SplitContainerReject_NotResp.PanelVisibility = SplitPanelVisibility.Panel2
|
||
btnReject.Visible = False
|
||
SplitContainerReject_NotResp.Collapsed = True
|
||
btnNotResponsible.Text = oProfileNotResponsibleText
|
||
If USER_GHOST_MODE_ACTIVE Then
|
||
btnNotResponsible.Enabled = False
|
||
Else
|
||
btnNotResponsible.Enabled = True
|
||
End If
|
||
Else
|
||
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.Panel2
|
||
SplitContainerReject_NotResp.PanelVisibility = SplitPanelVisibility.Panel1
|
||
SplitContainerReject_NotResp.Collapsed = True
|
||
btnNotResponsible.Visible = False
|
||
btnReject.Text = oProfileRejectionText
|
||
If USER_GHOST_MODE_ACTIVE Then
|
||
btnReject.Enabled = False
|
||
Else
|
||
btnReject.Enabled = True
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
bbtniNext.Visibility = BarItemVisibility.Always
|
||
|
||
If CURRENT_JUMP_DOC_GUID <> 0 Then
|
||
bbtniNext.Visibility = BarItemVisibility.Never
|
||
|
||
Amount_Docs2Validate = 1
|
||
Else
|
||
|
||
Amount_Docs2Validate = 0
|
||
End If
|
||
|
||
Next
|
||
ValidatorLogger.Debug(" >> profiledata saved:")
|
||
ValidatorLogger.Debug(" >> finalProfile: " & finalProfile)
|
||
ValidatorLogger.Debug(" >> Move2Folder: " & Move2Folder)
|
||
ValidatorLogger.Debug(" >> Right_Delete: " & USER_RIGHT_FILE_DELETE)
|
||
|
||
PROFIL_sortbynewest = CURRENT_DT_PROFILE.Rows(0).Item("SORT_BY_LATEST")
|
||
ValidatorLogger.Debug("PROFIL_sortbynewest: " & PROFIL_sortbynewest.ToString)
|
||
'Delete Button anzeigen ja/nein
|
||
If USER_RIGHT_FILE_DELETE = True Then
|
||
bbtniDelete.Visibility = BarItemVisibility.Always
|
||
|
||
Else
|
||
bbtniDelete.Visibility = BarItemVisibility.Never
|
||
End If
|
||
|
||
If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then
|
||
bbtniAnnotation.Visibility = BarItemVisibility.Always
|
||
|
||
Else
|
||
bbtniAnnotation.Visibility = BarItemVisibility.Never
|
||
End If
|
||
ValidatorLogger.Debug("Right_Delete: " & USER_RIGHT_FILE_DELETE.ToString)
|
||
Create_Controls()
|
||
|
||
|
||
End If
|
||
End If
|
||
|
||
'oErrMsgMissingInput = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.MissingInput")
|
||
oErrMsgMissingInput = S.Bitte_validieren_Sie_die_rot_markierten_Felder_
|
||
|
||
|
||
ValidatorLogger.Debug("frmValidation_Load finished!")
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Error LOADING Profile-Data1:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||
ValidatorLogger.Info("Unexpected error in LOADING Profile-Data1: " & ex.Message)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
|
||
Private Sub frmValidation_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||
Try
|
||
_FormClosing = True
|
||
|
||
If Application.OpenForms().OfType(Of frmValidator_Messages).Any Then
|
||
If Not IsNothing(frmMessages) Then
|
||
frmMessages.Close()
|
||
End If
|
||
End If
|
||
Try
|
||
' Position und Größe speichern
|
||
My.Settings.frmValidatorSize = Me.Size
|
||
My.Settings.frmValidatorPosition = Me.Location
|
||
My.Settings.Save()
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Error in Load FormLayout: " & ex.Message)
|
||
End Try
|
||
My.Settings.frmValidatorSize = Me.Size
|
||
My.Settings.Save()
|
||
If INACTIVITY_DURATION <> 0 Then frmMain.Timer_Inactivity_Reset_Disable("FormClosing")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
Try
|
||
Dim oDel = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID}"
|
||
|
||
DatabaseFallback.ExecuteNonQueryECM(oDel)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Error in delete jumped files:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
End Try
|
||
|
||
If CURRENT_DOC_GUID <> 0 Then
|
||
Try
|
||
If _ItemWorked = False Then
|
||
'Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
|
||
'DatabaseFallback.ExecuteNonQueryECM(sql)
|
||
PRTF_PROFILE_FILES_WORK("FreeFile")
|
||
End If
|
||
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End If
|
||
Reset_CurrentReferences()
|
||
|
||
Try
|
||
DocumentViewerValidator.CloseDocument()
|
||
DocumentViewerValidator.Done()
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in DocumentViewerValidator.Done: {ex.Message}")
|
||
End Try
|
||
|
||
Try
|
||
_frmValidatorSearch.Close()
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
Sub Reset_CurrentReferences()
|
||
ValidatorLogger.Info("Attention: Reset_CurrentReferences....")
|
||
|
||
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
|
||
DT_AdditionalSearches_Resultset_Docs.Clear()
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Public Function Test_Additional_Data_Searches_Exist() As Boolean
|
||
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
|
||
Dim oDataResultCommand As String
|
||
Dim oDatatableDataResult As DataTable = Nothing
|
||
|
||
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
|
||
'Check whether DocData is there
|
||
Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID")
|
||
oDataResultCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND")
|
||
oDataResultCommand = clsPatterns.ReplaceAllValues(oDataResultCommand, PanelValidatorControl, True)
|
||
oDatatableDataResult = DatabaseFallback.GetDatatableWithConnection(oDataResultCommand, oConID)
|
||
End If
|
||
|
||
Dim oDataResultsExist As Boolean = False
|
||
|
||
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
|
||
If Not IsNothing(oDatatableDataResult) Then
|
||
If oDatatableDataResult.Rows.Count > 0 Then
|
||
oDataResultsExist = True
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
|
||
Return oDataResultsExist
|
||
Else
|
||
Return False
|
||
End If
|
||
End Function
|
||
Public Function Test_Additional_Doc_Searches_Exist() As Boolean
|
||
If DT_FILTERED_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
|
||
Dim oDocResultCommand As String
|
||
Dim oDatatableDocResult As DataTable = Nothing
|
||
|
||
'Check whether DocData is there
|
||
Dim oConID = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
|
||
oDocResultCommand = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
|
||
oDocResultCommand = clsPatterns.ReplaceAllValues(oDocResultCommand, PanelValidatorControl, True)
|
||
ValidatorLogger.Debug($"oDocResultCommand is: {oDocResultCommand}")
|
||
oDatatableDocResult = DatabaseFallback.GetDatatableWithConnection(oDocResultCommand, oConID)
|
||
|
||
Dim oDocResultsExist As Boolean = False
|
||
If Not IsNothing(oDatatableDocResult) Then
|
||
If oDatatableDocResult.Rows.Count > 0 Then
|
||
oDocResultsExist = True
|
||
DT_AdditionalSearches_Resultset_Docs = oDatatableDocResult
|
||
End If
|
||
End If
|
||
|
||
Return oDocResultsExist
|
||
Else
|
||
Return False
|
||
End If
|
||
End Function
|
||
|
||
Public Sub Load_Additional_Searches(Preload As Boolean)
|
||
Try
|
||
AdditionalDocResultsExist = Test_Additional_Doc_Searches_Exist()
|
||
AdditionalDataResultsExist = Test_Additional_Data_Searches_Exist()
|
||
'If Test_Additional_Searches_Exist() Then
|
||
If AdditionalDataResultsExist = True Or AdditionalDocResultsExist = True Then
|
||
Try
|
||
|
||
Dim oPnl1Collapsed As Boolean = True
|
||
Dim oPnl2Collapsed As Boolean = True
|
||
If AdditionalDataResultsExist = True Then
|
||
oPnl1Collapsed = False
|
||
Else
|
||
oPnl1Collapsed = True
|
||
End If
|
||
oPnl2Collapsed = False
|
||
Dim oConID As Int16
|
||
Dim oCommand As String
|
||
|
||
If Preload = False Then
|
||
If AdditionalDocResultsExist Then
|
||
|
||
_frmValidatorSearch.TabPreload(oPnl1Collapsed, oPnl2Collapsed, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count, DT_FILTERED_PROFILE_SEARCHES_DOC.Rows.Count,
|
||
BASEDATA_DT_PROFILE_SEARCHES_SQL, DT_FILTERED_PROFILE_SEARCHES_DOC)
|
||
_frmValidatorSearch._DTDocSearches = DT_FILTERED_PROFILE_SEARCHES_DOC
|
||
oConID = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
|
||
oCommand = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
|
||
oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True)
|
||
_frmValidatorSearch.RefreshTabDoc(oConID, oCommand, 0, DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("TAB_TITLE"))
|
||
End If
|
||
|
||
|
||
If AdditionalDataResultsExist Then
|
||
_frmValidatorSearch._DTSQLSearches = BASEDATA_DT_PROFILE_SEARCHES_SQL
|
||
oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID")
|
||
oCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND")
|
||
oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True)
|
||
_frmValidatorSearch.Refresh_Load_GridSQL(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("TAB_TITLE"))
|
||
|
||
End If
|
||
End If
|
||
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
bbtniRefreshSearches.Visibility = BarItemVisibility.Always
|
||
|
||
Else
|
||
ValidatorLogger.Debug("AdditionlSearhes result = false!")
|
||
bbtniRefreshSearches.Visibility = BarItemVisibility.Never
|
||
rbnPgGroupAttmt.Visible = False
|
||
End If
|
||
|
||
'Else
|
||
' Logger.Debug("Not loading AdditionalSearches 2...!")
|
||
' bbtniRefreshSearches.Visibility = BarItemVisibility.Never
|
||
'End If
|
||
Catch ex As Exception
|
||
MsgBox(ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
End Try
|
||
|
||
End Sub
|
||
Sub LoadSQLData(control As Control, pControlId As Integer)
|
||
Try
|
||
If TypeOf control Is Label Then
|
||
Exit Sub
|
||
End If
|
||
|
||
ValidatorLogger.Debug($"in LoadSQLData for ControlID [{pControlId}]...")
|
||
|
||
Dim oDTforControl As DataTable = DTCONTROLS_WITH_SQL.Clone()
|
||
Dim oExpression = $"GUID = {pControlId} AND PROFIL_ID = {CURRENT_ProfilGUID}"
|
||
DTCONTROLS_WITH_SQL.Select(oExpression).CopyToDataTable(oDTforControl, LoadOption.PreserveChanges)
|
||
|
||
If IsNothing(oDTforControl) Then Exit Sub
|
||
If oDTforControl.Rows.Count = 0 Then Exit Sub
|
||
|
||
For Each row As DataRow In oDTforControl.Rows
|
||
Dim name As String = row.Item("NAME")
|
||
Dim oGUID As String = row.Item("GUID")
|
||
Dim oReadOnly As Boolean = row.Item("READ_ONLY")
|
||
ValidatorLogger.Debug($"LoadSQLData for Control [{name}] with GUID [{oGUID}] ...")
|
||
'If clsPatterns.HasComplexPatterns(row.Item("SQL_UEBERPRUEFUNG")) Then
|
||
' Logger.Debug($"SQL [{row.Item("SQL_UEBERPRUEFUNG")}] has complex patterns - GUID: {oGUID}")
|
||
' Continue For
|
||
'End If
|
||
|
||
If oReadOnly = True Then
|
||
ValidatorLogger.Debug("Control for Index [{0}] is read-only. Continuing.")
|
||
Continue For
|
||
End If
|
||
|
||
If IsDBNull(row.Item("CONNECTION_ID")) Then
|
||
ValidatorLogger.Info($"No CONNECTION_ID for SQL-Data - oGUID: {oGUID}")
|
||
Continue For
|
||
End If
|
||
|
||
If IsDBNull(row.Item("SQL_UEBERPRUEFUNG")) Then
|
||
Continue For
|
||
End If
|
||
|
||
Dim oSQLStatement As String = row.Item("SQL_UEBERPRUEFUNG")
|
||
Dim oConnectionId As Integer = row.Item("CONNECTION_ID")
|
||
|
||
'If clsPatterns.HasComplexPatterns(sqlStatement) Then
|
||
' Continue For
|
||
'End If
|
||
If IsNothing(oSQLStatement) Then
|
||
Continue For
|
||
End If
|
||
'oSql = clsPatterns.ReplaceUserValues(sqlStatement, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
||
'oSql = clsPatterns.ReplaceInternalValues(oSql)
|
||
|
||
|
||
oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, PanelValidatorControl, True)
|
||
If IsNothing(oSQLStatement) Then
|
||
Continue For
|
||
End If
|
||
If clsPatterns.HasComplexPatterns(oSQLStatement) Then
|
||
ValidatorLogger.Warn($"Unexpected error LoadSQLData2 - sql Statement still has complex patterns! [{oSQLStatement}]")
|
||
Continue For
|
||
End If
|
||
|
||
Dim oDTContent As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLStatement, DatabaseType.ECM) With {
|
||
.ConnectionId = oConnectionId
|
||
})
|
||
|
||
If IsNothing(oDTContent) Then
|
||
ValidatorLogger.Warn($"SQL-Query [{oSQLStatement}] for control {control.Name} is invalid.")
|
||
Exit Sub
|
||
End If
|
||
Dim oValue
|
||
|
||
' Because LookupControl is a subtype of TextEdit,
|
||
' we need to check for LookupControl first!
|
||
If TypeOf control Is LookupControl3 Then
|
||
Try
|
||
Dim lookup As LookupControl3 = control
|
||
|
||
lookup.Properties.DataSource = oDTContent
|
||
lookup.Properties.ValueMember = oDTContent.Columns.Item(0).ColumnName
|
||
lookup.Properties.DisplayMember = oDTContent.Columns.Item(0).ColumnName
|
||
Catch ex As Exception
|
||
|
||
ValidatorLogger.Warn("Error in LookUpLoadSQLData: " & ex.Message)
|
||
End Try
|
||
|
||
ElseIf TypeOf control Is DevExpress.XtraEditors.TextEdit Or TypeOf control Is MemoEdit Then
|
||
Try
|
||
Dim firstRow As DataRow = oDTContent.Rows(0)
|
||
|
||
Dim value = firstRow.Item(0)
|
||
|
||
DirectCast(control, BaseEdit).EditValue = value
|
||
oValue = value
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn("Error in TextBoxLoadSQLData: " & ex.Message)
|
||
|
||
End Try
|
||
ElseIf TypeOf control Is Windows.Forms.ComboBox Then
|
||
Try
|
||
Dim oMyComboBox As Windows.Forms.ComboBox = control
|
||
Dim oselectedIndex = oMyComboBox.SelectedIndex
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyComboBox.Name} - Saving selected index {oselectedIndex}")
|
||
Dim list As New List(Of String)
|
||
|
||
For Each _row As DataRow In oDTContent.Rows
|
||
list.Add(_row.Item(0))
|
||
Next
|
||
|
||
oMyComboBox.DataSource = list
|
||
oMyComboBox.SelectedIndex = oselectedIndex
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn("Error in ComboBoxLoadSQLData: " & ex.Message)
|
||
End Try
|
||
|
||
ElseIf TypeOf control Is GridControl Then
|
||
Try
|
||
Dim dataGridView As GridControl = control
|
||
Dim oDataSource As DataTable = dataGridView.DataSource
|
||
|
||
If oDataSource Is Nothing OrElse oDataSource.Rows.Count = 0 Then
|
||
'dataGridView.DataSource = dt
|
||
|
||
Dim oDatatable As DataTable = oDTContent.Clone()
|
||
|
||
For Each oColumn As DataColumn In oDatatable.Columns
|
||
If oDataSource.Columns(oColumn.ColumnName) Is Nothing Then
|
||
'oDataSource.Columns.Add(oColumn)
|
||
oDataSource.Columns.Add(oColumn.ColumnName, oColumn.DataType)
|
||
End If
|
||
Next
|
||
|
||
For Each oRow As DataRow In oDTContent.Rows
|
||
oDataSource.ImportRow(oRow)
|
||
Next
|
||
|
||
dataGridView.DataSource = oDataSource
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn("Error in GridControlSQLData: " & ex.Message)
|
||
End Try
|
||
End If
|
||
Next
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"{ex.Message} - Loading ControlID: {pControlId}")
|
||
MsgBox("Error in LoadSQLData: " & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
End Try
|
||
End Sub
|
||
Private Function PreventNulletc(myObject As Object, pType As String)
|
||
If IsDBNull(myObject) Then
|
||
If pType = "String" Then
|
||
Return String.Empty
|
||
Else
|
||
Return 0
|
||
End If
|
||
|
||
ElseIf IsNothing(myObject) Then
|
||
If pType = "String" Then
|
||
Return String.Empty
|
||
Else
|
||
Return 0
|
||
End If
|
||
Else
|
||
Return myObject
|
||
End If
|
||
End Function
|
||
Sub Create_Controls()
|
||
If LOG_PERF Then PerformanceLogger.Info("Create_Controls")
|
||
|
||
Dim oControlInfo As String
|
||
Try
|
||
|
||
PanelValidatorControl.Controls.Clear()
|
||
Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC"
|
||
DT_CONTROLS = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_LANGUAGE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.FilterExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}",
|
||
.SortByColumn = "Y_LOC, X_LOC"
|
||
})
|
||
|
||
oSQL = $"SELECT IIF(LANG.CAPTION IS NULL,T.SPALTEN_HEADER,LANG.CAPTION) SPALTEN_HEADER_LANG, T.* from TBPM_CONTROL_TABLE T INNER JOIN TBPM_PROFILE_CONTROLS T1 ON T.CONTROL_ID = T1.GUID
|
||
LEFT JOIN (SELECT * FROM TBPM_CONTOL_TABLE_LANG WHERE LANG_CODE = '{USER_LANGUAGE}') LANG ON T.GUID = LANG.COL_ID WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY T.SEQUENCE"
|
||
DT_COLUMNS_GRID = DatabaseFallback.GetDatatable("TBPM_CONTROL_TABLE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID} AND LANG_CODE = '{USER_LANGUAGE}' ",
|
||
.SortByColumn = "SEQUENCE"
|
||
})
|
||
|
||
oSQL = "SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING, T.ADVANCED_LOOKUP from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND LEN(T.SQL_COMMAND) > 0 ORDER BY T.SEQUENCE"
|
||
'DT_COLUMNS_GRID_WITH_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE")
|
||
DT_COLUMNS_GRID_WITH_SQL = DatabaseFallback.GetDatatable("DTGRID_SQL_DEFINITION", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
|
||
.SortByColumn = "SEQUENCE"
|
||
})
|
||
|
||
oSQL = "SELECT
|
||
T1.GUID As CONTROL_ID,
|
||
T1.PROFIL_ID,
|
||
T.CONNECTION_ID,
|
||
T.SQL_COMMAND,
|
||
T.SPALTENNAME,
|
||
T.FORMATTYPE,
|
||
T.FORMATSTRING,
|
||
T.ADVANCED_LOOKUP
|
||
FROM
|
||
TBPM_CONTROL_TABLE T,
|
||
TBPM_PROFILE_CONTROLS T1
|
||
WHERE
|
||
T1.CONTROL_ACTIVE = 1 AND
|
||
T.CONTROL_ID = T1.GUID AND
|
||
T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND
|
||
LEN(T.SQL_COMMAND) > 0 AND
|
||
T.SQL_COMMAND LIKE '%{#CTRL%'
|
||
ORDER BY T.SEQUENCE"
|
||
|
||
'DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE")
|
||
DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER = DatabaseFallback.GetDatatable("DTGRID_SQL_DEFINITION", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
|
||
.SortByColumn = "SEQUENCE"
|
||
})
|
||
|
||
Dim oTabIndexCounter As Integer = 0
|
||
|
||
For Each oControlRow As DataRow In DT_CONTROLS.Rows
|
||
Dim oMyControl As Control
|
||
Dim oIndexName = oControlRow.Item("INDEX_NAME")
|
||
Dim oControlID = oControlRow.Item("GUID")
|
||
oControlInfo = $"CtrlID: {oControlID} - CtrlName: {oControlRow.Item("NAME")} - CtrlIndex: {oControlRow.Item("INDEX_NAME")}"
|
||
Try
|
||
If LOG_PERF Then PerformanceLogger.Info(oControlInfo + "")
|
||
Select Case oControlRow.Item("CTRL_TYPE").ToString.ToUpper
|
||
Case ClassControlCreator.PREFIX_TEXTBOX
|
||
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Textbox")
|
||
|
||
Try
|
||
oControlInfo = ClassControlCreator.PREFIX_TEXTBOX & "#" & oControlInfo
|
||
ValidatorLogger.Debug($"[{oControlInfo}] - TXT Try to create control...")
|
||
|
||
Dim txt As BaseEdit = ControlCreator.CreateExistingTextbox(oControlRow, False)
|
||
If oIndexName = "@@DISPLAY_ONLY" Then
|
||
txt.ReadOnly = True
|
||
End If
|
||
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
|
||
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
|
||
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
|
||
|
||
oMyControl = txt
|
||
ValidatorLogger.Debug($"[{oControlInfo}] - TXT Created!!")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Create_Controls TXT [{oControlInfo}]: {ex.Message}")
|
||
End Try
|
||
Case "LBL"
|
||
oControlInfo = "LBL#" & oControlInfo
|
||
oMyControl = ControlCreator.CreateExistingLabel(oControlRow, False)
|
||
Case "CMB"
|
||
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/ComboBox")
|
||
|
||
oControlInfo = "CMB#" & oControlInfo
|
||
ValidatorLogger.Debug($"[{oControlInfo}] - CMB Try to create control...")
|
||
If oControlRow.Item("READ_ONLY") Then
|
||
Dim cmbReadonly = ControlCreator.CreateExistingTextbox(oControlRow, False)
|
||
oMyControl = cmbReadonly
|
||
Else
|
||
Dim oComboBox = ControlCreator.CreateExistingCombobox(oControlRow, False)
|
||
|
||
AddHandler oComboBox.SelectedValueChanged, AddressOf OnCmbselectedIndex
|
||
AddHandler oComboBox.GotFocus, Sub(sender As Control, e As EventArgs)
|
||
If DirectCast(oComboBox.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
|
||
oComboBox.BackColor = Color.LightSteelBlue
|
||
End If
|
||
End Sub
|
||
AddHandler oComboBox.LostFocus, Sub(sender As Control, e As EventArgs)
|
||
If DirectCast(oComboBox.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
|
||
oComboBox.BackColor = Color.White
|
||
End If
|
||
End Sub
|
||
|
||
ValidatorLogger.Debug("In add_ComboBox - GUID: " & oControlID)
|
||
Dim oCONID As Integer
|
||
Try
|
||
oCONID = PreventNulletc(oControlRow.Item("CONNECTION_ID"), "Integer")
|
||
Catch ex As Exception
|
||
oCONID = 0
|
||
End Try
|
||
|
||
If oCONID > 0 Then
|
||
Dim oCommandSQL_UBPF
|
||
Try
|
||
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
|
||
Catch ex As Exception
|
||
oCommandSQL_UBPF = ""
|
||
End Try
|
||
ValidatorLogger.Debug("ConID <> String.Empty")
|
||
If oCONID > 0 And oCommandSQL_UBPF <> String.Empty Then
|
||
ValidatorLogger.Debug("ConID > 0 And commandsql <> String.Empty")
|
||
Try
|
||
oSQL = PreventNulletc(oControlRow.Item("SQL_UEBERPRUEFUNG"), "String")
|
||
|
||
If clsPatterns.HasOnlySimplePatterns(oSQL) Then
|
||
ValidatorLogger.Debug("SQL HasOnlySimplePatterns!")
|
||
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
|
||
oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True)
|
||
'Dim oDT As DataTable = ClassDatabase.Return_Datatable_ConId(oSQL, oCONID, $"CreateControls - oControlID: {oControlID}")
|
||
Dim oDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.ConnectionId = oCONID
|
||
})
|
||
|
||
If Not IsNothing(oDT) Then
|
||
For Each oRow As DataRow In oDT.Rows
|
||
oComboBox.Items.Add(oRow.Item(0))
|
||
Next
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in CMB GetValues SQL - Error: {ex.Message}")
|
||
End Try
|
||
Else
|
||
ValidatorLogger.Debug("Else Row 571")
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug("AListe Handling")
|
||
Dim AListe As String = oControlRow.Item("CHOICE_LIST")
|
||
ValidatorLogger.Debug("In add_ComboBox - AListe: " & AListe)
|
||
If AListe Is Nothing = False Then
|
||
'Dim liste = _windreamPM.GetValuesfromAuswahlliste(AListe)
|
||
Dim liste = WINDREAM.GetValuesfromAuswahlliste(AListe)
|
||
If liste IsNot Nothing Then
|
||
oComboBox.Items.Add("")
|
||
For Each index As String In liste
|
||
oComboBox.Items.Add(index)
|
||
Next
|
||
oComboBox.SelectedIndex = -1
|
||
Else
|
||
MsgBox("Resultliste windream is nothing!", MsgBoxStyle.Exclamation, AListe)
|
||
End If
|
||
Else
|
||
MsgBox("AListe from database is nothing!", MsgBoxStyle.Exclamation, AListe)
|
||
End If
|
||
End If
|
||
|
||
oMyControl = oComboBox
|
||
End If
|
||
|
||
ValidatorLogger.Debug($"[{oControlInfo}] - CMB CONTROL created")
|
||
|
||
Case "DTP"
|
||
oControlInfo = "DTP#" & oControlInfo
|
||
oMyControl = ControlCreator.CreateExistingDatepicker(oControlRow, False)
|
||
|
||
Case "DGV"
|
||
Dim dgv = ControlCreator.CreateExistingDataGridView(oControlRow, False)
|
||
|
||
AddHandler dgv.RowValidating, AddressOf onDGVRowValidating
|
||
|
||
oMyControl = dgv
|
||
|
||
Case "LOOKUP"
|
||
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Lookup")
|
||
|
||
oControlInfo = "LOOKUP#" & oControlInfo
|
||
Dim oMultiselect = oControlRow.Item("MULTISELECT")
|
||
Dim oReadonly = oControlRow.Item("READ_ONLY")
|
||
|
||
If oMultiselect = False And oReadonly = True Then
|
||
Dim lookupReadonly = ControlCreator.CreateExistingTextbox(oControlRow, False)
|
||
oMyControl = lookupReadonly
|
||
Else
|
||
Dim MyLookupControl As LookupControl3 = ControlCreator.CreateExistingLookupControl(oControlRow, False)
|
||
|
||
MyLookupControl.Properties.PreventDuplicates = oControlRow.Item("VKT_PREVENT_MULTIPLE_VALUES")
|
||
'MyLookupControl.Properties.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
|
||
MyLookupControl.Properties.MultiSelect = oMultiselect
|
||
|
||
If ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
|
||
MyLookupControl.Properties.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
|
||
End If
|
||
|
||
oMyControl = MyLookupControl
|
||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf LookupListChanged
|
||
|
||
'Wenn Multiselect false dann prüfen ob abhängiges Control
|
||
If CBool(oControlRow.Item("MULTISELECT")) = False Then
|
||
Dim oFilteredData As DataTable = DT_CONTROLS.Clone()
|
||
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||
If oFilteredData.Rows.Count >= 1 Then
|
||
ValidatorLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}")
|
||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
|
||
End If
|
||
|
||
oExpression = $"SQL_ENABLE like '%#CTRL#{oMyControl.Name}%'"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||
If oFilteredData.Rows.Count >= 1 Then
|
||
ValidatorLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}")
|
||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
|
||
End If
|
||
|
||
|
||
oFilteredData = DT_CONTROLS.Clone()
|
||
oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||
If oFilteredData.Rows.Count = 1 Then
|
||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set
|
||
End If
|
||
oFilteredData = DT_CONTROLS.Clone()
|
||
|
||
End If
|
||
|
||
AddHandler MyLookupControl.GotFocus, Sub(sender As Control, e As EventArgs)
|
||
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
|
||
MyLookupControl.BackColor = Color.LightSteelBlue
|
||
End If
|
||
End Sub
|
||
AddHandler MyLookupControl.LostFocus, Sub(sender As Control, e As EventArgs)
|
||
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
|
||
MyLookupControl.BackColor = Color.White
|
||
End If
|
||
End Sub
|
||
End If
|
||
|
||
|
||
|
||
'Return filteredData
|
||
'AddHandler lookup.Leave, AddressOf onLookUp0
|
||
|
||
Case "CHK"
|
||
oControlInfo = "CHK#" & oControlInfo
|
||
oMyControl = ControlCreator.CreateExisingCheckbox(oControlRow, False)
|
||
|
||
Dim mycheckbox As CheckBox = oMyControl
|
||
AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange
|
||
|
||
|
||
Case "TABLE"
|
||
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Table")
|
||
|
||
oControlInfo = "TABLE#" & oControlInfo
|
||
|
||
Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone()
|
||
Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
|
||
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
If oFilteredDatatable.Rows.Count >= 1 Then
|
||
ValidatorLogger.Debug("We got a DTGRID_COLUMNS definition for [{0}] ", oControlInfo)
|
||
Else
|
||
ValidatorLogger.Debug("DTGRID_COLUMNS definition for control [{0}] does not contain any rows!", oControlInfo)
|
||
Continue For
|
||
End If
|
||
|
||
Dim oGrid = ControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False)
|
||
oMyControl = oGrid
|
||
'AddHandler oGrid.Views(0).c AddressOf GridView_CustomColumnDisplayText
|
||
|
||
Case "LINE"
|
||
|
||
oMyControl = ControlCreator.CreateExistingLine(oControlRow, False)
|
||
Case "BUTTON"
|
||
Dim obutton = ControlCreator.CreateExistingButton(oControlRow, False)
|
||
|
||
AddHandler obutton.Click, AddressOf onCustomButtonClick
|
||
oMyControl = obutton
|
||
End Select
|
||
ValidatorLogger.Debug($"[{oControlInfo}]: End of Select...")
|
||
If TypeOf oMyControl IsNot Label Then
|
||
|
||
listofControls.Add(oMyControl.Name)
|
||
If first_control Is Nothing Then
|
||
' If Not (oMyControl.GetType = GetType(LookupControl3) Or oMyControl.GetType = GetType(Button)) Then
|
||
first_control = oMyControl
|
||
'End If
|
||
End If
|
||
last_control = oMyControl
|
||
oMyControl.TabIndex = oTabIndexCounter
|
||
End If
|
||
' oMyControl.Tag = CInt(oControlRow.Item("GUID"))
|
||
PanelValidatorControl.Controls.Add(oMyControl)
|
||
|
||
oTabIndexCounter += 1
|
||
Catch ex As Exception
|
||
Dim st As New StackTrace(True)
|
||
st = New StackTrace(ex, True)
|
||
'Logger.Error(ex)
|
||
Dim omsg = $"Unexpected Error in Create_Controls (Select Case) [{oControlInfo}] - ERROR: {ex.Message}"
|
||
ValidatorLogger.Warn(omsg)
|
||
If DEBUG = False Then MsgBox(omsg, MsgBoxStyle.Critical, "Attention:")
|
||
End Try
|
||
|
||
|
||
Next
|
||
|
||
ValidatorLogger.Debug("Create_Controls finished!")
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
If DEBUG = False Then MsgBox("Error CreateControls: " & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||
End Try
|
||
End Sub
|
||
Private Sub GridControlColumnWidthChanged(sender As System.Object, e As System.EventArgs)
|
||
Try
|
||
Dim oMyGridView As DevExpress.XtraGrid.Views.Grid.GridView = sender
|
||
Dim oControlID = DirectCast(oMyGridView.GridControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
SaveDevExpressGridControl_Layout(CURRENT_ProfilGUID, oControlID, oMyGridView)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
Sub Clear_all_Input()
|
||
For Each inctrl As Control In Me.PanelValidatorControl.Controls
|
||
Dim Type As Type = inctrl.GetType
|
||
Select Case True
|
||
Case Type = GetType(DevExpress.XtraEditors.TextEdit) Or Type = GetType(MemoEdit)
|
||
'inctrl.Text = ""
|
||
DirectCast(inctrl, BaseEdit).EditValue = Nothing
|
||
Case Type = GetType(Windows.Forms.ComboBox)
|
||
Dim cmb As Windows.Forms.ComboBox = inctrl
|
||
cmb.SelectedIndex = -1
|
||
Case Type = GetType(DataGridView)
|
||
Dim dgv As DataGridView = inctrl
|
||
If dgv.Rows.Count > 0 Then
|
||
dgv.Rows.Clear()
|
||
End If
|
||
End Select
|
||
Next
|
||
|
||
Focus_FirstControl()
|
||
End Sub
|
||
|
||
Public Sub OnTextBoxFocus(sender As Object, e As EventArgs)
|
||
Dim oTextbox As BaseEdit = sender
|
||
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
|
||
|
||
If oMeta.ReadOnly = False Then
|
||
oTextbox.BackColor = Color.LightSteelBlue
|
||
oTextbox.ForeColor = GraphicsEx.GetContrastedColor(Color.LightSteelBlue)
|
||
oTextbox.SelectAll()
|
||
End If
|
||
End Sub
|
||
|
||
Public Sub OnTextBoxLostFocus(sender As System.Object, e As System.EventArgs)
|
||
Dim oTextbox As BaseEdit = sender
|
||
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
|
||
|
||
If oMeta.ReadOnly = False Then
|
||
oTextbox.BackColor = oMeta.BackColor
|
||
oTextbox.ForeColor = GraphicsEx.GetContrastedColor(oMeta.BackColor)
|
||
End If
|
||
|
||
SetControlValues_FromControl(oTextbox)
|
||
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
End Sub
|
||
|
||
Private Function GetControlID(ByVal PROFILEID As Integer, Controlname As String)
|
||
For Each oROW As DataRow In DTVWCONTROL_INDEX.Rows
|
||
|
||
Next
|
||
End Function
|
||
|
||
|
||
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
|
||
If _ControlHandleStarted = True Then
|
||
_ControlHandleStarted = False
|
||
Exit Sub
|
||
End If
|
||
|
||
Dim oTextBox As BaseEdit = sender
|
||
If oTextBox.Text <> String.Empty And _FormClosing = False And _Indexe_Loaded = True And oTextBox.Height < 25 Then
|
||
|
||
If (e.KeyCode = Keys.Return) Or (e.KeyCode = Keys.Tab) Or (e.KeyCode = Keys.Enter) Then
|
||
Try
|
||
Dim CONTROL_ID = DirectCast(oTextBox.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim oSql = String.Format("SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oTextBox.Name)
|
||
Dim DTCONTROLS_UEBP As DataTable
|
||
DTCONTROLS_UEBP = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_SQL_UEP", New GetDatatableOptions(oSql, DatabaseType.ECM) With {
|
||
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{oTextBox.Name}%'"
|
||
})
|
||
|
||
If Not IsNothing(DTCONTROLS_UEBP) AndAlso DTCONTROLS_UEBP.Rows.Count > 0 Then
|
||
For Each oRow As DataRow In DTCONTROLS_UEBP.Rows
|
||
Try
|
||
Dim oControlName = oRow.Item("NAME").ToString
|
||
Dim oSqlStatement = oRow.Item("SQL_UEBERPRUEFUNG")
|
||
Dim oConnectionId = oRow.Item("CONNECTION_ID")
|
||
|
||
If Not IsDBNull(oSqlStatement) And Not IsDBNull(oConnectionId) Then
|
||
oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, PanelValidatorControl, True)
|
||
|
||
_DependingControl_In_Action = True
|
||
Depending_Control_Set_Result(oControlName, oSqlStatement, oConnectionId)
|
||
_DependingControl_In_Action = False
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Display SQL result for control: " & oRow.Item("NAME") & " - ERROR: " & ex.Message)
|
||
End Try
|
||
|
||
Next
|
||
|
||
End If
|
||
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
|
||
End Try
|
||
If oTextBox.Name <> last_control.Name Then
|
||
SendKeys.Send("{TAB}")
|
||
_ControlHandleStarted = True
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
End Sub
|
||
Private Sub onCustomButtonClick(sender As System.Object, e As System.EventArgs)
|
||
Try
|
||
Cursor = Cursors.WaitCursor
|
||
Dim oButton As Windows.Forms.Button = sender
|
||
Dim oControlID = DirectCast(oButton.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim oSQL = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL_UEBERPRUEFUNG")
|
||
If IsNothing(oSQL) Then
|
||
ValidatorLogger.Warn("onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING")
|
||
Exit Sub
|
||
End If
|
||
|
||
If Check_UpdateIndexe() = False Then
|
||
ValidatorLogger.Warn("onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click")
|
||
Exit Sub
|
||
End If
|
||
Override_SQLCommand = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL2")
|
||
If IsNothing(Override_SQLCommand) Then
|
||
Override_SQLCommand = ""
|
||
End If
|
||
oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True)
|
||
Override_SQLCommand = clsPatterns.ReplaceAllValues(Override_SQLCommand, PanelValidatorControl, True)
|
||
Dim oDT_ACTIONS As DataTable = DatabaseFallback.GetDatatableECM(oSQL) ', "onCustomButtonClick")
|
||
If IsNothing(oDT_ACTIONS) Then
|
||
MsgBox("Something went wrong in custom action - Please check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
Exit Sub
|
||
ElseIf oDT_ACTIONS.Rows.Count = 0 Then
|
||
MsgBox("Something went wrong in custom action (No row) - Please check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
Exit Sub
|
||
End If
|
||
Dim oAction
|
||
Dim oControlName
|
||
Dim oQuestion
|
||
Dim oTitle
|
||
Dim oCaption
|
||
Dim oColor
|
||
Try
|
||
oAction = oDT_ACTIONS?.Rows(0).Item("ActionType")
|
||
Catch ex As Exception
|
||
oAction = ""
|
||
End Try
|
||
Try
|
||
oControlName = oDT_ACTIONS?.Rows(0).Item("Controlname")
|
||
Catch ex As Exception
|
||
oControlName = ""
|
||
End Try
|
||
Try
|
||
oQuestion = oDT_ACTIONS?.Rows(0).Item("Question")
|
||
Catch ex As Exception
|
||
oQuestion = ""
|
||
End Try
|
||
Try
|
||
oTitle = oDT_ACTIONS?.Rows(0).Item("Title")
|
||
Catch ex As Exception
|
||
oTitle = ""
|
||
End Try
|
||
Try
|
||
oCaption = oDT_ACTIONS?.Rows(0).Item("CaptionButton").ToString
|
||
Catch ex As Exception
|
||
oCaption = ""
|
||
End Try
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDT_ACTIONS?.Rows(0).Item("Color"))
|
||
Catch ex As Exception
|
||
oColor = ""
|
||
End Try
|
||
Try
|
||
OverrideAll = oDT_ACTIONS?.Rows(0).Item("OverrideAll")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Could not set OverrideAll {ex.Message}")
|
||
OverrideAll = False
|
||
End Try
|
||
If OverrideAll = True Then
|
||
ValidatorLogger.Info($"CURRENT_DOC_ID: {CURRENT_DOC_ID} - OverrideAll will be in Action!")
|
||
End If
|
||
ValidatorLogger.Debug($"ActionType [{oAction}]")
|
||
Select Case oAction.ToString.ToUpper
|
||
Case "SetButton".ToUpper
|
||
btnSave.Text = oCaption & " (F2)"
|
||
btnSave.Appearance.BackColor = oColor
|
||
Case "Override_Question".ToUpper
|
||
If oQuestion <> "" Then
|
||
Dim result As MsgBoxResult
|
||
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
||
If result = MsgBoxResult.Yes Then
|
||
Override = True
|
||
Finish_WFStep()
|
||
End If
|
||
End If
|
||
Case "Update_Single_Control".ToUpper
|
||
Dim oResult1 As Boolean = True
|
||
If oQuestion <> "" Then
|
||
Dim result As MsgBoxResult
|
||
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
||
If result = MsgBoxResult.No Then
|
||
oResult1 = False
|
||
End If
|
||
Else
|
||
|
||
End If
|
||
If oResult1 = True Then
|
||
Dim oREsult As Boolean = True
|
||
If Override_SQLCommand <> "" Then
|
||
oREsult = DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
|
||
End If
|
||
If oREsult = True Then
|
||
Reload_Controls(oControlName)
|
||
Else
|
||
MsgBox("Unexpected error in Button Refresh_Controls - Check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
End If
|
||
End If
|
||
Case "Update_Controls".ToUpper
|
||
If oQuestion <> "" Then
|
||
Dim result As MsgBoxResult
|
||
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
||
If result = MsgBoxResult.Yes Then
|
||
Dim oREsult As Boolean = True
|
||
If Override_SQLCommand <> "" Then
|
||
oREsult = DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
|
||
End If
|
||
If oREsult = True Then
|
||
SetStatusLabel("Refreshed single control", "Yellow")
|
||
FillIndexValues(False)
|
||
Else
|
||
MsgBox("Unexpected error in Button Refresh_Controls - Check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
Case "Override_Direct".ToUpper
|
||
Override = True
|
||
If Check_UpdateIndexe() = True Then
|
||
Finish_WFStep(False)
|
||
End If
|
||
|
||
Case "Override incFinal".ToUpper
|
||
If Check_UpdateIndexe() = True Then
|
||
Finish_WFStep(False)
|
||
End If
|
||
Case "MsgboxResult".ToUpper
|
||
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||
Case Else
|
||
MsgBox($"No configured action provided for onCustomButtonClick [{oAction}]", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
ValidatorLogger.Warn($"No configured action provided for onCustomButtonClick [{oAction}]")
|
||
End Select
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
|
||
End Try
|
||
Cursor = Cursors.Default
|
||
|
||
|
||
End Sub
|
||
|
||
Public Sub onDGVRowValidating(ByVal sender As Object, ByVal e As DataGridViewCellCancelEventArgs)
|
||
Dim dgv As DataGridView = sender
|
||
Try
|
||
Dim CONTROL_ID = DirectCast(dgv.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
|
||
Dim DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
|
||
.FilterExpression = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
|
||
})
|
||
|
||
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
|
||
For Each ROW As DataRow In DT.Rows
|
||
Try
|
||
Dim displayboxname = ROW.Item("NAME").ToString
|
||
If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then
|
||
Dim sql_Statement = ROW.Item("SQL_UEBERPRUEFUNG")
|
||
Dim cellvalue = dgv.Rows(dgv.Rows.Count - 2).Cells(0).Value.ToString()
|
||
sql_Statement = sql_Statement.ToString.Replace(dgv.Name, cellvalue)
|
||
'Dim resultDT As DataTable = ClassDatabase.Return_Datatable_ConId(sql_Statement, ROW.Item(1), $"oControlID[{CONTROL_ID}]")
|
||
Dim resultDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sql_Statement, DatabaseType.ECM) With {
|
||
.ConnectionId = ROW.Item("CONNECTION_ID")
|
||
})
|
||
|
||
If resultDT.Rows.Count >= 1 Then
|
||
'Nur dediziert einen Wert zurückerhalten
|
||
For Each row1 As DataRow In resultDT.Rows
|
||
Dim result = row1.Item(0)
|
||
If Not IsNothing(result) Then
|
||
PanelValidatorControl.Controls(displayboxname).Text = result.ToString
|
||
|
||
Exit For
|
||
Else
|
||
PanelValidatorControl.Controls(displayboxname).Text = "RESULT = NOTHING"
|
||
|
||
Exit For
|
||
End If
|
||
Next
|
||
Else
|
||
PanelValidatorControl.Controls(displayboxname).Text = "NO RESULT"
|
||
|
||
End If
|
||
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
|
||
End Try
|
||
|
||
Next
|
||
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
|
||
End Try
|
||
|
||
End Sub
|
||
Public Sub onLookUpselectedValue(sender As Object, SelectedValues As List(Of String))
|
||
Try
|
||
ValidatorLogger.Debug("onLookUpselectedValue")
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
|
||
|
||
Try
|
||
If Not IsNothing(SelectedValues) Then
|
||
If SelectedValues.Count = 1 Then
|
||
LookupControl_DependingControls(oLookup, SelectedValues)
|
||
LookupControl_EnablingControls(oLookup, SelectedValues)
|
||
LookupControl_DependingColumn(oLookup, SelectedValues)
|
||
Else
|
||
ValidatorLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn("Unexpected error in onLookUpselectedValue - " + ex.Message)
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
End Sub
|
||
Public Sub LookupListChanged(sender As Object, SelectedValues As List(Of String))
|
||
If _FormLoaded = False Or PanelValidatorControl.Enabled = False Then
|
||
Exit Sub
|
||
End If
|
||
|
||
Try
|
||
Dim oLookup As RepositoryItemLookupControl3 = sender
|
||
listChangedLookup.Add(oLookup.Name)
|
||
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
'Verschiebt den Fokus auf das nächste Control
|
||
Dim oFound As Boolean = False
|
||
For Each oString As String In listofControls
|
||
If oString = oLookup.Name And oFound = False Then
|
||
oFound = True
|
||
ElseIf oFound = True Then
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If oControl.Name = oString Then
|
||
oControl.Focus()
|
||
Exit For
|
||
End If
|
||
Next
|
||
Exit For
|
||
End If
|
||
Next
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
Public Sub onCheckBox_CheckedChange(sender As Object, e As EventArgs)
|
||
ValidatorLogger.Debug("onCheckBox_CheckedChange")
|
||
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
Dim oCheckbox As CheckBox = sender
|
||
Try
|
||
CheckBox_DependingControls(oCheckbox)
|
||
Checkbox_EnablingControls(oCheckbox)
|
||
CheckBox_DependingColumn(oCheckbox)
|
||
SetControlValues_FromControl(oCheckbox)
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
Public Sub onLookUpselectedValue_Control2Set(sender As Object, SelectedValues As List(Of String))
|
||
|
||
If _FormLoaded = False Or PanelValidatorControl.Enabled = False Then
|
||
Exit Sub
|
||
End If
|
||
ValidatorLogger.Debug("onLookUpselectedValue_Control2Set")
|
||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
|
||
SetControlValues_FromControl(oLookup)
|
||
End Sub
|
||
|
||
Private Sub SetControlValues_FromControl(pControl As Control)
|
||
Dim oControlName = pControl.Name
|
||
Dim oControlMeta = DirectCast(pControl.Tag, ClassControlCreator.ControlMetadata)
|
||
Dim oControlID = oControlMeta.Guid
|
||
|
||
If _SetControlValue_In_Action = True Then
|
||
ValidatorLogger.Debug("SetControlValue in action. Exiting.")
|
||
Exit Sub
|
||
End If
|
||
|
||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
DT_CONTROLS.
|
||
Select($"GUID = {oControlID} and LEN(SET_CONTROL_DATA) > 0").
|
||
CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
|
||
If oFilteredDatatable.Rows.Count < 1 Then
|
||
ValidatorLogger.Debug("SET_CONTROL_DATA is empty for control [{0}]. Exiting.", oControlName)
|
||
Exit Sub
|
||
End If
|
||
|
||
Dim oRow As DataRow = oFilteredDatatable.Rows.Item(0)
|
||
Dim oControlGUID2Set = oControlID
|
||
Dim oControlname2Set = oRow.Item("NAME")
|
||
ValidatorLogger.Debug($"Workin on SetControLValue for {oControlname2Set} ...")
|
||
|
||
Dim oConnectionId = oRow.ItemEx("CONNECTION_ID", -1)
|
||
Dim oControlDataSql = oRow.ItemEx("SET_CONTROL_DATA", String.Empty)
|
||
|
||
If oConnectionId = -1 Or oControlDataSql = String.Empty Then
|
||
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||
Exit Sub
|
||
End If
|
||
|
||
oControlDataSql = clsPatterns.ReplaceAllValues(oControlDataSql, PanelValidatorControl, True)
|
||
|
||
|
||
Dim oControlDataResult As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oControlDataSql, DatabaseType.ECM) With {
|
||
.ConnectionId = oConnectionId
|
||
})
|
||
|
||
If oControlDataResult Is Nothing Then
|
||
Exit Sub
|
||
End If
|
||
Dim oButtonFinishSet As Boolean = False
|
||
For Each oResultRow As DataRow In oControlDataResult.Rows
|
||
Try
|
||
_SetControlValue_In_Action = True
|
||
|
||
Dim oControl2Set = oResultRow.ItemEx("Control2Set", String.Empty)
|
||
Dim oControlCaption = oResultRow.ItemEx("Caption", String.Empty)
|
||
Dim oControlBackColor = Color.FromName(oResultRow.ItemEx("BackgroundColor", "Transparent"))
|
||
Dim oControlFontColor = Color.FromName(oResultRow.ItemEx("FontColor", "Black"))
|
||
Dim oControlTextOption = oResultRow.ItemEx("TextOption", "Replace")
|
||
|
||
If oControl2Set.ToString.ToUpper = "BTN_FINISH".ToUpper Then
|
||
btnSave.Text = oControlCaption & " (F2)"
|
||
btnSave.Appearance.BackColor = oControlBackColor
|
||
btnSave.Appearance.ForeColor = oControlFontColor
|
||
oButtonFinishSet = True
|
||
_SetControlValue_In_Action = False
|
||
Continue For
|
||
End If
|
||
|
||
Dim oFound As Boolean = False
|
||
Dim oControlId2Set As Integer
|
||
|
||
'If Not Integer.TryParse(oControl2Set, oControlId2Set) Then
|
||
' Logger.Warn("Careful: the oControl2Set contains no CONTROL_GUID")
|
||
' Exit Sub
|
||
'End If
|
||
|
||
Dim oControlObject2Set = PanelValidatorControl.Controls.Cast(Of Control).
|
||
Where(Function(c)
|
||
Dim oMeta = DirectCast(c.Tag, ClassControlCreator.ControlMetadata)
|
||
Return oControl2Set = oMeta.Guid OrElse oControl2Set = oMeta.Name
|
||
End Function).FirstOrDefault()
|
||
|
||
If oControlObject2Set IsNot Nothing Then
|
||
|
||
Dim oControl As Control = oControlObject2Set
|
||
Dim oMeta As ClassControlCreator.ControlMetadata = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
|
||
|
||
ValidatorLogger.Debug($"Got the Control2Set: {oControlId2Set}..Setting the values..")
|
||
|
||
|
||
Select Case True
|
||
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
|
||
Try
|
||
If oControlTextOption = "Replace" Then
|
||
oControl.Text = oControlCaption
|
||
Else
|
||
oControl.Text &= oControlCaption
|
||
End If
|
||
|
||
oControl.BackColor = oControlBackColor
|
||
oControl.ForeColor = oControlFontColor
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while Control2Set (TextEdit): {ex.Message}")
|
||
End Try
|
||
|
||
|
||
Case oControl.GetType() = GetType(LookupControl3)
|
||
Try
|
||
Dim oDependingLookup As LookupControl3 = oControl
|
||
If oDependingLookup.Properties.MultiSelect = True Then
|
||
If oControlTextOption = "Replace" Then
|
||
oDependingLookup.Properties.SelectedValues = New List(Of String) From {oControlCaption}
|
||
Else
|
||
oDependingLookup.Properties.SelectedValues.Add(oControlCaption)
|
||
End If
|
||
Else
|
||
oDependingLookup.Properties.SelectedValues = New List(Of String) From {oControlCaption}
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while Control2Set (LookupControl3): {ex.Message}")
|
||
End Try
|
||
|
||
Case oControl.GetType() = GetType(Windows.Forms.ComboBox)
|
||
Try
|
||
Dim oDependingCombobox As Windows.Forms.ComboBox = oControl
|
||
' Versuche, den Index des Eintrags zu finden, der genau dem String entspricht
|
||
Dim oIndex As Integer = oDependingCombobox.FindStringExact(oControlCaption)
|
||
|
||
If oIndex <> -1 Then
|
||
' Wenn ein gültiger Index gefunden wurde, setze ihn als ausgewählten Index
|
||
oDependingCombobox.SelectedIndex = oIndex
|
||
Try
|
||
oDependingCombobox.BackColor = oControlBackColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Try
|
||
oDependingCombobox.ForeColor = oControlFontColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
|
||
Else
|
||
' Optional: Handle den Fall, dass der String nicht gefunden wurde
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while Control2Set (Combobox): {ex.Message}")
|
||
End Try
|
||
|
||
|
||
|
||
Case oControl.GetType() = GetType(Windows.Forms.CheckBox)
|
||
Dim oBitValue As Boolean
|
||
Try
|
||
oBitValue = CBool(oControlCaption)
|
||
Dim oDependingCheckbox As Windows.Forms.CheckBox = oControl
|
||
oDependingCheckbox.Checked = oBitValue
|
||
Try
|
||
oDependingCheckbox.BackColor = oControlBackColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Try
|
||
oDependingCheckbox.ForeColor = oControlFontColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while Control2Set (Checkbox): {ex.Message}")
|
||
End Try
|
||
|
||
|
||
Case Else
|
||
ValidatorLogger.Warn("SetControlData used on unsupported control")
|
||
|
||
End Select
|
||
|
||
oFound = True
|
||
'Exit For
|
||
End If
|
||
|
||
If oFound = False Then
|
||
ValidatorLogger.Debug($"Could not find the Control2Set with ID {oControlGUID2Set} on panel!!!")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Warn($"Error while Control2Set for [{oControlname2Set}]: " & ex.Message)
|
||
Finally
|
||
_SetControlValue_In_Action = False
|
||
End Try
|
||
Next
|
||
End Sub
|
||
Private Sub LookupControl_DependingControls(LookupControl As LookupControl3, SelectedValues As List(Of String))
|
||
Dim oLOOKUPValue = SelectedValues.Item(0
|
||
)
|
||
Dim oLOOKUPName = LookupControl.Name
|
||
ValidatorLogger.Debug($"oLOOKUPValue is [{oLOOKUPValue}]!")
|
||
Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oLOOKUPName}%'"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
If oFilteredDatatable.Rows.Count > 0 Then
|
||
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
|
||
Else
|
||
ValidatorLogger.Debug($"Sorry NO depending controls!!")
|
||
End If
|
||
For Each oRowDependingControl As DataRow In oFilteredDatatable.Rows
|
||
Dim oDEPENDING_GUID = oRowDependingControl.Item("GUID")
|
||
Dim oDEPENDING_CtrlName = oRowDependingControl.Item("NAME")
|
||
ValidatorLogger.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oLOOKUPName}..")
|
||
If _DependingControl_In_Action = True Then
|
||
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
|
||
Exit Sub
|
||
End If
|
||
If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then
|
||
Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG"))
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
_DependingControl_In_Action = True
|
||
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"LookupControl_DependingControls - oControlID: {oControlID}")
|
||
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
|
||
})
|
||
Try
|
||
Dim oFound As Boolean = False
|
||
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
|
||
oFound = True
|
||
ValidatorLogger.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
|
||
Select Case True
|
||
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
|
||
Try
|
||
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
|
||
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
|
||
Try
|
||
'oControl.Text = oValue
|
||
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
|
||
End Try
|
||
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
|
||
End Try
|
||
|
||
Dim oColor
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||
oControl.BackColor = oColor
|
||
Catch ex As Exception
|
||
oControl.BackColor = Color.White
|
||
End Try
|
||
Try
|
||
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
|
||
btnSave.Text = btntext & " (F2)"
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
|
||
btnSave.BackColor = oColor
|
||
Catch ex As Exception
|
||
btnSave.BackColor = Color.Transparent
|
||
End Try
|
||
Case oControl.GetType() = GetType(LookupControl3)
|
||
Dim oDependingLookup As LookupControl3 = oControl
|
||
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
|
||
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||
Case oControl.GetType() = GetType(GridControl)
|
||
'ClassControlCreator.GridTables
|
||
Case oControl.GetType() = GetType(CheckBox)
|
||
Try
|
||
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
|
||
Dim oDependingChk As CheckBox = oControl
|
||
oDependingChk.CheckState = oCheckState
|
||
Dim oColor
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||
oControl.BackColor = oColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlLOOKUP: {ex.Message}")
|
||
End Try
|
||
|
||
|
||
End Select
|
||
_DependingControl_In_Action = False
|
||
Exit For
|
||
End If
|
||
|
||
Next
|
||
|
||
If oFound = False Then
|
||
ValidatorLogger.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
|
||
_DependingControl_In_Action = False
|
||
End Try
|
||
SendKeys.Send("{TAB}")
|
||
_ControlHandleStarted = True
|
||
Else
|
||
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||
End If
|
||
|
||
|
||
Next
|
||
If oFilteredDatatable.Rows.Count = 1 Then
|
||
|
||
|
||
End If
|
||
End Sub
|
||
Private Sub CheckBox_DependingControls(pCheckbox As CheckBox)
|
||
Dim oCheckboxname = pCheckbox.Name
|
||
ValidatorLogger.Debug($"pCheckStateTrue [{pCheckbox.Checked}]!")
|
||
Dim oControlID = DirectCast(pCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oCheckboxname}%'"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
If oFilteredDatatable.Rows.Count > 0 Then
|
||
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
|
||
Else
|
||
ValidatorLogger.Debug($"Sorry NO depending controls!!")
|
||
End If
|
||
For Each oRowDependingControl As DataRow In oFilteredDatatable.Rows
|
||
Dim oDEPENDING_GUID = oRowDependingControl.Item("GUID")
|
||
Dim oDEPENDING_CtrlName = oRowDependingControl.Item("NAME")
|
||
ValidatorLogger.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oCheckboxname}..")
|
||
If _DependingControl_In_Action = True Then
|
||
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
|
||
Exit Sub
|
||
End If
|
||
If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then
|
||
Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG"))
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
_DependingControl_In_Action = True
|
||
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"CheckBox_DependingControls - oControlID: {oControlID}")
|
||
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
|
||
})
|
||
|
||
Try
|
||
Dim oFound As Boolean = False
|
||
'Dim oDependingLookup As LookupControl3 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault()
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
|
||
oFound = True
|
||
ValidatorLogger.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
|
||
Select Case True
|
||
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
|
||
Try
|
||
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
|
||
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
|
||
Try
|
||
'oControl.Text = oValue
|
||
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
|
||
End Try
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
|
||
End Try
|
||
|
||
Dim oColor
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||
oControl.BackColor = oColor
|
||
Catch ex As Exception
|
||
oControl.BackColor = Color.White
|
||
End Try
|
||
Try
|
||
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
|
||
btnSave.Text = btntext & " (F2)"
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
|
||
btnSave.BackColor = oColor
|
||
Catch ex As Exception
|
||
btnSave.BackColor = Color.Transparent
|
||
End Try
|
||
Case oControl.GetType = GetType(LookupControl3)
|
||
Dim oDependingLookup As LookupControl3 = oControl
|
||
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
|
||
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||
Case oControl.GetType = GetType(GridControl)
|
||
'ClassControlCreator.GridTables
|
||
Case oControl.GetType = GetType(CheckBox)
|
||
Try
|
||
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
|
||
Dim oDependingChk As CheckBox = oControl
|
||
oDependingChk.CheckState = oCheckState
|
||
Dim oColor
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||
oControl.BackColor = oColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlCHK: {ex.Message}")
|
||
End Try
|
||
|
||
|
||
End Select
|
||
_DependingControl_In_Action = False
|
||
Exit For
|
||
End If
|
||
|
||
Next
|
||
If oFound = False Then
|
||
ValidatorLogger.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
|
||
_DependingControl_In_Action = False
|
||
End Try
|
||
SendKeys.Send("{TAB}")
|
||
_ControlHandleStarted = True
|
||
Else
|
||
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||
End If
|
||
Next
|
||
End Sub
|
||
Private Sub LookupControl_EnablingControls(LookupControl As LookupControl3, SelectedValues As List(Of String))
|
||
Dim oLOOKUPValue = SelectedValues.Item(0)
|
||
ValidatorLogger.Debug($"LookupControl_EnablingControls [{LookupControl.Name()}] - oLOOKUPValue is [{oLOOKUPValue}]!")
|
||
Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Controls2beEnabled(LookupControl.Name)
|
||
|
||
End Sub
|
||
Private Sub Checkbox_EnablingControls(pCheckbox As CheckBox)
|
||
Dim oControlID = DirectCast(pCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Controls2beEnabled(pCheckbox.Name)
|
||
|
||
End Sub
|
||
Private Sub LookupControl_DependingColumn(LookupControl As LookupControl3, SelectedValues As List(Of String))
|
||
Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
|
||
Dim oExpression = $"SQL_COMMAND like '%#CTRL#{LookupControl.Name}%'"
|
||
DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges)
|
||
If oSQLColumnDatatable.Rows.Count > 0 Then
|
||
For Each oRow As DataRow In oSQLColumnDatatable.Rows
|
||
Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID")
|
||
Dim oCONNID = oRow.Item("CONNECTION_ID")
|
||
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
|
||
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
|
||
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
|
||
If _DependingColumn_In_Action = True Then
|
||
Exit Sub
|
||
End If
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
|
||
_DependingColumn_In_Action = True
|
||
Try
|
||
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"LookupControl_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}")
|
||
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = oCONNID
|
||
})
|
||
|
||
If Not IsNothing(oDTDEPENDING_RESULT) Then
|
||
ValidatorLogger.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ")
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
|
||
If oControlId = oDEPENDING_CONTROL_ID Then
|
||
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
|
||
_DependingColumn_In_Action = False
|
||
Exit For
|
||
End If
|
||
Next
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
_DependingColumn_In_Action = False
|
||
End Try
|
||
Next
|
||
End If
|
||
End Sub
|
||
Private Sub CheckBox_DependingColumn(pCheckbox As CheckBox)
|
||
Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
|
||
Dim oExpression = $"SQL_COMMAND like '%#CTRL#{pCheckbox.Name}%'"
|
||
DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges)
|
||
If oSQLColumnDatatable.Rows.Count > 0 Then
|
||
For Each oRow As DataRow In oSQLColumnDatatable.Rows
|
||
Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID")
|
||
Dim oCONNID = oRow.Item("CONNECTION_ID")
|
||
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
|
||
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
|
||
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
|
||
|
||
If _DependingColumn_In_Action = True Then
|
||
Exit Sub
|
||
End If
|
||
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
|
||
_DependingColumn_In_Action = True
|
||
Try
|
||
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"CheckBox_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}")
|
||
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = oCONNID
|
||
})
|
||
|
||
If Not IsNothing(oDTDEPENDING_RESULT) Then
|
||
ValidatorLogger.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ")
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CONTROL_ID Then
|
||
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
|
||
_DependingColumn_In_Action = False
|
||
Exit For
|
||
End If
|
||
Next
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
_DependingColumn_In_Action = False
|
||
End Try
|
||
Next
|
||
End If
|
||
End Sub
|
||
|
||
Public Sub OnCmbselectedIndex(sender As System.Object, e As System.EventArgs)
|
||
Dim oCombobox As Windows.Forms.ComboBox = sender
|
||
If oCombobox.SelectedIndex <> -1 And _Indexe_Loaded = True Then
|
||
If oCombobox.Name = last_control.Name Then
|
||
'Abschluss()
|
||
Else
|
||
Try
|
||
Dim CONTROL_ID = DirectCast(oCombobox.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
|
||
Dim DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
|
||
.FilterExpression = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
|
||
})
|
||
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
|
||
If _DependingControl_In_Action = True Then
|
||
Exit Sub
|
||
End If
|
||
Dim _Step = 0
|
||
For Each ROW As DataRow In DT.Rows
|
||
Try
|
||
Dim displayboxname = ROW.Item(0).ToString
|
||
_Step = 1
|
||
If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then
|
||
_Step = 2
|
||
Dim sql_Statement = IIf(IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")), "", ROW.Item("SQL_UEBERPRUEFUNG"))
|
||
|
||
sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, PanelValidatorControl, True)
|
||
_Step = 3
|
||
|
||
_DependingControl_In_Action = True
|
||
_Step = 4
|
||
Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
|
||
_Step = 5
|
||
_DependingControl_In_Action = False
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Display SQL result (Combobox) for control: (" & _Step.ToString & ")" & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
|
||
End Try
|
||
Next
|
||
End If
|
||
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
|
||
Controls2beEnabled(oCombobox.Name)
|
||
|
||
SetControlValues_FromControl(oCombobox)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result ComboBox - ERROR: " & ex.Message)
|
||
End Try
|
||
_ControlHandleStarted = True
|
||
End If
|
||
End If
|
||
End Sub
|
||
Private Sub Controls2beEnabled(pControlName As String)
|
||
Try
|
||
' 18.10.2021: ENABLE_SQL nicht beim Form Load verarbeiten
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
|
||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
Dim oExpression = $"SQL_ENABLE like '%#CTRL#{pControlName}%'"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
If oFilteredDatatable.Rows.Count > 0 Then
|
||
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which got enable definitions!!")
|
||
Else
|
||
ValidatorLogger.Debug($"Sorry NO controls with enabling definition!!")
|
||
End If
|
||
For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
|
||
Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
|
||
Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
|
||
ValidatorLogger.Debug($"Control {oENABLE_CtrlName} is depending on Control: {pControlName}..")
|
||
If _DependingControl_In_Action = True Then
|
||
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
|
||
Exit Sub
|
||
End If
|
||
If Not IsDBNull(oRowEnablingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")) Then
|
||
Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")), "", oRowEnablingControl.Item("SQL_ENABLE"))
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
_DependingControl_In_Action = True
|
||
|
||
Dim oConnectionId As Integer = oRowEnablingControl.Item("CONNECTION_ID")
|
||
|
||
Dim oENABLERESULT As Boolean = False
|
||
oENABLERESULT = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
|
||
|
||
|
||
Try
|
||
Dim oFound As Boolean = False
|
||
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oENABLE_GUID Then
|
||
oFound = True
|
||
ValidatorLogger.Debug($"Got the depending control ID:{oENABLE_GUID}..Setting enabled/Disabled...")
|
||
oControl.Enabled = oENABLERESULT
|
||
_DependingControl_In_Action = False
|
||
Exit For
|
||
End If
|
||
|
||
Next
|
||
|
||
If oFound = False Then
|
||
ValidatorLogger.Debug($"Could not find the enabling Control with ID {oENABLE_GUID} on panel!!!")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while setting enabling control-value for [{oENABLE_CtrlName}]: " & ex.Message)
|
||
_DependingControl_In_Action = False
|
||
End Try
|
||
Else
|
||
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||
End If
|
||
Next
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
'Private Sub Controls2beDisabled()
|
||
' Try
|
||
' Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
' Dim oExpression = $"LEN(SQL_ENABLE) > 0"
|
||
' DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
' If oFilteredDatatable.Rows.Count > 0 Then
|
||
' Logger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be disabled!!")
|
||
' End If
|
||
' For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
|
||
' Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
|
||
' Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
|
||
' For Each oControl As Control In PanelValidatorControl.Controls
|
||
' If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then
|
||
' oControl.Enabled = False
|
||
' Exit For
|
||
' End If
|
||
' Next
|
||
' Next
|
||
' Catch ex As Exception
|
||
' Logger.Error(ex)
|
||
' End Try
|
||
'End Sub
|
||
Private Sub Controls2B_EnDisabled_on_Load()
|
||
If LOG_PERF Then PerformanceLogger.Info("Controls2B_EnDisabled_on_Load")
|
||
|
||
Try
|
||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||
Dim oExpression = $"LEN(SQL_ENABLE_ON_LOAD) > 0"
|
||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
If oFilteredDatatable.Rows.Count > 0 Then
|
||
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be checked dis/enable on load!")
|
||
End If
|
||
For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
|
||
Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
|
||
Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then
|
||
ValidatorLogger.Debug($"Found the Control on panel which needs to be checked [{oENABLE_GUID}]...")
|
||
|
||
'Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD")), "", oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD"))
|
||
'Dim oConID = oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD_CONID")
|
||
|
||
Dim oConnectionId As Integer = oRowEnablingControl.ItemEx("CONNECTION_ID", 0)
|
||
Dim oSqlCommand = oRowEnablingControl.ItemEx("SQL_ENABLE_ON_LOAD", String.Empty)
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
|
||
Dim oResult = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
|
||
|
||
Try
|
||
ValidatorLogger.Debug($"Result of Enable SQL [{oResult}]...")
|
||
oControl.Enabled = oResult
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error en/disabling control onLoad: [{ex.Message}]")
|
||
End Try
|
||
|
||
End If
|
||
Next
|
||
Next
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
Private Sub Depending_Control_Set_Result(displayboxname As String, sqlCommand As String, sqlConnection As String)
|
||
Try
|
||
ValidatorLogger.Debug("Setting Values for Control [{0}]", displayboxname)
|
||
|
||
'Dim oResultTable As DataTable = ClassDatabase.Return_Datatable_ConId(sqlCommand, sqlConnection)
|
||
Dim oResultTable As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = sqlConnection
|
||
})
|
||
|
||
If Not IsNothing(oResultTable) Then
|
||
ValidatorLogger.Debug("Result Table has [{0}] rows", oResultTable.Rows.Count)
|
||
ValidatorLogger.Debug("Result Table has [{0}] columns", oResultTable.Columns.Count)
|
||
|
||
'Ist das Control ein Control was mehrfachwerte enthalten kann
|
||
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_LOOKUP) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then
|
||
ValidatorLogger.Debug("Control is Multivalue")
|
||
|
||
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then
|
||
ValidatorLogger.Debug("Filling Combobox with Results")
|
||
|
||
Dim oCombobox As Windows.Forms.ComboBox = PanelValidatorControl.Controls(displayboxname)
|
||
|
||
If IsNothing(oCombobox) Then
|
||
Exit Sub
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Control exists, setting results.")
|
||
|
||
oCombobox.DataSource = Nothing
|
||
oCombobox.DataSource = oResultTable
|
||
oCombobox.DisplayMember = oResultTable.Columns(0).ColumnName
|
||
oCombobox.ValueMember = oResultTable.Columns(0).ColumnName
|
||
|
||
ElseIf displayboxname.StartsWith(ClassControlCreator.PREFIX_LOOKUP) Then
|
||
ValidatorLogger.Debug("Filling Lookup Control with Results")
|
||
|
||
Dim oLookup As LookupControl3 = PanelValidatorControl.Controls(displayboxname)
|
||
|
||
If IsNothing(oLookup) Then
|
||
Exit Sub
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Control exists, setting results.")
|
||
|
||
oLookup.Properties.DataSource = Nothing
|
||
oLookup.Properties.DataSource = oResultTable
|
||
|
||
Else
|
||
'not implemented
|
||
ValidatorLogger.Warn("Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
|
||
End If
|
||
Else
|
||
If oResultTable.Rows.Count = 1 Then
|
||
PanelValidatorControl.Controls(displayboxname).Text = oResultTable.Rows(0).Item(0).ToString
|
||
Else
|
||
PanelValidatorControl.Controls(displayboxname).Text = "RESULT = resultDT.Rows.Count <> 1"
|
||
ValidatorLogger.Info(">> Datatable-SQL: " & sqlCommand)
|
||
End If
|
||
End If
|
||
Else
|
||
ValidatorLogger.Warn("Result Table is nothing!")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Info("Unexpected Ersror in Depending_Control_Set_Result - ERROR: " & ex.Message)
|
||
MsgBox("Unexpected error in Depending_Control_Set_Result: " & ex.Message, MsgBoxStyle.Critical)
|
||
End Try
|
||
End Sub
|
||
Public Sub OnDTPValueChanged(sender As System.Object, e As System.EventArgs)
|
||
Dim dtp As DateTimePicker = sender
|
||
If _Indexe_Loaded = True Then
|
||
If dtp.Name = last_control.Name Then
|
||
' Abschluss()
|
||
Else
|
||
SendKeys.Send("{TAB}")
|
||
_ControlHandleStarted = True
|
||
End If
|
||
End If
|
||
End Sub
|
||
Private Function CheckValueExists(ByVal control As Control)
|
||
Try
|
||
|
||
For Each dr As DataRow In DTVWCONTROL_INDEX.Rows
|
||
If dr.Item("PROFIL_ID") = CURRENT_ProfilGUID And dr.Item("CTRL_NAME") = control.Name Then
|
||
Dim check = dr.Item("SQL_UEBERPRUEFUNG")
|
||
If IsDBNull(check) Then
|
||
ValidatorLogger.Debug("SQL Check is not configured!")
|
||
Return True
|
||
End If
|
||
If check.ToString.Length > 0 And dr.Item("INDEX_NAME") <> "DD PM-ONLY FOR DISPLAY" Then
|
||
Dim cs As String = DatabaseFallback.GetConnectionString(dr.Item("CONNECTION_ID"))
|
||
|
||
If allgFunk.CheckValue_Exists(dr.Item("SQL_UEBERPRUEFUNG"), "@Eingabe", control.Text, dr.Item("TYP"), cs, CURRENT_ProfilGUID) = True Then
|
||
Return True
|
||
Else
|
||
errormessage = "the input-value '" & control.Text & "' is not existing in database!"
|
||
My.Settings.Save()
|
||
Return False
|
||
End If
|
||
Else
|
||
Return True
|
||
End If
|
||
End If
|
||
Next
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected error in CheckValueExists:" & ex.Message)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
|
||
Public Function IsProcessRunning(name As String) As Boolean
|
||
'here we're going to get a list of all running processes on
|
||
'the computer
|
||
For Each Process As Process In Process.GetProcesses()
|
||
If Process.ProcessName.StartsWith(name) Then
|
||
'process found so it's running so return true
|
||
Return True
|
||
End If
|
||
Next
|
||
'process not found, return false
|
||
Return False
|
||
End Function
|
||
Function Get_Next_GUID() As Integer
|
||
Try
|
||
ValidatorLogger.Debug("Get_Next_GUID...")
|
||
Dim oNewGUID As Integer
|
||
Dim oBIT As Integer = 0
|
||
If PROFIL_sortbynewest = True Then
|
||
oBIT = 1
|
||
End If
|
||
Dim oSQL = $"EXEC PRPM_GET_NEXT_DOC_INFO {CURRENT_ProfilGUID},{CURRENT_DOC_ID},{USER_ID}"
|
||
|
||
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
|
||
CURRENT_DOC_ID = 0
|
||
CURRENT_DOC_GUID = 0
|
||
If oDT.Rows.Count > 0 Then
|
||
Try
|
||
oNewGUID = oDT.Rows(0).Item(0)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($">> Attention: in GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
|
||
ValidatorLogger.Warn($"ERRORMESSAGE [{ex.Message}]")
|
||
End Try
|
||
|
||
Try
|
||
CURRENT_DOC_ID = oDT.Rows(0).Item(1)
|
||
ValidatorLogger.Debug($"Get_Next_GUID: CURRENT_DOC_ID [{CURRENT_DOC_ID}]...")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($">> Attention: in GetNextGUID - Could not get the next DocID - SQL [{oSQL}]")
|
||
ValidatorLogger.Warn($"ERRORMESSAGE [{ex.Message}]")
|
||
End Try
|
||
|
||
Try
|
||
Amount_Docs2Validate = oDT.Rows(0).Item(2)
|
||
ValidatorLogger.Debug($"Get_Next_GUID: Amount_Docs2Validate [{Amount_Docs2Validate}]...")
|
||
Catch ex As Exception
|
||
Amount_Docs2Validate = 0
|
||
ValidatorLogger.Warn("Amount_Docs2Validate Error: " & ex.Message)
|
||
End Try
|
||
Else
|
||
ValidatorLogger.Info($">> Attention: GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
|
||
oNewGUID = 0
|
||
Return oNewGUID
|
||
End If
|
||
'newGUID = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, True)
|
||
|
||
WMDocPathWindows = ""
|
||
CURRENT_DOC_PATH = ""
|
||
CURRENT_WMFILE = Nothing
|
||
If oNewGUID > 0 Then
|
||
ValidatorLogger.Debug("newGUID: " & oNewGUID.ToString)
|
||
|
||
ElseIf oNewGUID <> 0 Then
|
||
ValidatorLogger.Info(" >> Attention: in GetNextGUID - Could not get a GUID(2)")
|
||
oNewGUID = 0
|
||
End If
|
||
|
||
Return oNewGUID
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
oErrMsgMissingInput = "Unexpected error in Get_Next_GUID: " & ex.Message
|
||
ValidatorLogger.Info(">> Unexpected error in Get_Next_GUID:: " & ex.Message, True)
|
||
Return 0
|
||
End Try
|
||
|
||
End Function
|
||
|
||
|
||
|
||
Private Function CreateWMObject() As String
|
||
ValidatorLogger.Debug($"in GetWMDocFileString...'")
|
||
|
||
Dim oWMOwnPath As String
|
||
If WM_AHWF_docPath <> String.Empty Then
|
||
oWMOwnPath = WM_AHWF_docPath
|
||
WMDocPathWindows = oWMOwnPath
|
||
Else
|
||
oWMOwnPath = WMDocPathWindows.Replace(WMSUFFIX, "")
|
||
End If
|
||
|
||
ValidatorLogger.Debug($"oWMOwnPath: {oWMOwnPath}")
|
||
Try
|
||
Dim oNormalizedPath = WINDREAM_MOD.GetNormalizedPath(oWMOwnPath, 1)
|
||
CURRENT_WMFILE = WINDREAM_MOD.Session.GetWMObjectByPath(WMEntity.WMEntityDocument, oNormalizedPath)
|
||
ValidatorLogger.Debug("CURRENT_WMFILE: [{0}]", CURRENT_WMFILE)
|
||
Return True
|
||
Catch ex As Exception
|
||
Dim _err1 As Boolean = False
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected error creating WMObject(1) in GetWMDocFileString: " & ex.Message)
|
||
ValidatorLogger.Info("Error Number: " & Err.Number.ToString)
|
||
errormessage = $"Could not create a WMObject(1) for [{oWMOwnPath}]!"
|
||
frmError.ShowDialog()
|
||
Return False
|
||
|
||
End Try
|
||
|
||
End Function
|
||
Private Function GetDocPathWindows(_CheckStandard As Integer)
|
||
Try
|
||
If ActiveWorkflowType = ConstAHWorkflow_BlindFile Then
|
||
WMDocPathWindows = WM_AHWF_docPath
|
||
CURRENT_DOC_PATH = WM_AHWF_docPath
|
||
Return True
|
||
End If
|
||
|
||
Dim oResult As String
|
||
|
||
|
||
WMDocPathWindows = String.Empty
|
||
If OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
|
||
If File.Exists(oResult) = False Then
|
||
Dim oSQL = $"SELECT dbo.FNPM_GET_FILEPATH ({CURRENT_DOC_GUID},{_CheckStandard})"
|
||
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
|
||
ValidatorLogger.Debug($"Checking file 0 [{oResult}] exists?...")
|
||
DocPathWindows = oResult
|
||
ValidatorLogger.Info($"GetWMDocPathWindows returned false [{oResult}] - trying with standard again...")
|
||
oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)"
|
||
|
||
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
|
||
|
||
ValidatorLogger.Debug($"Checking file 1[{oResult}] exists?...")
|
||
If File.Exists(oResult) = False Then
|
||
ValidatorLogger.Info($"GetWMDocPathWindows FileExists2 also returned false [{oResult}]!")
|
||
DocPathWindows = oResult
|
||
ValidatorLogger.Warn($"GetDocPathWindows: File [{oResult}] not existing!")
|
||
Return False
|
||
End If
|
||
|
||
End If
|
||
Else
|
||
oResult = ClassConstants.OpModeFS_ZF
|
||
ValidatorLogger.Debug($"GetDocPathWindows: Filestore is {ClassConstants.OpModeFS_ZF}")
|
||
End If
|
||
|
||
WMDocPathWindows = oResult
|
||
CURRENT_DOC_PATH = WMDocPathWindows
|
||
ValidatorLogger.Info($"GetWMDocPathWindows CURRENT_DOC_PATH: {CURRENT_DOC_PATH}")
|
||
Return True
|
||
Catch ex As Exception
|
||
WMDocPathWindows = ""
|
||
CURRENT_DOC_PATH = ""
|
||
errormessage = $"Unexpected error in GetDocPathWindows: [{ex.Message}]!"
|
||
frmError.ShowDialog()
|
||
Return False
|
||
End Try
|
||
|
||
|
||
End Function
|
||
Sub Load_IDB_DOC_DATA()
|
||
Try
|
||
Dim oSQl As String = IDB_DOC_DATA_SQL
|
||
oSQl = oSQl.Replace("@DOC_GUID", CURRENT_DOC_GUID)
|
||
oSQl = oSQl.Replace("@DOC_ID", CURRENT_DOC_ID)
|
||
oSQl = oSQl.Replace("@DocID", CURRENT_DOC_ID)
|
||
ValidatorLogger.Debug($"Load_IDB_DOC_DATA SQL: {oSQl}")
|
||
IDB_DT_DOC_DATA = DatabaseFallback.GetDatatableECM(oSQl)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
Sub Load_Next_Document(first As Boolean)
|
||
|
||
CURRENT_WMFILE = Nothing
|
||
activate_controls(False)
|
||
oErrMsgMissingInput = ""
|
||
WMDocPathWindows = ""
|
||
|
||
Override = False
|
||
OverrideAll = False
|
||
'Me.lblerror.Visible = False
|
||
_Indexe_Loaded = False
|
||
ValidatorLogger.Debug("In Load_Next_Document")
|
||
Try
|
||
If first = True Then
|
||
ValidatorLogger.Debug("First Document")
|
||
CURRENT_WMFILE = Nothing
|
||
Else
|
||
ValidatorLogger.Debug("Following Document ")
|
||
End If
|
||
|
||
' Controls nicht beim ersten Laden leeren
|
||
If first = False Then
|
||
Clear_all_Input()
|
||
End If
|
||
|
||
'Select Case navtype
|
||
' Case "next"
|
||
' Case "previous"
|
||
' Case "first"
|
||
' Case "last"
|
||
'End Select
|
||
ValidatorLogger.Debug($"CURRENT_JUMP_DOC_GUID: {CURRENT_JUMP_DOC_GUID}'")
|
||
If CURRENT_JUMP_DOC_GUID = 0 Then
|
||
CURRENT_DOC_GUID = Get_Next_GUID()
|
||
ValidatorLogger.Debug($"CURRENT_JUMP_DOC_GUID = 0 ## NEW CURRENT_DOC_GUID: {CURRENT_DOC_GUID}'")
|
||
ElseIf first = False Then
|
||
CURRENT_DOC_GUID = 0
|
||
End If
|
||
ValidatorLogger.Info("LoadNextDocument - Dokument-GUID: '" & CURRENT_DOC_GUID.ToString & "'")
|
||
If CURRENT_DOC_GUID > 0 Then
|
||
If (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) And GetDocPathWindows(0) = False Then
|
||
SetStatusLabel($"File not accessible: {DocPathWindows}", "DarkOrange")
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If CreateWMObject() = False Then
|
||
Exit Sub
|
||
End If
|
||
Else
|
||
Load_IDB_DOC_DATA()
|
||
If IsNothing(IDB_DT_DOC_DATA) Then
|
||
ValidatorLogger.Warn("ATTENTION: IDB-Data is nothing. Check the IDB_DOC_DATA_SQL Variable Source")
|
||
Exit Sub
|
||
Else
|
||
If IDB_DT_DOC_DATA.Rows.Count = 1 Then
|
||
ValidatorLogger.Debug("Got one IDB DocData Result")
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
|
||
PRTF_PROFILE_FILES_WORK("InWork")
|
||
'Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 1, IN_WORK_WHEN = GETDATE(), WORK_USER = '{USER_USERNAME}' WHERE GUID = {CURRENT_DOC_GUID}"
|
||
'DatabaseFallback.ExecuteNonQueryECM(sql)
|
||
|
||
' ############ Infos eintragen #################
|
||
' txtDateipfad.Text = Document_Path
|
||
'Dim omsg = $"{ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("remainingOps")}: {Amount_Docs2Validate}"
|
||
Dim omsg = String.Format(S.Verbleibende_Vorgänge___0_, Amount_Docs2Validate)
|
||
|
||
If Amount_Docs2Validate > 0 Then
|
||
bsiInformation.Caption = omsg
|
||
Else
|
||
bsiInformation.Caption = "Could not get the amount of remaining docs!"
|
||
End If
|
||
|
||
bsiDocID.Caption = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID
|
||
|
||
ValidatorLogger.Debug("AllDocInfo created...")
|
||
If IDB_ACTIVE = False Then
|
||
oErrMsgMissingInput = Windream_get_Doc_info()
|
||
Else
|
||
' oErrorMessage = IDB_GetDocInfo()
|
||
End If
|
||
|
||
|
||
|
||
If oErrMsgMissingInput = "" Then
|
||
If WMDocPathWindows <> String.Empty Or OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
|
||
ValidatorLogger.Debug($"Operationmode is {ClassConstants.OpModeFS_ZF}! Initializing Viewer ...")
|
||
LoadDocument_DDViewer()
|
||
ValidatorLogger.Debug("Viewer loaded!!")
|
||
If Current_Document.Extension <> "pdf" Then
|
||
bbtniAnnotation.Visibility = BarItemVisibility.Never
|
||
End If
|
||
End If
|
||
|
||
FillIndexValues(first)
|
||
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
LoadSQLData(oControl, DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid)
|
||
Next
|
||
|
||
ValidatorLogger.Debug("Indexmask loaded")
|
||
|
||
'Nun loggen das das Profil geladen wurde
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim oLogString = $"PMProfile loaded: [{CURRENT_ProfilGUID}-{CURRENT_ProfilName}]{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
|
||
If IDB_ACTIVE = False Then
|
||
WMIndexVectofield(oLogString, PROFIL_LOGINDEX)
|
||
Else
|
||
oLogString = $"PMProfile loaded: [{CURRENT_ProfilGUID}-{CURRENT_ProfilName}]"
|
||
IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogString)
|
||
End If
|
||
End If
|
||
activate_controls(True)
|
||
Else
|
||
errormessage = oErrMsgMissingInput
|
||
frmError.ShowDialog()
|
||
End If
|
||
Else
|
||
If oErrMsgMissingInput <> "" Then
|
||
errormessage = oErrMsgMissingInput
|
||
frmError.ShowDialog()
|
||
Else
|
||
Dim oMsg = S.Ende_des_Profils___Keine_weiteren_Vorgänge
|
||
ValidatorLogger.Info(oMsg)
|
||
ValidatorLogger.Debug(oMsg)
|
||
activate_controls(True)
|
||
ValidatorLogger.Debug("Closing the form...")
|
||
Me.Close()
|
||
End If
|
||
End If
|
||
Try
|
||
Dim oCurrency As String
|
||
If PROFIL_CURRENCY_ATTRIBUTE <> "" Then
|
||
oCurrency = GetVariableValuefromSource(PROFIL_CURRENCY_ATTRIBUTE, 1, False)
|
||
End If
|
||
|
||
If Not IsNothing(oCurrency) Then
|
||
|
||
Dim oValueType = oCurrency.GetType.ToString
|
||
If IsDBNull(oCurrency) Then
|
||
oCurrency = "EUR"
|
||
Else
|
||
Try
|
||
oCurrency = oCurrency.ToString
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Converting oCurreny to string: " & ex.Message)
|
||
oCurrency = "EUR"
|
||
End Try
|
||
End If
|
||
If oCurrency <> String.Empty Then
|
||
If oCurrency.ToString.Length = 2 Then
|
||
ValidatorLogger.Debug("oCurrency-Length = 2 - Setting to EUR")
|
||
oCurrency = "EUR"
|
||
End If
|
||
ValidatorLogger.Debug($"oCurrency = {oCurrency}")
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
Try
|
||
Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
|
||
If TypeOf oControl Is GridControl Then
|
||
Dim oGrid As GridControl = DirectCast(oControl, GridControl)
|
||
Dim oControlMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
|
||
Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone()
|
||
Dim oExpression = $"CONTROL_ID = {oControlMeta.Guid}"
|
||
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
|
||
Dim oCultureInfo As CultureInfo = New CultureInfo("de-DE")
|
||
oCultureInfo.NumberFormat.CurrencySymbol = oCurrency
|
||
Dim riTextEdit As RepositoryItemTextEdit = New RepositoryItemTextEdit()
|
||
riTextEdit.MaskSettings.Configure(Of MaskSettings.Numeric)(Sub(settings)
|
||
settings.MaskExpression = "c"
|
||
settings.Culture = oCultureInfo
|
||
End Sub)
|
||
riTextEdit.UseMaskAsDisplayFormat = True 'Optional
|
||
oGrid.RepositoryItems.Add(riTextEdit)
|
||
|
||
Dim oGridView As GridView = DirectCast(oGrid.FocusedView, GridView)
|
||
For Each oCol As GridColumn In oGridView.Columns
|
||
Dim oColumnData As DataRow = oFilteredDatatable.
|
||
Select($"SPALTENNAME = '{oCol.FieldName}'").
|
||
FirstOrDefault()
|
||
|
||
If oColumnData Is Nothing Then
|
||
Continue For
|
||
End If
|
||
|
||
Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
|
||
|
||
Select Case oColumnType
|
||
Case "CURRENCY"
|
||
Console.WriteLine("CurrencyFormatNecessary")
|
||
oCol.DisplayFormat.FormatType = FormatType.Custom
|
||
oCol.ColumnEdit = riTextEdit
|
||
End Select
|
||
Next
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
Next
|
||
Else
|
||
ValidatorLogger.Warn($"oCurrency is String.empty! ")
|
||
End If
|
||
Else
|
||
ValidatorLogger.Warn($"oCurrency is Nothing - Check PROFIL_CURRENCY_ATTRIBUTE! ")
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in display format Currency: " & ex.Message)
|
||
End Try
|
||
Try
|
||
|
||
Show_WF_Messages(False)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
|
||
ValidatorLogger.Debug("frmValidator: LoadNextDocument finished!")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
errormessage = "unexpected error in Load_Next_Document:" & ex.Message
|
||
My.Settings.Save()
|
||
ValidatorLogger.Info("unexpected error in Load_Next_Document: " & ex.Message)
|
||
frmError.ShowDialog()
|
||
End Try
|
||
End Sub
|
||
Sub Show_WF_Messages(pShow As Boolean)
|
||
Try
|
||
If Not Application.OpenForms().OfType(Of frmValidator_Messages).Any Then
|
||
Dim oSQLMessage = $"SELECT
|
||
CONVERT(VARCHAR(30), A.ADDED_WHEN,20) + ' - ' + B.STRING1 as MSG,A.ImageIndex
|
||
FROM
|
||
TBTFVALIDATOR_MESSAGE A INNER JOIN
|
||
(SELECT * FROM TBDD_GUI_LANGUAGE_PHRASE
|
||
WHERE MODULE = 'PM' AND OBJ_NAME = 'frmValidator' AND CAPT_TYPE = 'WF_MESSAGE') B ON A.GUI_LANG_TITLE = B.TITLE
|
||
WHERE
|
||
A.Active = 1 and (A.DocID = {CURRENT_DOC_ID}) AND B.LANGUAGE = '{USER_LANGUAGE}' ORDER BY A.ADDED_WHEN DESC"
|
||
If SQL_WF_MESSAGES <> String.Empty Then
|
||
oSQLMessage = SQL_WF_MESSAGES
|
||
oSQLMessage = oSQLMessage.Replace("@DocID", CURRENT_DOC_ID)
|
||
oSQLMessage = oSQLMessage.Replace("@LANGUAGE", USER_LANGUAGE)
|
||
oSQLMessage = oSQLMessage.Replace("@UserID", USER_ID)
|
||
oSQLMessage = oSQLMessage.Replace("@UserName", USER_USERNAME)
|
||
End If
|
||
DTInfoDoc = DatabaseFallback.GetDatatableECM(oSQLMessage)
|
||
If DTInfoDoc.Rows.Count > 0 Then
|
||
rbnPgGroupHinweise.Visible = True
|
||
bchkitmNotes.Checked = CONFIG.Config.NOTES_ONCLICK
|
||
If CONFIG.Config.NOTES_ONCLICK = False Or pShow = True Then
|
||
Dim ofrmMessage As New frmValidator_Messages(DTInfoDoc)
|
||
frmMessages = ofrmMessage
|
||
ofrmMessage.Show()
|
||
End If
|
||
|
||
Else
|
||
rbnPgGroupHinweise.Visible = False
|
||
End If
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End Sub
|
||
Sub LoadDocument_DDViewer()
|
||
Try
|
||
Dim oDocument As DocumentResultList.Document = Nothing
|
||
' Load DocumentInfo
|
||
oDocument = DD_Documentloader.Load(CURRENT_DOC_ID, WMDocPathWindows)
|
||
If oDocument Is Nothing Then
|
||
Exit Sub
|
||
End If
|
||
Current_Document = oDocument
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
Exit Sub
|
||
End Try
|
||
If ActiveWorkflowType = ConstAHWorkflow_BlindFile Or PROFILE_SHOW_DOCUMENT = False Then
|
||
SplitContainer1.Panel2Collapsed = True
|
||
DocumentViewerValidator.Visible = False
|
||
RibbonPageFile.Visible = False
|
||
Exit Sub
|
||
Else
|
||
DocumentViewerValidator.Visible = True
|
||
End If
|
||
|
||
|
||
' Load Document in Document Viewer
|
||
Dim oFileName = $"{CURRENT_DOC_ID}.{Current_Document.Extension}"
|
||
DocumentViewerValidator.LoadFile(oFileName, New MemoryStream(Current_Document.Contents))
|
||
|
||
|
||
DocumentViewerValidator.RightOnlyView(USER_RIGHT_VIEW_ONLY) 'war auskommentiert.....WARUM?
|
||
If USER_RIGHT_VIEW_ONLY = True Then
|
||
RibbonPageFile.Visible = False
|
||
Else
|
||
RibbonPageFile.Visible = True
|
||
End If
|
||
SplitContainer1.Panel2Collapsed = False
|
||
End Sub
|
||
Sub activate_controls(pStatus As Boolean)
|
||
Try
|
||
ValidatorLogger.Debug("Sub activate_controls - status = " + pStatus.ToString)
|
||
Me.PanelValidatorControl.Enabled = pStatus
|
||
Me.btnSave.Enabled = pStatus
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
End Sub
|
||
Private Function Windream_get_Doc_info()
|
||
Try
|
||
|
||
'If CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName = "eng" Then
|
||
' My.Settings.vIDX_DMS_ERSTELLT = "DMS Created"
|
||
' dmsCreated = "DMS Created"
|
||
' My.Settings.vIDX_DMS_ERSTELLT_Zeit = "DMS Created Time"
|
||
' dmscreatedtime = "DMS Created Time"
|
||
' My.Settings.Save()
|
||
'Else
|
||
|
||
'End If
|
||
Try
|
||
ValidatorLogger.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT}]...")
|
||
CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT & " not found!") Then
|
||
ValidatorLogger.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT & " not found", True)
|
||
ValidatorLogger.Info("1. Ausnahme-Fehler: " & ex.Message)
|
||
If INDEX_DMS_ERSTELLT = "DMS Created" Then
|
||
|
||
INDEX_DMS_ERSTELLT = "DMS erstellt"
|
||
INDEX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
|
||
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
|
||
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
|
||
CONFIG.Save()
|
||
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS erstellt")
|
||
Else
|
||
INDEX_DMS_ERSTELLT = "DMS Created"
|
||
INDEX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
|
||
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
|
||
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt Time")
|
||
End If
|
||
|
||
CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT)
|
||
Else
|
||
ValidatorLogger.Info("error in Windream_get_Doc_info 1: " & ex.Message)
|
||
Return "error in Windream_get_Doc_info 1: " & ex.Message
|
||
End If
|
||
End Try
|
||
|
||
ValidatorLogger.Debug("DMS-Erstellt aus WD: " & CURRENT_DOC_CREATION_DATE)
|
||
|
||
Try
|
||
ValidatorLogger.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT_ZEIT}]...")
|
||
CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT)
|
||
Catch ex As Exception
|
||
|
||
If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found!") Then
|
||
ValidatorLogger.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found", True)
|
||
If INDEX_DMS_ERSTELLT = "DMS Created" Then
|
||
|
||
INDEX_DMS_ERSTELLT = "DMS erstellt"
|
||
INDEX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
|
||
|
||
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
|
||
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
|
||
CONFIG.Save()
|
||
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
|
||
Else
|
||
INDEX_DMS_ERSTELLT = "DMS Created"
|
||
INDEX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
|
||
|
||
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
|
||
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
|
||
CONFIG.Save()
|
||
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
|
||
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS Created Time")
|
||
End If
|
||
ValidatorLogger.Debug($"GetVariableValue (2) [{INDEX_DMS_ERSTELLT_ZEIT}]...")
|
||
CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT)
|
||
Else
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("error in Windream_get_Doc_info 3: " & ex.Message)
|
||
Return "error in Windream_get_Doc_info 3: " & ex.Message
|
||
End If
|
||
End Try
|
||
|
||
ValidatorLogger.Debug("DMSErstelltZeit aus WD: " & CURRENT_DOC_CREATION_TIME)
|
||
|
||
If CURRENT_DOC_CREATION_TIME.Length > 11 Then
|
||
CURRENT_DOC_CREATION_DATE = CURRENT_DOC_CREATION_DATE & " " & CURRENT_DOC_CREATION_TIME.Substring(10)
|
||
Else
|
||
CURRENT_DOC_CREATION_DATE = CURRENT_DOC_CREATION_DATE & " " & CURRENT_DOC_CREATION_TIME
|
||
End If
|
||
|
||
Return ""
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("error in Windream_get_Doc_info (GENERELL): " & ex.Message)
|
||
Return "error in Windream_get_Doc_info (GENERELL): " & ex.Message
|
||
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
|
||
Dim name = VKTBezeichner.Replace("[%VKT", "")
|
||
Dim Sort_Arr() As String
|
||
Dim i As Integer = 0
|
||
'Jetzt im Vektorfeld des Profils nachsehen ob der WErt bereits vorhanden ist
|
||
Dim wertWD = CURRENT_WMFILE.GetVariableValue(PROFIL_VEKTORINDEX)
|
||
If wertWD Is Nothing = False Then
|
||
'Es wird gegen ein Vektorfeld nachindexiert
|
||
If wertWD.GetType.ToString.Contains("System.Object") Then
|
||
'es handelt sich um ein Vektorfeld - Zuweisen der Indexwerte des Vektorfeldes zu Array
|
||
For Each obj As Object In wertWD
|
||
If obj Is Nothing = False Then
|
||
ReDim Preserve Sort_Arr(i)
|
||
Sort_Arr(i) = obj.ToString()
|
||
i += 1
|
||
End If
|
||
Next
|
||
'Das Ergebnis-Array nun Rückwärts sortieren, um die letzte Änderung zu finden
|
||
For Each _string As Object In Sort_Arr.Reverse()
|
||
Dim DDPM_String As String = _string.ToString()
|
||
'
|
||
Dim VektorArray() = Split(DDPM_String, PMDelimiter)
|
||
If VektorArray(1).ToString.ToLower = name.ToLower Then
|
||
value = VektorArray(2)
|
||
Exit For
|
||
End If
|
||
|
||
Next
|
||
|
||
End If
|
||
End If
|
||
If value Is Nothing Then value = ""
|
||
Return value
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("error in ReturnVektor_IndexValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
ValidatorLogger.Info("error in ReturnVektor_IndexValue: " & ex.Message)
|
||
Return ""
|
||
End Try
|
||
|
||
|
||
|
||
|
||
End Function
|
||
Private Function GetVariableValuefromSource(oSourceIndexName As String, Optional oIDBTyp As Integer = 0, Optional FromIDB As Boolean = False) As Object
|
||
Try
|
||
Dim oValuefromSource
|
||
If IDB_ACTIVE = False Then
|
||
oValuefromSource = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
|
||
Else
|
||
ValidatorLogger.Debug($"GetVariableValuefromSource - IDBCase...")
|
||
oValuefromSource = IDBData.GetVariableValue(oSourceIndexName, oIDBTyp, FromIDB)
|
||
End If
|
||
Return oValuefromSource
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
Return Nothing
|
||
End Try
|
||
|
||
End Function
|
||
|
||
Sub FillIndexValues(first As Boolean, Optional SingleAttribute As String = "")
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues")
|
||
|
||
Dim oControlType As String
|
||
Dim oIndexName As String
|
||
Dim oControName As String
|
||
Dim oIDBOverride As Boolean = False
|
||
Try
|
||
If DTVWCONTROL_INDEX.Rows.Count > 0 Then
|
||
Dim oCount As Integer = 0
|
||
For Each oControl As Control In Me.PanelValidatorControl.Controls
|
||
'If SingleAttribute <> "" Then
|
||
' oIDBOverride = True
|
||
' If SingleAttribute <> oControl.Name Then
|
||
' Continue For
|
||
' End If
|
||
'End If
|
||
|
||
Dim oValueFromSource
|
||
Dim oFormattedValue As String = ""
|
||
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
Dim oControlRow = (From form In DTVWCONTROL_INDEX.AsEnumerable()
|
||
Select form
|
||
Where form.Item("GUID") = oControlId).Single()
|
||
|
||
Dim oTyp As String = oControlRow.Item("CTRL_TYPE")
|
||
Dim oIDBTyp As String
|
||
If IDB_ACTIVE Then
|
||
oIDBTyp = oControlRow.Item("IDB_TYP")
|
||
End If
|
||
|
||
Dim oSourceIndexName As String = oControlRow.Item("INDEX_NAME")
|
||
' Wenn kein defaultValue existiert, leeren String setzen
|
||
Dim oDefaultValue As String = ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), String.Empty)
|
||
oIndexName = oSourceIndexName
|
||
oControName = oControl.Name
|
||
Dim oLoadIndex As Boolean = oControlRow.Item("LOAD_IDX_VALUE")
|
||
|
||
ValidatorLogger.Debug("INDEX: " & oSourceIndexName & " - CONTROLNAME: " & oControl.Name & " - LOAD IDXVALUES: " & oLoadIndex.ToString)
|
||
|
||
|
||
Select Case True
|
||
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/TextEdit")
|
||
|
||
Try
|
||
oControlType = "Textbox"
|
||
Dim oTextBox As DevExpress.XtraEditors.TextEdit = oControl
|
||
Dim oMeta As ClassControlCreator.ControlMetadata = oTextBox.Tag
|
||
|
||
If oSourceIndexName = "" Then
|
||
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
||
Exit For
|
||
End If
|
||
If oSourceIndexName Is Nothing = False Then
|
||
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
||
' Wenn kein Index exisitiert, defaultValue laden
|
||
oTextBox.EditValue = oDefaultValue
|
||
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
|
||
Exit Select
|
||
End If
|
||
|
||
|
||
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
||
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
|
||
Else
|
||
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
|
||
If oValueFromSource Is Nothing Then
|
||
oValueFromSource = ""
|
||
Else
|
||
If oValueFromSource.ToString = "System.Object[]" Then
|
||
ValidatorLogger.Debug("TextBox with VektorField: " & oSourceIndexName)
|
||
Try
|
||
ValidatorLogger.Debug($"Length of Vektorarray: {oValueFromSource.length}")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Info($"Error in gettin the lenth of vektorfield {oSourceIndexName} - {ex.Message}")
|
||
End Try
|
||
If oValueFromSource.length = 1 Then
|
||
oValueFromSource = oValueFromSource(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
|
||
oValueFromSource = oValueFromSource(0)
|
||
End If
|
||
ValidatorLogger.Debug($"wertWD has been saved...")
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Value from Source: [{0}]", oValueFromSource)
|
||
|
||
Try
|
||
'Dim oFormatString As String = oControlRow.ItemEx("CTRL_FORMAT_STRING", "")
|
||
'oFormattedValue = ClassFormat.GetFormattedValue(oControl.Name, oValueFromSource, oFormatString)
|
||
|
||
'If Not IsNothing(oFormattedValue) And oFormattedValue <> String.Empty Then
|
||
' oTextBox.EditValue = ObjectEx.NotNull(oFormattedValue, oDefaultValue)
|
||
'Else
|
||
' oTextBox.EditValue = ObjectEx.NotNull(oValueFromSource, oDefaultValue)
|
||
'End If
|
||
|
||
oTextBox.EditValue = ObjectEx.NotNull(oValueFromSource, oDefaultValue)
|
||
|
||
Try
|
||
Dim oBackColor As String = oControlRow.Item("CTRL_BACKCOLOR_IF")
|
||
If oBackColor <> String.Empty Then
|
||
Dim oSPlit = Split(oBackColor, ";")
|
||
If oSPlit.Length = 3 Then
|
||
Dim oValueConverted
|
||
If IsNumeric(oValueFromSource) Then
|
||
oValueConverted = oValueFromSource.ToString.Replace(",", ".")
|
||
Else
|
||
oValueConverted = oValueFromSource
|
||
End If
|
||
Dim oExpression = $"{oValueConverted} {oSPlit(0)}"
|
||
|
||
Dim oSQl = $"SELECT CASE WHEN {oExpression} THEN CONVERT(BIT,1) ELSE CONVERT(BIT,0) END "
|
||
Dim oColorName = IIf(DatabaseECM.GetScalarValue(oSQl), oSPlit(1), oSPlit(2))
|
||
|
||
oControl.BackColor = Color.FromName(oColorName)
|
||
oMeta.BackColor = oControl.BackColor
|
||
|
||
oControl.ForeColor = GraphicsEx.GetContrastedColor(oControl.BackColor)
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Set Backcolor [{oControl.Name}]: {ex.Message}")
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Info("Error While converting defaultValue [" & oDefaultValue & "]: " & ex.Message)
|
||
oTextBox.EditValue = ""
|
||
End Try
|
||
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
errormessage = $"Unvorhergesehener Fehler bei FillIndexValues TextBox [{oControl.Name}]:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
ValidatorLogger.Info("Unexpected error in FillIndexValuesTextBox: " & ex.Message, True)
|
||
ValidatorLogger.Info(">> Controltype: " & oControlType)
|
||
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
|
||
Exit Sub
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(Windows.Forms.ComboBox)
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/ComboBox")
|
||
|
||
oControlType = "ComboBox"
|
||
Dim oMyCombobox As Windows.Forms.ComboBox = oControl
|
||
Try
|
||
If oSourceIndexName = "" Then
|
||
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
||
Exit For
|
||
End If
|
||
If oSourceIndexName Is Nothing = False Then
|
||
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
||
If oDefaultValue = String.Empty Then
|
||
oMyCombobox.SelectedIndex = -1
|
||
Else
|
||
oMyCombobox.Text = oDefaultValue
|
||
End If
|
||
ValidatorLogger.Debug($" oMyComboBox {oMyCombobox.Name}: Indexwert soll nicht geladen werden.")
|
||
Exit Select
|
||
End If
|
||
|
||
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
||
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
|
||
Else
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
End If
|
||
|
||
If oValueFromSource Is Nothing Then
|
||
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oSourceIndexName}: Nothing")
|
||
If oDefaultValue = String.Empty Then
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wurde nicht gefunden")
|
||
oMyCombobox.SelectedIndex = -1
|
||
Else
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wird geladen")
|
||
oMyCombobox.Text = oDefaultValue
|
||
'cmb.SelectedIndex = cmb.FindStringExact(defaultValue)
|
||
End If
|
||
Else
|
||
If oValueFromSource.ToString = "System.Object[]" Then
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Combobox with VektorField: " & oSourceIndexName)
|
||
Try
|
||
ValidatorLogger.Debug($"Length of Vektorarray: {oValueFromSource.length}")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Info($"Error in gettin the length of vektorfield {oSourceIndexName} - {ex.Message}")
|
||
End Try
|
||
If oValueFromSource.length = 1 Then
|
||
oValueFromSource = oValueFromSource(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
|
||
oValueFromSource = oValueFromSource(0)
|
||
End If
|
||
ValidatorLogger.Debug($"wertWD has been saved...")
|
||
Else
|
||
|
||
End If
|
||
ValidatorLogger.Debug($"Indexwert from Index {oSourceIndexName}: {oValueFromSource}")
|
||
ValidatorLogger.Debug($"Items in Combobox: {oMyCombobox.Items.Count}")
|
||
|
||
If oMyCombobox.Items.Count = 0 Then
|
||
' If LogErrorsOnly = False Then Logger.Info($"Index Wert wurde gesetzt")
|
||
oMyCombobox.Text = oValueFromSource
|
||
Else
|
||
ValidatorLogger.Debug($"Index Wert [{oValueFromSource}] wurde ausgewählt")
|
||
oMyCombobox.SelectedIndex = oMyCombobox.FindStringExact(oValueFromSource)
|
||
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} .SelectedIndex: {oMyCombobox.SelectedIndex}")
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
ValidatorLogger.Debug("")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info(">> Unexpected error in FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & ex.Message, True)
|
||
ValidatorLogger.Info(">> Controltype: " & oControlType)
|
||
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
|
||
errormessage = "Unexpected error in FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
|
||
End Try
|
||
|
||
|
||
Case oControl.GetType = GetType(GridControl)
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/GridControl")
|
||
|
||
oControlType = "DevExpress.XtraGrid.GridControl"
|
||
Dim oMyGridControl As GridControl = oControl
|
||
Dim oDTColumnsPerDevExGrid As DataTable = DT_COLUMNS_GRID.Clone()
|
||
Try
|
||
|
||
If oSourceIndexName = "" Then
|
||
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
Exit For
|
||
End If
|
||
If oSourceIndexName Is Nothing = False Then
|
||
If oLoadIndex = False Then
|
||
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
|
||
Exit Select
|
||
End If
|
||
ValidatorLogger.Debug($"getting Value for Attribute [{oSourceIndexName}] - oIDBTyp [{oIDBTyp}] - oIDBOverride [{oIDBOverride}]...")
|
||
' Dim wertWD = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
|
||
If oValueFromSource Is Nothing = False Then
|
||
Dim oValueType = oValueFromSource.GetType.ToString
|
||
ValidatorLogger.Debug($"oValueType is [{oValueType}]!")
|
||
'Es wird gegen ein Vektorfeld nachindexiert
|
||
If oValueType.Contains("System.Object") Or oValueType = "System.Data.DataTable" Or oValueType = "System.String" Then
|
||
Select Case oTyp
|
||
'Tabellendarstellung
|
||
Case "TABLE"
|
||
Dim oExpression = $"CONTROL_ID = {oControlId}"
|
||
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges)
|
||
|
||
Dim oColValuesfromSource As String()
|
||
ValidatorLogger.Debug($"DevExpressGrid: {oDTColumnsPerDevExGrid.Rows.Count} Columns configured for control {oControlId}.")
|
||
|
||
If oDTColumnsPerDevExGrid.Rows.Count >= 1 Then
|
||
Dim oDataSource As DataTable = oMyGridControl.DataSource
|
||
oDataSource.Rows.Clear()
|
||
If IDB_ACTIVE = False Then
|
||
ValidatorLogger.Debug("ValueFromSource contains {0} items", oValueFromSource)
|
||
|
||
For Each Zeile As Object In oValueFromSource
|
||
ValidatorLogger.Debug($"vektorrow Value {Zeile.ToString}...")
|
||
oColValuesfromSource = Split(Zeile, PMDelimiter)
|
||
|
||
Dim oNewRow = oDataSource.NewRow()
|
||
ValidatorLogger.Debug("Creating new row..")
|
||
|
||
For index = 0 To oDTColumnsPerDevExGrid.Rows.Count - 1
|
||
ValidatorLogger.Debug("Column Index {0}", index)
|
||
If oColValuesfromSource.Length > index Then
|
||
ValidatorLogger.Debug("Value: {0}", oColValuesfromSource(index))
|
||
oNewRow.Item(index) = oColValuesfromSource(index)
|
||
Else
|
||
ValidatorLogger.Debug("Value: String.Empty")
|
||
oNewRow.Item(index) = String.Empty
|
||
End If
|
||
Next
|
||
ValidatorLogger.Debug("Adding row to grid..")
|
||
oDataSource.Rows.Add(oNewRow)
|
||
|
||
|
||
Next
|
||
Else
|
||
If oValueType = "System.String" Then
|
||
ValidatorLogger.Debug($"IDB Fill Grid [{oControl.Name}] with String")
|
||
ValidatorLogger.Debug($"oValueFromSource [{oValueFromSource}] - PMDelimiter[{PMDelimiter}]")
|
||
|
||
oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter)
|
||
If oColValuesfromSource.Length > 8 Then
|
||
ValidatorLogger.Warn("Fill Grid Error - Max 8 columns can be configured!")
|
||
End If
|
||
|
||
Dim oRowData As New List(Of Object)
|
||
|
||
For index = 1 To oColValuesfromSource.Length
|
||
Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN")
|
||
Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType)
|
||
oRowData.Add(oConvertedValue)
|
||
Next
|
||
|
||
oDataSource.Rows.Add(oRowData.ToArray())
|
||
|
||
|
||
ElseIf oValueType = "System.Data.DataTable" Then
|
||
Dim oMyDatatable As DataTable = oValueFromSource
|
||
ValidatorLogger.Debug($"IDB Fill Grid [{oControl.Name}] with Datatable - Rows: " & oMyDatatable.Rows.Count)
|
||
For Each oRow As DataRow In oMyDatatable.Rows
|
||
Try
|
||
ValidatorLogger.Debug($"IDB ROW Vector {oRow.Item(0).ToString}...")
|
||
oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter)
|
||
|
||
If oColValuesfromSource.Length > 8 Then
|
||
ValidatorLogger.Warn("Fill Grid with DatatableSplit Error - Max 8 columns can be configured!")
|
||
End If
|
||
ValidatorLogger.Debug($"oColValuesfromSource splitted - Length ({oColValuesfromSource.Length.ToString})")
|
||
Dim oRowData As New List(Of Object)
|
||
|
||
For index = 1 To oColValuesfromSource.Length
|
||
Try
|
||
Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN")
|
||
ValidatorLogger.Debug($"oColumnType of DGView-Column ({oColumnType.ToString})...")
|
||
Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType)
|
||
oRowData.Add(oConvertedValue)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while converting/adding Value to oRowData: " & ex.Message)
|
||
End Try
|
||
Next
|
||
oDataSource.Rows.Add(oRowData.ToArray())
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error while adding datarow [{oRow.Item(0).ToString}] to Grid: " & ex.Message)
|
||
End Try
|
||
|
||
|
||
Next
|
||
End If
|
||
|
||
End If
|
||
Else
|
||
ValidatorLogger.Info($"DevExpressGrid: There are no columns configured/listed for control {oControlId}.")
|
||
End If
|
||
|
||
Case Else
|
||
'es handelt sich um ein einfaches Vektorfeld mit einem Wert
|
||
Dim oDataSource As DataTable = oMyGridControl.DataSource
|
||
For Each obj As Object In oValueFromSource
|
||
If obj Is Nothing = False Then
|
||
oDataSource.Rows.Add(New String() {obj.ToString})
|
||
'dgv.Rows.Add(New String() {obj.ToString})
|
||
|
||
End If
|
||
|
||
Next
|
||
End Select
|
||
Else
|
||
ValidatorLogger.Warn($"Could not load Devexpress.Grid [{oControl.Name }] as omytype is [{oValueType}]!")
|
||
|
||
End If
|
||
|
||
Else
|
||
If first = False Then
|
||
Dim oDataSource As DataTable = oMyGridControl.DataSource
|
||
|
||
If oDataSource.Rows.Count > 0 Then
|
||
oDataSource.Rows.Clear()
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
Try
|
||
'Dim oFilteredDatatable As DataTable = DTGRID_COLUMNS.Clone()
|
||
'Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
|
||
'DTGRID_COLUMNS.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||
Dim oMyGridView As DevExpress.XtraGrid.Views.Grid.GridView = oMyGridControl.MainView
|
||
oMyGridView.OptionsView.ColumnAutoWidth = False
|
||
'AddHandler oMyGridView.ColumnWidthChanged, AddressOf GridControlColumnWidthChanged
|
||
Dim oGridWith As Integer = 0
|
||
For Each oRow As DataRow In oDTColumnsPerDevExGrid.Rows
|
||
Dim oTYPE_COLUMN = oRow.Item("TYPE_COLUMN")
|
||
For Each oActGridColumn As DevExpress.XtraGrid.Columns.GridColumn In oMyGridView.Columns
|
||
Dim oGridDXFieldName = oActGridColumn.FieldName
|
||
Dim olen = oActGridColumn.CustomizationCaption.Length
|
||
Dim GridDXColumnEditName = oActGridColumn.ColumnEditName
|
||
If oRow.Item("SPALTENNAME") = oGridDXFieldName Then
|
||
Dim oCaption = oRow.Item("SPALTEN_HEADER_LANG")
|
||
Dim HeaderLength = oRow.Item("SPALTEN_HEADER_LANG").Length
|
||
Dim oWidth = HeaderLength * 6
|
||
If oRow.Item("SPALTENBREITE") < oWidth Then
|
||
ValidatorLogger.Debug("Spaltenbreite der Spalte " & oCaption & " wird üebrsteuert und berechnet!")
|
||
oActGridColumn.Width = oWidth
|
||
Else
|
||
oActGridColumn.Width = oRow.Item("SPALTENBREITE")
|
||
End If
|
||
|
||
oGridWith += oWidth
|
||
If oTYPE_COLUMN = "DOUBLE" Or oTYPE_COLUMN = "CURRENCY" Then
|
||
oActGridColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Far
|
||
|
||
End If
|
||
' oActGridColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center
|
||
Exit For
|
||
End If
|
||
|
||
Next
|
||
Next
|
||
Dim i = 0
|
||
|
||
' RestoreDevExpressGridControl_Layout(CURRENT_CLICKED_PROFILE_ID, oControlId, oMyGridView)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info(">> Unexpected error in FillIndexValues(GridControl: " & oMyGridControl.Name & "): " & ex.Message, True)
|
||
ValidatorLogger.Info(">> Controltype: " & oControlType)
|
||
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
|
||
errormessage = "Unexpected error in FillIndexValues(Combobox: " & oMyGridControl.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
End Try
|
||
|
||
|
||
Case oControl.GetType = GetType(CheckBox)
|
||
ValidatorLogger.Debug("Loading checkbox...")
|
||
oControlType = "CheckBox"
|
||
If oSourceIndexName = "" Then
|
||
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
Exit For
|
||
End If
|
||
If oSourceIndexName Is Nothing = False Then
|
||
|
||
Dim myCheckBox As CheckBox = oControl
|
||
|
||
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
||
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
|
||
End If
|
||
|
||
|
||
ValidatorLogger.Debug("Loading Bool-Value from Source...")
|
||
|
||
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
||
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
|
||
Else
|
||
Try
|
||
ValidatorLogger.Debug($"..Now GetVariableValue({oSourceIndexName})...")
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Could not get the windreamValue for CheckboxIndex: {oSourceIndexName} [{ex.Message}]")
|
||
End Try
|
||
|
||
End If
|
||
|
||
|
||
If oValueFromSource Is Nothing Then
|
||
ValidatorLogger.Info(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
|
||
ValidatorLogger.Debug(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
|
||
If oDefaultValue <> String.Empty Then
|
||
ValidatorLogger.Info($"Using Default value [{oDefaultValue}]")
|
||
ValidatorLogger.Debug($"Using Default value [{oDefaultValue}]")
|
||
myCheckBox.Checked = CBool(oDefaultValue)
|
||
Exit Select
|
||
Else
|
||
ValidatorLogger.Debug("No Default Value for Checkbox - so using false!")
|
||
myCheckBox.CheckState = CheckState.Indeterminate
|
||
End If
|
||
|
||
|
||
Else
|
||
ValidatorLogger.Debug("oValueFromSource: " & oValueFromSource.ToString)
|
||
If oValueFromSource.ToString = "" Then
|
||
ValidatorLogger.Info(">> Versuch, default Value zu laden")
|
||
If oDefaultValue <> String.Empty Then
|
||
Dim result = False
|
||
If Boolean.TryParse(oDefaultValue, result) Then
|
||
ValidatorLogger.Info(">> defaultValue wurde geladen")
|
||
myCheckBox.Checked = result
|
||
If result = False Then
|
||
myCheckBox.CheckState = CheckState.Unchecked
|
||
Else
|
||
myCheckBox.CheckState = CheckState.Checked
|
||
End If
|
||
|
||
Else
|
||
myCheckBox.Checked = False
|
||
myCheckBox.CheckState = CheckState.Unchecked
|
||
End If
|
||
Else
|
||
ValidatorLogger.Info(">> defaultValue war leer")
|
||
myCheckBox.Checked = False
|
||
myCheckBox.CheckState = CheckState.Unchecked
|
||
End If
|
||
Else
|
||
Dim _value
|
||
If oValueFromSource.ToString = "System.Object[]" Then
|
||
ValidatorLogger.Debug("CheckBoxValue with VectorField: " & oSourceIndexName)
|
||
If oValueFromSource.length = 1 Then
|
||
_value = oValueFromSource(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
|
||
_value = oValueFromSource(0)
|
||
End If
|
||
Else
|
||
_value = oValueFromSource
|
||
ValidatorLogger.Debug($"Value is not nothing and also not System.Object: [{_value}]")
|
||
End If
|
||
Try
|
||
Select Case CBool(_value)
|
||
Case True
|
||
ValidatorLogger.Debug(">> CBool(_value) = True")
|
||
myCheckBox.Checked = True
|
||
myCheckBox.CheckState = CheckState.Checked
|
||
Case False
|
||
ValidatorLogger.Debug(">> CBool(_value) = False")
|
||
myCheckBox.Checked = False
|
||
myCheckBox.CheckState = CheckState.Unchecked
|
||
End Select
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected error in CBool(wertWD) - CheckBox: " & ex.Message & vbNewLine & "Wert WD: " & oValueFromSource.ToString, True)
|
||
myCheckBox.Checked = False
|
||
myCheckBox.CheckState = CheckState.Unchecked
|
||
End Try
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
Case oControl.GetType = GetType(LookupControl3)
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/LookupControl")
|
||
|
||
Try
|
||
Dim oLookup As LookupControl3 = oControl
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
'Dim oWindreamValue = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
|
||
Try
|
||
oLookup.Properties.SelectedValues = Nothing
|
||
oLookup.Properties.SelectedValues = New List(Of String)
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
If Not IsNothing(oValueFromSource) Then
|
||
Dim oMyType = oValueFromSource.GetType.ToString
|
||
If oMyType.Contains("System.Object") Or oMyType = "System.Data.DataTable" Then
|
||
Dim oArrlist As New List(Of String)
|
||
If IDB_ACTIVE = False Then
|
||
For Each oVectorRow As Object In oValueFromSource
|
||
Dim Ocontent = oVectorRow.ToString
|
||
oArrlist.Add(Ocontent)
|
||
Next
|
||
Else
|
||
Dim myDT As DataTable = oValueFromSource
|
||
For Each oVectorRow As DataRow In myDT.Rows
|
||
Dim Ocontent = oVectorRow.Item(0)
|
||
oArrlist.Add(Ocontent)
|
||
Next
|
||
End If
|
||
|
||
oLookup.Properties.SelectedValues = oArrlist
|
||
Else
|
||
Dim oArrlist As New List(Of String)
|
||
oArrlist.Add(oValueFromSource.ToString)
|
||
oLookup.Properties.SelectedValues = oArrlist
|
||
End If
|
||
Else
|
||
If Not IsNothing(oLookup.Properties.SelectedValues) Then
|
||
If oLookup.Properties.SelectedValues.Count = 0 And oDefaultValue <> String.Empty Then
|
||
Dim oValues As List(Of String) = oDefaultValue.Split(",").ToList()
|
||
oLookup.Properties.SelectedValues = oValues
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info(" - Unvorhergesehener Unexpected error in AddVorschlag_ComboBox - Indexname: " & oIndexName & " - Fehler: " & vbNewLine & ex.Message)
|
||
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in Add LookupControl3:")
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(DateTimePicker)
|
||
oControlType = "DateTimePicker"
|
||
Dim DTP As DateTimePicker = oControl
|
||
If oSourceIndexName = "" Then
|
||
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
Exit For
|
||
End If
|
||
If oSourceIndexName Is Nothing = False Then
|
||
|
||
Try
|
||
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
||
ValidatorLogger.Debug("DATE über PM-Vektor holen")
|
||
|
||
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
|
||
ValidatorLogger.Info(">> DTP is """)
|
||
Else
|
||
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
|
||
|
||
End If
|
||
|
||
If oValueFromSource Is Nothing Then oValueFromSource = ""
|
||
Dim tempdate As Date = CDate("01.01.0001 00:00:00")
|
||
If oValueFromSource.ToString.Length > 0 Then
|
||
Try
|
||
tempdate = CDate(oValueFromSource)
|
||
ValidatorLogger.Debug("DATE konnte umgewandelt werden")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Debug("DATE wurde auf heute gesetzt")
|
||
End Try
|
||
DTP.Text = tempdate
|
||
Else
|
||
ValidatorLogger.Debug("DATE ist leer")
|
||
DTP.Text = tempdate
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
errormessage = "Unvorhergesehener Fehler bei DTP: " & vbNewLine & ex.Message
|
||
|
||
ValidatorLogger.Info("Unexpected error in FillIndex DTP: " & ex.Message & vbNewLine & "Wert WD: " & oValueFromSource.ToString & vbNewLine & "Indexname: " & oSourceIndexName, True)
|
||
frmError.ShowDialog()
|
||
ValidatorLogger.Info("Unexpected error in FillIndex DTP: " & ex.Message, True)
|
||
End Try
|
||
End If
|
||
End Select
|
||
oCount += 1
|
||
Next
|
||
|
||
|
||
Focus_FirstControl()
|
||
|
||
Try
|
||
Dim oDataTable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
|
||
DT_COLUMNS_GRID_WITH_SQL.Select($"SQL_COMMAND not like '%#CTRL#%'").CopyToDataTable(oDataTable, LoadOption.PreserveChanges)
|
||
|
||
For Each oRow As DataRow In oDataTable.Rows
|
||
|
||
Dim oDEPENDING_CTRL_ID = oRow.Item("CONTROL_ID")
|
||
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
|
||
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
|
||
Dim oCONNID = oRow.Item("CONNECTION_ID")
|
||
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
|
||
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
|
||
|
||
Try
|
||
'Dim oDTRESULT_FOR_COLUMN As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"oDEPENDING_CTRL_ID: {oDEPENDING_CTRL_ID}")
|
||
Dim oDTRESULT_FOR_COLUMN As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||
.ConnectionId = oCONNID
|
||
})
|
||
|
||
If Not IsNothing(oDTRESULT_FOR_COLUMN) Then
|
||
ValidatorLogger.Debug($"Trying to create a DropDown(FIV) for CONTROL-ID [{oDEPENDING_CTRL_ID}] - RowCount: [{oDTRESULT_FOR_COLUMN.Rows.Count}] ")
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||
If oControlId = oDEPENDING_CTRL_ID Then
|
||
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
|
||
Exit For
|
||
End If
|
||
Next
|
||
Else
|
||
ValidatorLogger.Warn($"FillIndexValues - oDTRESULT_FOR_COLUMN is nothing!")
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"FillIndexValues - Unexpected error in creating Grid-Dropdown-Column [{oDEPENDING_COLUMN}] for CONTROL-ID [{oDEPENDING_CTRL_ID}]: " & ex.Message)
|
||
End Try
|
||
Next
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"FillIndexValues - Unexpected error in creating dropdown for Grid: " & ex.Message)
|
||
End Try
|
||
|
||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/Postload")
|
||
|
||
If IDB_ACTIVE = True Then
|
||
Try
|
||
Dim oSQL = $"select Attribut, TERM_VALUE from VWIDB_VALUE_TEXT WHERE LANG_CODE IN ('{USER_LANGUAGE}','UNQID') AND IDB_OBJ_ID = {CURRENT_DOC_ID} AND Attribut in ('PM_Info1','PM_Info2') ORDER BY Attribut"
|
||
Dim oDTINFO As DataTable = DatabaseFallback.GetDatatableIDB(oSQL)
|
||
If Not IsNothing(oDTINFO) Then
|
||
Dim oColor As System.Drawing.Color
|
||
If oDTINFO.Rows.Count > 0 Then
|
||
Dim oColumns As String()
|
||
If oDTINFO.Rows.Count = 1 Then
|
||
oColumns = Split(oDTINFO.Rows(0).Item("TERM_VALUE"), "#")
|
||
If oColumns.Length = 1 Then
|
||
bsiInfo1.Caption = oDTINFO.Rows(0).Item("TERM_VALUE")
|
||
ElseIf oColumns.Length = 2 Then
|
||
bsiInfo1.Caption = oColumns(0)
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oColumns(1))
|
||
bsiInfo1.ItemAppearance.Normal.ForeColor = oColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
End If
|
||
|
||
bsiInfo2.Visibility = BarItemVisibility.Never
|
||
ElseIf oDTINFO.Rows.Count = 2 Then
|
||
'ITEM 1
|
||
oColumns = Split(oDTINFO.Rows(0).Item("TERM_VALUE"), "#")
|
||
If oColumns.Length = 1 Then
|
||
bsiInfo1.Caption = oDTINFO.Rows(0).Item("TERM_VALUE")
|
||
ElseIf oColumns.Length = 2 Then
|
||
bsiInfo1.Caption = oColumns(0)
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oColumns(1))
|
||
bsiInfo1.ItemAppearance.Normal.ForeColor = oColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
End If
|
||
'ITEM 1
|
||
oColumns = Split(oDTINFO.Rows(1).Item("TERM_VALUE"), "#")
|
||
If oColumns.Length = 1 Then
|
||
bsiInfo2.Caption = oDTINFO.Rows(1).Item("TERM_VALUE")
|
||
ElseIf oColumns.Length = 2 Then
|
||
bsiInfo2.Caption = oColumns(0)
|
||
Try
|
||
oColor = System.Drawing.Color.FromName(oColumns(1))
|
||
bsiInfo2.ItemAppearance.Normal.ForeColor = oColor
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
End If
|
||
bsiInfo2.Visibility = BarItemVisibility.Always
|
||
End If
|
||
RibbonPageGroup2.Visible = True
|
||
Else
|
||
ValidatorLogger.Debug($"No PM_Info-Configuration!!")
|
||
RibbonPageGroup2.Visible = False
|
||
End If
|
||
Else
|
||
ValidatorLogger.Warn($"oDTINFO is nothing!!")
|
||
RibbonPageGroup2.Visible = False
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Setting PMINFO - ERROR: {ex.Message}")
|
||
RibbonPageGroup2.Visible = False
|
||
End Try
|
||
|
||
Else
|
||
RibbonPageGroup2.Visible = False
|
||
End If
|
||
|
||
'Flag setzen das Indexe geladen sind
|
||
_Indexe_Loaded = True
|
||
|
||
' Should the custom Ribbon group be displayed at all?
|
||
' Will be hidden later if not search results are found
|
||
If RibbonPageCustItm1 <> "" Then
|
||
Attmt_bbtnitmShow.Caption = RibbonPageCustItm1
|
||
rbnPgGroupAttmt.Visible = True
|
||
Attmnt_bbtnitm_LoadonClick.Checked = CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK
|
||
Else
|
||
rbnPgGroupAttmt.Visible = False
|
||
End If
|
||
Load_Additional_Searches(True)
|
||
' If Searches should be loaded automatically, not only on click
|
||
If CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK = False And (AdditionalDocResultsExist = True Or AdditionalDataResultsExist = True) Then
|
||
' _frmValidatorSearch?.Show()
|
||
Click_Additional_Searches()
|
||
End If
|
||
Else
|
||
MsgBox("No Form-Mask defined for this profile!" & vbNewLine & "Please inform Your admin!" & vbNewLine & "The validator will be closed!", MsgBoxStyle.Exclamation, "Attention:")
|
||
Me.Close()
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in FillIndexValues: [{oControName} -TYPE: {oControlType}-INDEXNAME: {oIndexName}] ERROR: {ex.Message}")
|
||
errormessage = $"Unexpected error in FillIndexValues: [{oControName} -TYPE: {oControlType}-INDEXNAME: {oIndexName}] ERROR: {ex.Message}" & vbNewLine & "Check Logfile"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
End Try
|
||
|
||
|
||
End Sub
|
||
Private Sub frmValidation_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
|
||
' Refresh_FileList()
|
||
Load_Next_Document(True)
|
||
|
||
Controls2B_EnDisabled_on_Load()
|
||
_DependingControl_In_Action = False
|
||
_DependingColumn_In_Action = False
|
||
|
||
' 18.10.2021: Brauchen Sie das Überhaupt??
|
||
'Controls2beDisabled()
|
||
|
||
BringToFront()
|
||
If bbtniRefreshSearches.Visibility = BarItemVisibility.Always Then
|
||
_frmValidatorSearch?.BringToFront()
|
||
End If
|
||
|
||
_FormLoaded = True
|
||
Try
|
||
If USER_GHOST_MODE_ACTIVE Then
|
||
BbtnitmSave.Enabled = False
|
||
btnSave.Enabled = False
|
||
Else
|
||
BbtnitmSave.Enabled = True
|
||
btnSave.Enabled = True
|
||
End If
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
|
||
Try
|
||
If RibbonPageCustTitle <> "" Then
|
||
RibbonPageGroupCustom.Text = RibbonPageCustTitle
|
||
RibbonPageGroupCustom.Visible = True
|
||
Else
|
||
RibbonPageGroupCustom.Visible = False
|
||
End If
|
||
If Not (IsNothing(WMDocPathWindows) And ActiveWorkflowType = ConstAHWorkflow_BlindFile) Then
|
||
If ButtonExport2Folder_Caption <> "" And WMDocPathWindows <> "" Then
|
||
ValidatorLogger.Debug("Enabling Export2File, Caption set")
|
||
ValidatorLogger.Debug("Button Caption: [{0}]", ButtonExport2Folder_Caption)
|
||
ValidatorLogger.Debug("Export root folder: [{0}]", ButtonExport2Folder_RootFolder)
|
||
|
||
If File.Exists(WMDocPathWindows) Then
|
||
ValidatorLogger.Debug("File exists, Showing Export Button")
|
||
|
||
barbtnitmExport.Caption = ButtonExport2Folder_Caption
|
||
If ButtonExport2Folder_Mode <> String.Empty Then
|
||
barbtnitmExport.Tag = ButtonExport2Folder_Mode
|
||
End If
|
||
barbtnitmExport.Visibility = BarItemVisibility.Always
|
||
Try
|
||
If ButtonExport2Folder_RootFolder <> "" Then
|
||
If Directory.Exists(ButtonExport2Folder_RootFolder) Then
|
||
If CONFIG.Config.LastExportPath <> String.Empty Then
|
||
ValidatorLogger.Debug("Last export path exists, using as default path")
|
||
FolderBrowserDialog1.SelectedPath = CONFIG.Config.LastExportPath
|
||
Else
|
||
FolderBrowserDialog1.SelectedPath = ButtonExport2Folder_RootFolder
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Setting default export path to [{0}]", FolderBrowserDialog1.SelectedPath)
|
||
Else
|
||
ValidatorLogger.Warn($"### Dis/Enabale Export2Path - RootFolder {ButtonExport2Folder_RootFolder} not existing or accessible!###")
|
||
End If
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"### Error Dis/Enabale Export2Path: {ex.Message} !###")
|
||
End Try
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
ValidatorLogger.Debug("frmValidation_Shown finished!")
|
||
End Sub
|
||
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
|
||
btnSave.Enabled = False
|
||
|
||
' TODO: Use when working on Validation
|
||
If ForceGridValidation() = True Then
|
||
Finish_WFStep()
|
||
End If
|
||
|
||
btnSave.Enabled = True
|
||
End Sub
|
||
|
||
Private Function ForceGridValidation()
|
||
Dim oValidation As Boolean = True
|
||
Dim oGrids = (From oControl In PanelValidatorControl.Controls
|
||
Where TypeOf oControl Is GridControl
|
||
Select oControl).ToList()
|
||
|
||
ValidatorLogger.Debug("Forcing grid Validation")
|
||
|
||
For Each oGrid As GridControl In oGrids
|
||
ValidatorLogger.Debug("Validating Grid [{0}]", oGrid.Name)
|
||
|
||
Dim oView As GridView = oGrid.MainView
|
||
|
||
If oView.RowCount = 0 Then
|
||
Continue For
|
||
End If
|
||
|
||
If DoCellValidation(oView) = False Then
|
||
oValidation = False
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Validation of Grid [{0}] ended with Result: [{1}]", oGrid.Name, oValidation)
|
||
|
||
If oValidation = False Then
|
||
Return False
|
||
End If
|
||
Next
|
||
|
||
Return True
|
||
End Function
|
||
|
||
Private Function DoCellValidation(pView As GridView) As Boolean
|
||
For i As Integer = 0 To pView.DataRowCount - 1
|
||
Dim oRowHandle = i
|
||
|
||
pView.FocusedRowHandle = oRowHandle
|
||
|
||
For Each oColumn As GridColumn In pView.Columns
|
||
pView.FocusedColumn = oColumn
|
||
|
||
If pView.PostEditor() = True Then
|
||
If pView.UpdateCurrentRow() = False Then
|
||
Return False
|
||
End If
|
||
Else
|
||
Return False
|
||
End If
|
||
Next
|
||
Next
|
||
|
||
Return True
|
||
End Function
|
||
|
||
Private Function btnFinish_continue()
|
||
Try
|
||
Dim oSQL = PROFIL_FINISH_SQL
|
||
oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True)
|
||
|
||
Dim oDT_ACTIONS As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
|
||
If IsNothing(oDT_ACTIONS) Then
|
||
MsgBox("Something went wrong in btnFinish_continue - Please check Your log and inform the workflow-team!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
Return False
|
||
ElseIf oDT_ACTIONS.Rows.Count = 0 Then
|
||
MsgBox("Something went wrong in btnFinish_continue (No row) - Please check Your log and inform the workflow-team!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
Return False
|
||
End If
|
||
'Select Case'Override' as Action_Type, 'Sind Sie sicher dass Sie nicht zuständig sind?' as Question,'Nicht Zuständig' as Caption,'Red' as Color
|
||
Dim oMsgType
|
||
Dim oQuestion
|
||
Dim oTitle
|
||
ValidatorLogger.Debug("## btnFinish_continue ##")
|
||
Try
|
||
oMsgType = oDT_ACTIONS?.Rows(0).Item("MsgType")
|
||
Catch ex As Exception
|
||
oMsgType = ""
|
||
End Try
|
||
|
||
Try
|
||
oQuestion = oDT_ACTIONS?.Rows(0).Item("Question")
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"btnFinishContinue - No QUESTION-Column in select-Result!")
|
||
oQuestion = ""
|
||
End Try
|
||
Try
|
||
oTitle = oDT_ACTIONS?.Rows(0).Item("Title")
|
||
Catch ex As Exception
|
||
oTitle = ""
|
||
End Try
|
||
ValidatorLogger.Debug($"Case is: [{oMsgType.ToString.ToUpper}]")
|
||
Select Case oMsgType.ToString.ToUpper
|
||
|
||
Case "MsgboxResult".ToUpper
|
||
If oQuestion <> "" Then
|
||
Dim result As MsgBoxResult
|
||
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
||
If result = MsgBoxResult.Yes Then
|
||
Return True
|
||
Else
|
||
Dim oLogString = $"Msgboxresult [{oQuestion}] = [No]"
|
||
If IDB_ACTIVE = False Then
|
||
WMIndexVectofield(oLogString, PROFIL_LOGINDEX)
|
||
Else
|
||
IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogString)
|
||
End If
|
||
Return False
|
||
End If
|
||
End If
|
||
Case "MsgboxStop".ToUpper
|
||
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||
Return False
|
||
Case "Msgbox".ToUpper
|
||
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||
Return True
|
||
Case "Continue".ToUpper
|
||
Return True
|
||
Case Else
|
||
MsgBox($"No valid action provided [{oMsgType}] in btnFinishContinue - Check Your log and inform the WorkflowTeam", MsgBoxStyle.Exclamation, "")
|
||
ValidatorLogger.Warn($"No valid action provided [{oMsgType}] in btnFinishContinue!")
|
||
Return False
|
||
End Select
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("An unhandled exeception occured in btnFinish Procedure! Please inform Your WorkflowTeam and Check Your log!" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
Sub Finish_WFStep(Optional includeFI As Boolean = True)
|
||
btnSave.Enabled = False
|
||
ValidatorLogger.Debug("Abschluss für Dok: " & CURRENT_DOC_PATH & " gestartet")
|
||
_ItemWorked = True
|
||
Dim oErrorOcurred As Boolean = False
|
||
If OverrideAll = False Then
|
||
'Eingaben auf Form überprüfen
|
||
If Check_UpdateIndexe() = True Then
|
||
If PROFIL_FINISH_SQL <> String.Empty Then
|
||
If btnFinish_continue() = False Then
|
||
Exit Sub
|
||
End If
|
||
End If
|
||
|
||
If includeFI = True Then
|
||
Try
|
||
Dim oSQL = $"SELECT * FROM TBPM_PROFILE_FINAL_INDEXING WHERE PROFIL_ID = {CURRENT_ProfilGUID} AND ACTIVE = 1 ORDER BY SEQUENCE"
|
||
Dim oDTFinalIndexing As DataTable
|
||
oDTFinalIndexing = DatabaseFallback.GetDatatable("TBPM_PROFILE_FINAL_INDEXING", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
|
||
.SortByColumn = "SEQUENCE"
|
||
})
|
||
|
||
If oDTFinalIndexing?.Rows.Count > 0 Then
|
||
Dim oDT_FIResult As DataTable
|
||
'Jetzt finale Indexe setzen
|
||
ValidatorLogger.Debug("FINAL INDEXING STARTING...")
|
||
For Each oFinalIndexRow As DataRow In oDTFinalIndexing.Rows
|
||
oDT_FIResult = Nothing
|
||
Dim oValue As String = oFinalIndexRow.Item("VALUE").ToString
|
||
Dim oFinalIndex = oFinalIndexRow.Item("INDEXNAME")
|
||
Dim oIndexBehaviour = oFinalIndexRow.Item("IF_VEKTOR_BEHAVIOUR")
|
||
ValidatorLogger.Debug($"Working on final index [{oFinalIndex}]...")
|
||
Dim oContinueOnIndifferentState As Boolean = CBool(oFinalIndexRow.Item("CONTINUE_INDETERMINED"))
|
||
Dim oIndexType = 0
|
||
If IDB_ACTIVE = False Then
|
||
oIndexType = WINDREAM_MOD.GetIndexType(oFinalIndex)
|
||
End If
|
||
If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ###
|
||
ValidatorLogger.Debug("Indexing wih dynamic sql...")
|
||
Dim oGUID = oFinalIndexRow.Item("GUID")
|
||
Dim oSQLCommand = oFinalIndexRow.Item("SQL_COMMAND")
|
||
Dim oConnectionID = oFinalIndexRow.Item("CONNECTION_ID")
|
||
oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, PanelValidatorControl, True)
|
||
If IsNothing(oSQLCommand) Then
|
||
errormessage = "Error while replacing Values in final indexing - Check the log"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
End If
|
||
If Not IsNothing(oSQLCommand) Then
|
||
|
||
If oConnectionID <> 0 Then
|
||
oDT_FIResult = DatabaseFallback.GetDatatableWithConnection(oSQLCommand, oConnectionID)
|
||
Else
|
||
oDT_FIResult = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLCommand, DatabaseType.ECM))
|
||
End If
|
||
|
||
If Not IsNothing(oDT_FIResult) Then
|
||
ValidatorLogger.Debug($"oResultfromSQL is [{oDT_FIResult.ToString}]")
|
||
|
||
If oDT_FIResult.Rows.Count = 0 Then
|
||
If oContinueOnIndifferentState = False Then
|
||
errormessage = "Result from SQL is EmptyValue - Check the SQL and the log"
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
Else
|
||
ValidatorLogger.Warn($"FinalIndexResult from SQL is EmptyValue - AttributeName [{oFinalIndexRow.Item("INDEXNAME")}] - oContinueOnIndifferentState = true, So continuing with next Attribute")
|
||
Continue For
|
||
End If
|
||
End If
|
||
'oValue = oResultDT
|
||
Else
|
||
ValidatorLogger.Warn("ATTENTION: oResultDT for Automatic Index IS NOTHING!")
|
||
Continue For
|
||
End If
|
||
End If
|
||
|
||
Else
|
||
If oIndexBehaviour <> "Delete" Then
|
||
If oValue.StartsWith("v") Then
|
||
Select Case oFinalIndexRow.Item("VALUE").ToString
|
||
Case "vDate"
|
||
oValue = Now.ToShortDateString
|
||
Case "vUserName"
|
||
oValue = USER_USERNAME
|
||
Case Else
|
||
oValue = oFinalIndexRow.Item("VALUE")
|
||
End Select
|
||
End If
|
||
|
||
Else
|
||
ValidatorLogger.Info($"The value of attribute [{oFinalIndex}] will be deleted.")
|
||
oValue = "DeleteWMAttributeValue"
|
||
End If
|
||
oDT_FIResult = New DataTable()
|
||
' Spalte hinzufügen – z.B. "Ergebnis" vom Typ String
|
||
oDT_FIResult.Columns.Add("Ergebnis", GetType(String))
|
||
|
||
' Zeile hinzufügen – mit festem Wert z.B. "OK"
|
||
Dim newRow As DataRow = oDT_FIResult.NewRow()
|
||
newRow("Ergebnis") = oValue
|
||
oDT_FIResult.Rows.Add(newRow)
|
||
End If
|
||
If oErrorOcurred Then
|
||
Exit For
|
||
End If
|
||
|
||
Dim oResult() As String
|
||
ReDim Preserve oResult(0)
|
||
oResult(0) = oValue
|
||
ValidatorLogger.Debug("Now the final indexing...")
|
||
ValidatorLogger.Debug($"oIndexType {oIndexType.ToString}")
|
||
|
||
If oIndexType > 4000 And oIndexType < 5000 And oDT_FIResult.Rows.Count > 0 Then
|
||
Dim oOldValue As Object = CURRENT_WMFILE.GetVariableValue(oFinalIndex)
|
||
Dim oValueList As New List(Of Object)
|
||
Dim oNewValue As Object()
|
||
Dim oMissing As Boolean = False
|
||
|
||
If oOldValue IsNot Nothing AndAlso TypeOf oOldValue Is Object Then
|
||
|
||
' If new values are allowed, add the old values first
|
||
If CBool(oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = True Then
|
||
oValueList = DirectCast(oOldValue, Object()).ToList()
|
||
End If
|
||
|
||
' Add the new value(S)
|
||
oValueList = WMVectorResult_add_Items_From_DT(oDT_FIResult, oValueList)
|
||
Else
|
||
oValueList = WMVectorResult_add_Items_From_DT(oDT_FIResult, oValueList)
|
||
End If
|
||
|
||
If CBool(oFinalIndexRow.Item("PREVENT_DUPLICATES")) = True Then
|
||
oValueList = oValueList.Distinct().ToList()
|
||
End If
|
||
|
||
oNewValue = oValueList.ToArray()
|
||
|
||
If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oNewValue) = True Then
|
||
ValidatorLogger.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has been set successfully!")
|
||
Else
|
||
errormessage = "Error in final indexing:" & vbNewLine & idxerr_message
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
End If
|
||
Else
|
||
|
||
If oValue.ToUpper = "SQL-Command".ToUpper Then
|
||
If oDT_FIResult.Rows.Count = 1 Then
|
||
oValue = oDT_FIResult.Rows(0).Item(0).ToString
|
||
oResult = Nothing
|
||
ReDim Preserve oResult(0)
|
||
oResult(0) = oValue
|
||
ElseIf IsNothing(oResult) Then
|
||
MsgBox("Something went wrong while final-indexing. Check Your log and inform the admin-team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
ValidatorLogger.Warn("Something went wrong while final-indexing")
|
||
Exit For
|
||
End If
|
||
|
||
End If
|
||
Dim oFIResult As Boolean = False
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then
|
||
oFIResult = True
|
||
ValidatorLogger.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT")
|
||
|
||
'Nun das Logging
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME"))
|
||
WMIndexVectofield(logstr, PROFIL_LOGINDEX)
|
||
End If
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then
|
||
oFIResult = True
|
||
ValidatorLogger.Debug($"Final index IDB '{oFinalIndexRow.Item("INDEXNAME")}' was updated with [{oValue.ToString}]")
|
||
End If
|
||
End If
|
||
If oFIResult = False Then
|
||
errormessage = "Error in final indexing:" & vbNewLine & idxerr_message
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
End If
|
||
|
||
End If
|
||
If oErrorOcurred = True Then
|
||
_ItemWorked = False
|
||
Exit For
|
||
End If
|
||
Next
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Error in finalIndexing: {ex.Message}")
|
||
oErrorOcurred = True
|
||
End Try
|
||
End If
|
||
Try
|
||
''Wenn kein Fehler nach der finalen Indexierung gesetzt wurde
|
||
If Override = True And Override_SQLCommand <> "" Then
|
||
DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
|
||
End If
|
||
If oErrorOcurred = False Then
|
||
|
||
Dim WORK_HISTORY_ENTRY = Nothing
|
||
|
||
Try
|
||
WORK_HISTORY_ENTRY = CURRENT_DT_PROFILE.Rows(0).Item("WORK_HISTORY_ENTRY")
|
||
If IsDBNull(WORK_HISTORY_ENTRY) Then
|
||
WORK_HISTORY_ENTRY = Nothing
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
WORK_HISTORY_ENTRY = Nothing
|
||
End Try
|
||
|
||
|
||
If Not IsNothing(WORK_HISTORY_ENTRY) Then
|
||
If WORK_HISTORY_ENTRY <> String.Empty Then
|
||
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
||
' einen Regulären Ausdruck laden
|
||
Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
|
||
' die Vorkommen im SQL-String auslesen
|
||
Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(WORK_HISTORY_ENTRY)
|
||
'####
|
||
' alle Vorkommen innerhalb der Namenkonvention durchlaufen
|
||
For Each element As System.Text.RegularExpressions.Match In elemente
|
||
Try
|
||
ValidatorLogger.Debug("element in RegeX WORK_HISTORY_ENTRY: " & element.Value)
|
||
Dim CTRL_ID = element.Value.Substring(2, element.Value.Length - 3)
|
||
CTRL_ID = CTRL_ID.Replace("CTRLID", "")
|
||
Dim value_from_control
|
||
If IsNumeric(CTRL_ID) Then
|
||
For Each oControl As Control In Me.PanelValidatorControl.Controls
|
||
Try
|
||
If IsNothing(DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Then
|
||
Continue For
|
||
End If
|
||
Catch ex As Exception
|
||
Continue For
|
||
End Try
|
||
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = CTRL_ID Then
|
||
'######
|
||
Select Case True
|
||
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
|
||
Try
|
||
Dim oBaseEdit As BaseEdit = oControl
|
||
value_from_control = oBaseEdit.EditValue
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
value_from_control = String.Empty
|
||
End Try
|
||
|
||
Case oControl.GetType() = GetType(System.Windows.Forms.ComboBox)
|
||
Dim cmb As Windows.Forms.ComboBox = oControl
|
||
Try
|
||
value_from_control = cmb.Text
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
value_from_control = String.Empty
|
||
End Try
|
||
Case oControl.GetType() = GetType(System.Windows.Forms.DateTimePicker)
|
||
Dim dtp As DateTimePicker = oControl
|
||
Try
|
||
value_from_control = dtp.Value.ToString
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
value_from_control = String.Empty
|
||
End Try
|
||
|
||
Case oControl.GetType() = GetType(System.Windows.Forms.CheckBox)
|
||
Dim chk As CheckBox = oControl
|
||
Try
|
||
value_from_control = chk.Checked
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
value_from_control = String.Empty
|
||
End Try
|
||
End Select
|
||
|
||
End If
|
||
Next
|
||
End If
|
||
|
||
If Not IsNothing(value_from_control) Then
|
||
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace(element.Value, value_from_control)
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Unexpected Error in Checking control values for WORK_HISTORY_ENTRY - ERROR: " & ex.Message)
|
||
End Try
|
||
Next
|
||
If WORK_HISTORY_ENTRY.ToString.Contains("@DATE") Then
|
||
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace("@DATE", Now.ToShortDateString)
|
||
End If
|
||
If WORK_HISTORY_ENTRY.ToString.Contains("@USERNAME") Then
|
||
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace("@USERNAME", USER_USERNAME)
|
||
End If
|
||
Else
|
||
WORK_HISTORY_ENTRY = ""
|
||
End If
|
||
End If
|
||
Dim ins = String.Format("INSERT INTO TBPM_FILES_WORK_HISTORY (PROFIL_ID, DOC_ID,WORKED_BY,WORKED_WHERE,STATUS_COMMENT) VALUES ({0},{1},'{2}','{3}','{4}')", CURRENT_ProfilGUID, CURRENT_DOC_ID, USER_USERNAME, System.Environment.MachineName, WORK_HISTORY_ENTRY)
|
||
DatabaseFallback.ExecuteNonQueryECM(ins)
|
||
Dim oFIsql As String
|
||
'Close_document_viewer()
|
||
If Current_Document.Extension = "pdf" Then
|
||
If Not IsNothing(WORK_HISTORY_ENTRY) Then
|
||
If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then
|
||
oFIsql = String.Format("SELECT * FROM TBPM_FILES_WORK_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBPM_FILES_WORK_HISTORY WHERE PROFIL_ID = {0} AND DOC_ID = {1})", CURRENT_ProfilGUID, CURRENT_DOC_ID)
|
||
Dim DT_ENTRY As DataTable = DatabaseFallback.GetDatatableECM(oFIsql) ', "Finish_WFStep2")
|
||
If Not IsNothing(DT_ENTRY) Then
|
||
If DT_ENTRY.Rows.Count = 1 Then
|
||
Dim AnnotationString = DT_ENTRY.Rows(0).Item("WORKED_WHEN") & " " & DT_ENTRY.Rows(0).Item("WORKED_BY") & ": " & DT_ENTRY.Rows(0).Item("STATUS_COMMENT")
|
||
ClassAnnotation.Annotate_PDF("Workflow-State:", AnnotationString, 0, False)
|
||
End If
|
||
End If
|
||
End If
|
||
Dim oAnnotateAllWHEs = CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_ALL_WORK_HISTORY_ENTRIES")
|
||
If CBool(oAnnotateAllWHEs) = True Then
|
||
oFIsql = String.Format("SELECT * FROM TBPM_FILES_WORK_HISTORY WHERE DOC_ID = {1} ORDER BY GUID", CURRENT_ProfilGUID, CURRENT_DOC_ID)
|
||
Dim DT_ENTRIES As DataTable = DatabaseFallback.GetDatatableECM(oFIsql) ', "Finish_WFStep3")
|
||
If Not IsNothing(DT_ENTRIES) Then
|
||
If DT_ENTRIES.Rows.Count > 0 Then
|
||
Dim AnnotationString As String = ""
|
||
For Each rw As DataRow In DT_ENTRIES.Rows
|
||
AnnotationString = AnnotationString & rw.Item("WORKED_WHEN") & " " & rw.Item("WORKED_BY") & ": " & rw.Item("STATUS_COMMENT") & vbNewLine
|
||
Next
|
||
ClassAnnotation.Annotate_PDF("Workflow History:", AnnotationString, 0, False, 10, 40)
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
'wenn Move2Folder aktiviert wurde
|
||
If Move2Folder <> "" And (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) Then
|
||
idxerr_message = allgFunk.Move2Folder(WMDocPathWindows, Move2Folder, CURRENT_ProfilGUID, WINDREAM_ALLG)
|
||
If idxerr_message <> "" Then
|
||
errormessage = "Fehler bei Move2Folder:" & vbNewLine & idxerr_message
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
End If
|
||
End If
|
||
|
||
|
||
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
errormessage = "Unexpected error in Finish:" & ex.Message
|
||
My.Settings.Save()
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
ValidatorLogger.Info("Unexpected error in Finish: " & ex.Message, True)
|
||
Exit Sub
|
||
End Try
|
||
Else
|
||
'lblerror.Visible = True
|
||
'lblerror.Text = errmessage
|
||
errormessage = oErrMsgMissingInput
|
||
frmError.ShowDialog()
|
||
oErrorOcurred = True
|
||
_ItemWorked = False
|
||
Exit Sub
|
||
End If
|
||
Else
|
||
ValidatorLogger.Info($"Overriding all in action for DocID: {CURRENT_DOC_ID} - ProfileID: {CURRENT_ProfilGUID}")
|
||
If Override_SQLCommand <> "" Then
|
||
If DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand) = False Then
|
||
oErrorOcurred = True
|
||
End If
|
||
End If
|
||
' Wert muss für den nächsten Beleg wieder zurückgesetzt werden.
|
||
OverrideAll = False
|
||
End If
|
||
If oErrorOcurred = True Then
|
||
MsgBox("Unhandled error occured in Finish Workflow-Step...Please check your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
_ItemWorked = False
|
||
Else
|
||
ValidatorLogger.Debug("Validation of document ended successfully!")
|
||
PRTF_PROFILE_FILES_WORK("Worked")
|
||
Dim oPROCSQL = $"EXEC PRPM_CHECK_NEXT_WF {CURRENT_DOC_GUID}"
|
||
If DatabaseFallback.ExecuteNonQueryECM(oPROCSQL) = False Then
|
||
ValidatorLogger.Warn($"Attention: Error executing proc {oPROCSQL}")
|
||
End If
|
||
End If
|
||
|
||
If CURRENT_JUMP_DOC_GUID <> 0 Then
|
||
CURRENT_DOC_GUID = 0
|
||
Me.Close()
|
||
Else
|
||
'Das nächste Dokument laden
|
||
Load_Next_Document(False)
|
||
|
||
Focus_FirstControl()
|
||
|
||
End If
|
||
|
||
btnSave.Enabled = True
|
||
End Sub
|
||
Private Function WMVectorResult_add_Items_From_DT(oDT As DataTable, oValueList As List(Of Object)) As List(Of Object)
|
||
For Each oRow As DataRow In oDT.Rows
|
||
oValueList.Add(oRow.Item(0))
|
||
Next
|
||
Return oValueList
|
||
End Function
|
||
Sub Focus_FirstControl()
|
||
If first_control Is Nothing = False Then
|
||
Dim otype = first_control.GetType
|
||
first_control.Focus()
|
||
End If
|
||
End Sub
|
||
Function Check_Missing_Control_Value(control As Control, typ As String) As Boolean
|
||
Select Case typ
|
||
Case "txt"
|
||
Dim oTextBox As BaseEdit = control
|
||
|
||
If IsNothing(oTextBox.EditValue) Then
|
||
Return True
|
||
End If
|
||
|
||
If oTextBox.EditValue.ToString = String.Empty Then
|
||
Return True
|
||
End If
|
||
End Select
|
||
|
||
Return False
|
||
End Function
|
||
|
||
Function Return_PM_VEKTOR(input As String, VKTBezeichner As String)
|
||
Dim PM_String As String
|
||
Try
|
||
Dim Bezeichner As String = VKTBezeichner.Replace("[%VKT", "")
|
||
PM_String = "DD-PM" & PMDelimiter & Bezeichner & PMDelimiter & input & PMDelimiter & USER_USERNAME & PMDelimiter & Now.ToString
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info(">> error in Return_PM_VEKTOR: " & ex.Message, True)
|
||
PM_String = "DD-PM ERROR: " & ex.Message
|
||
End Try
|
||
Return PM_String
|
||
|
||
End Function
|
||
Function Return_LOGString(input As String, old As String, indexname As String)
|
||
Dim PM_String As String
|
||
Try
|
||
If old = "DDFINALINDEX" Then
|
||
PM_String = $"DD-PMLog-FINAL{PMDelimiter}{indexname}{PMDelimiter}{input}{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
|
||
Else
|
||
PM_String = $"DD-PMLog-CHG{PMDelimiter}{indexname}{PMDelimiter}NEW: [{input}] - OLD: [{old}]{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info(">> error in Return_LOGString: " & ex.Message, True)
|
||
PM_String = "DD-PM ERROR: " & ex.Message
|
||
End Try
|
||
Return PM_String
|
||
|
||
End Function
|
||
Private Function WMIndexVectofield(input As String, NameVKTIndex As String, Optional PreventDuplicates As Boolean = False, Optional AllowAddNewValues As Boolean = True, Optional IndexBehaviour As String = "Add")
|
||
Dim oOldValue As Object = CURRENT_WMFILE.GetVariableValue(NameVKTIndex)
|
||
Dim oValueList As New List(Of Object)
|
||
Dim oNewValue As Object()
|
||
Dim oMissing As Boolean = False
|
||
|
||
If oOldValue IsNot Nothing AndAlso TypeOf oOldValue Is Object Then
|
||
|
||
' If new values are allowed, add the old values first
|
||
If AllowAddNewValues Then
|
||
oValueList = DirectCast(oOldValue, Object()).ToList()
|
||
End If
|
||
|
||
' Add the new value
|
||
oValueList.Add(input)
|
||
Else
|
||
' Just add input as the only value
|
||
oValueList.Add(input)
|
||
End If
|
||
|
||
If PreventDuplicates Then
|
||
oValueList = oValueList.
|
||
Distinct().
|
||
ToList()
|
||
End If
|
||
|
||
oNewValue = oValueList.ToArray()
|
||
|
||
If oNewValue.Length > 0 Then
|
||
'Jetzt die Datei indexieren
|
||
If Indexiere_File(CURRENT_WMFILE, NameVKTIndex, oNewValue) = False Then
|
||
oMissing = True
|
||
ValidatorLogger.Info("Error while indexing Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message)
|
||
oErrMsgMissingInput = "Error while indexing Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message
|
||
End If
|
||
End If
|
||
|
||
Return oMissing
|
||
End Function
|
||
Function DT_FOR_ARRAY(pArr As String()) As DataTable
|
||
Dim odt As New DataTable
|
||
odt.Columns.Add("ID", GetType(Integer))
|
||
odt.Columns.Add("Result", GetType(String))
|
||
Dim N As Integer = odt.Columns("ID").AutoIncrement
|
||
|
||
For Each oStr In pArr
|
||
odt.Rows.Add(N, oStr)
|
||
Next
|
||
Return odt
|
||
End Function
|
||
Function Check_UpdateIndexe() As Boolean
|
||
Dim oControlName
|
||
Dim oControlId As String
|
||
Try
|
||
Dim oMissing As Boolean = False
|
||
'Jedes Control auf panel durchlaufen
|
||
For Each oControl As Control In Me.PanelValidatorControl.Controls
|
||
'Der input der Box,Cmb muss jedes mal geleert werden
|
||
Dim oMyInput As String = ""
|
||
'Jedes Control in Konfig Tab durchlaufn
|
||
For Each oControlRow As DataRow In DTVWCONTROL_INDEX.Rows
|
||
Dim oCtrlType = oControlRow.Item("CTRL_TYPE").ToString
|
||
'Den Indexnamen auslesen
|
||
Dim oIndexName As String = oControlRow.Item("INDEX_NAME")
|
||
If oCtrlType = "LBL" Or oCtrlType = "LINE" Or oCtrlType = "BUTTON" Then
|
||
Continue For
|
||
End If
|
||
If oIndexName = "@@DISPLAY_ONLY" Then
|
||
'Logger.Debug($"Index [{oIndexName}] will be skipped")
|
||
Continue For
|
||
End If
|
||
|
||
|
||
Dim oDBControlName = oControlRow.Item("CTRL_NAME").ToString
|
||
Dim oIsRequired As Boolean = CBool(oControlRow.Item("VALIDATION"))
|
||
Dim oSQLCheckCommand As String = IIf(IsDBNull(oControlRow.Item("SQL_UEBERPRUEFUNG")), "", oControlRow.Item("SQL_UEBERPRUEFUNG"))
|
||
Dim oIsReadOnly As Boolean = CBool(oControlRow.Item("READ_ONLY"))
|
||
Dim oSaveChangeEnabledFalse As Boolean = CBool(oControlRow.Item("SAVE_CHANGE_ON_ENABLED"))
|
||
'Wenn eine Ablehnung aktiv ist und der Index identisch ist, dann skipping
|
||
If REJECTION_ACTIVE = True And (oIndexName = PROFIL_REJECT_ACTIONS_ATTRIBUTE Or oIndexName = PROFIL_REJECT_COMMENT_ATTRIBUTE) Then
|
||
ValidatorLogger.Debug($"Index [{oIndexName}] will be skipped as Rejection is in progress!")
|
||
Continue For
|
||
End If
|
||
'Readonly felder werden über finale indexe gefüllt, nicht mit SetControlData
|
||
If oIsReadOnly = True And oSaveChangeEnabledFalse = False Then
|
||
ValidatorLogger.Debug($"Skipping ReadOnly ControlName [{oDBControlName}] !")
|
||
Continue For
|
||
End If
|
||
|
||
|
||
Dim oControlType As String = oControlRow.Item("CTRL_TYPE")
|
||
Dim oIDBTyp As Integer
|
||
If IDB_ACTIVE Then
|
||
oIDBTyp = oControlRow.Item("IDB_TYP")
|
||
End If
|
||
|
||
oControlId = oControlRow.Item("GUID")
|
||
Dim oRegexMatch As String = ObjectEx.NotNull(oControlRow.Item("REGEX_MATCH"), String.Empty)
|
||
Dim oRegexMessage As String = ObjectEx.NotNull(oControlRow.Item("REGEX_MESSAGE_DE"), String.Empty)
|
||
oControlName = oControlRow.Item("CTRL_NAME")
|
||
Dim oOVERWRITE_DATA = oControlRow.Item("OVERWRITE_DATA")
|
||
|
||
'Nur wenn der Name der Zeile entspricht und der Index READ_ONLY FALSE ist
|
||
If oDBControlName = oControl.Name And oIndexName <> "DD PM-ONLY FOR DISPLAY" Then
|
||
ValidatorLogger.Debug("Indexierung für Control (" & oControlId & ") '" & oControlName & "' gestartet. Indexname '" & oIndexName & "'")
|
||
If oIndexName = "" Then
|
||
ValidatorLogger.Info(" >> Indexname is unexpected empty.")
|
||
Continue For
|
||
End If
|
||
Select Case True
|
||
Case oControl.GetType = GetType(LookupControl3)
|
||
Try
|
||
Dim lookup As LookupControl3 = oControl
|
||
If lookup.Properties.SelectedValues.Count = 0 And oIsRequired = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = $"Kein Auswahl getroffen in LookupGrid '{oControl.Name}'"
|
||
ValidatorLogger.Warn($"Kein Auswahl getroffen in LookupGrid '{oControl.Name}'")
|
||
oControl.BackColor = Color.Red
|
||
Exit For
|
||
Else
|
||
|
||
If lookup.Properties.MultiSelect = True Then
|
||
Dim oLookupRows As Integer = lookup.Properties.SelectedValues.Count
|
||
|
||
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
||
If oLookupRows > 0 Then
|
||
Dim ZeilenGrid As Integer = 0
|
||
Dim myVektorArr As String()
|
||
'Jeden Werte des Datagridviews durchlaufen
|
||
For Each value As String In lookup.Properties.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
|
||
If IDB_ACTIVE = False Then
|
||
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing von LookupGrid - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn($"Error while indexing [{oIndexName}] von LookupGrid - ERROR: " & idxerr_message)
|
||
Exit For
|
||
End If
|
||
Else
|
||
Dim oMyDT = DT_FOR_ARRAY(myVektorArr)
|
||
|
||
If IDBData.SetVariableValue(oIndexName, oMyDT, oOVERWRITE_DATA, oIDBTyp) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing IDB-Object LookupGrid"
|
||
ValidatorLogger.Warn($"Error while indexing IDB-Object LookupGrid [{oIndexName}] ")
|
||
Exit For
|
||
End If
|
||
End If
|
||
Else
|
||
Dim oValues As New List(Of Object) From {String.Empty}
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, oValues.ToArray) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing von LookupGrid - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn($"Error while indexing LookupGrid [{oIndexName}] ")
|
||
Exit For
|
||
End If
|
||
Else
|
||
For Each ochangedLookub In listChangedLookup
|
||
If lookup.Name = ochangedLookub Then
|
||
IDBData.Delete_AttributeData(CURRENT_DOC_ID, oIndexName)
|
||
Exit For
|
||
End If
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
|
||
Else
|
||
oMyInput = lookup.Properties.SelectedValues.FirstOrDefault()
|
||
If IsNothing(oMyInput) And oIsRequired = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = $"Could not get FirstOrDefault-Value of LookUpGrid! - LookUPGridName: {lookup.Name}"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
ElseIf IsNothing(oMyInput) And oIsRequired = False Then
|
||
For Each ochangedLookub In listChangedLookup
|
||
If lookup.Name = ochangedLookub Then
|
||
IDBData.Delete_AttributeData(CURRENT_DOC_ID, oIndexName)
|
||
Exit For
|
||
End If
|
||
Next
|
||
Continue For
|
||
End If
|
||
'den aktuellen Wert in windream auslesen
|
||
Dim oValueFromObject
|
||
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oValueFromObject = ReturnVektor_IndexValue(oIndexName)
|
||
Else
|
||
oValueFromObject = GetVariableValuefromSource(oIndexName, oIDBTyp)
|
||
Dim oValueIsIndifferent As Boolean = False
|
||
If Not IsNothing(oValueFromObject) Then
|
||
|
||
If IDB_ACTIVE = False Then
|
||
If oValueFromObject.ToString = "System.Object[]" Then
|
||
If oValueFromObject.Length = 1 Then
|
||
oValueFromObject = oValueFromObject(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
||
oValueFromObject = oValueFromObject(0)
|
||
End If
|
||
End If
|
||
End If
|
||
Else
|
||
oValueFromObject = ""
|
||
End If
|
||
|
||
If IsNothing(oValueFromObject) Then
|
||
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is NOTHING!")
|
||
oValueIsIndifferent = True
|
||
End If
|
||
If oValueIsIndifferent = False Then
|
||
If IsDBNull(oValueFromObject) Then
|
||
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is DBNULL!")
|
||
oValueIsIndifferent = True
|
||
End If
|
||
End If
|
||
Dim oValueSourceIsDifferent As Boolean = False
|
||
If oValueIsIndifferent = False Then
|
||
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is [{oValueFromObject}]")
|
||
Try
|
||
If oValueFromObject <> oMyInput Then
|
||
oValueSourceIsDifferent = True
|
||
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: There is a difference between oValueFromObject and [{oValueFromObject}]")
|
||
End If
|
||
Catch ex As Exception
|
||
oValueSourceIsDifferent = True
|
||
ValidatorLogger.Debug($"oValueFromObject <> oMyInput not possible as one object might be a multiple row object")
|
||
End Try
|
||
|
||
Else
|
||
|
||
End If
|
||
|
||
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
||
'IsNothing(oValueFromObject) Or oValueFromObject <> oMyInput
|
||
If (oValueIsIndifferent = True Or oValueSourceIsDifferent = True) Then
|
||
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
|
||
'Hier muss nun separat as Vektorfeld indexiert werden
|
||
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Textbox as VEKTOR - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDB_ACTIVE = False Then
|
||
Dim result() As String
|
||
ReDim Preserve result(0)
|
||
result(0) = oMyInput
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Textbox - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
|
||
Exit For
|
||
End If
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim oLogStr = Return_LOGString(oMyInput, oValueFromObject, oIndexName)
|
||
WMIndexVectofield(oLogStr, PROFIL_LOGINDEX)
|
||
'Else
|
||
' IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogStr)
|
||
End If
|
||
End If
|
||
'Nun das Logging
|
||
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
|
||
Try
|
||
'Dim oWrongInputMessage = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.WrongInputControl")
|
||
Dim oWrongInputMessage = S.Falsche_Eingabe
|
||
|
||
ValidatorLogger.Debug("Validating Textbox..")
|
||
|
||
If oRegexMatch <> String.Empty AndAlso Not Regex.IsMatch(oControl.Text, oRegexMatch) Then
|
||
oMissing = True
|
||
|
||
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
|
||
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
If oRegexMessage <> String.Empty Then
|
||
oErrMsgMissingInput &= ":" & vbCrLf & oRegexMessage
|
||
End If
|
||
|
||
oControl.BackColor = Color.Red
|
||
Exit For
|
||
End If
|
||
|
||
'as erstes überprüfen ob überhaupt etwas eingetragen worden ist
|
||
If Check_Missing_Control_Value(oControl, "txt") = True And oIsRequired = True Then 'NICHTS EINGETRAGEN
|
||
oMissing = True
|
||
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
oControl.BackColor = Color.Red
|
||
Exit For
|
||
Else
|
||
ValidatorLogger.Debug("Reading current value from Textbox")
|
||
|
||
Dim oTextEdit As BaseEdit = DirectCast(oControl, BaseEdit)
|
||
oMyInput = ClassFormat.GetStringValue(oTextEdit.EditValue)
|
||
|
||
ValidatorLogger.Debug("Form Value: [{0}]", oMyInput)
|
||
|
||
'den aktuellen Wert in windream auslesen
|
||
Dim oSourceValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
|
||
|
||
ValidatorLogger.Debug("Current Value: [{0}]", oSourceValue)
|
||
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oSourceValue = ReturnVektor_IndexValue(oIndexName)
|
||
Else
|
||
'wertWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
||
If Not IsNothing(oSourceValue) Then
|
||
If oSourceValue.ToString = "System.Object[]" Then
|
||
If oSourceValue.Length = 1 Then
|
||
oSourceValue = oSourceValue(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
||
oSourceValue = oSourceValue(0)
|
||
End If
|
||
End If
|
||
Else
|
||
oSourceValue = ""
|
||
End If
|
||
End If
|
||
Dim oSetValue As Boolean = False
|
||
If IsDBNull(oSourceValue) Then
|
||
oSetValue = True
|
||
End If
|
||
If oSetValue = False Then
|
||
If IsNothing(oSourceValue) Then
|
||
oSetValue = True
|
||
End If
|
||
End If
|
||
If oSetValue = False Then
|
||
Try
|
||
If oSourceValue <> oMyInput Then
|
||
oSetValue = True
|
||
End If
|
||
Catch ex As Exception
|
||
oSetValue = True
|
||
End Try
|
||
End If
|
||
|
||
ValidatorLogger.Debug("Preparing Indexing for Textbox")
|
||
|
||
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
||
If oSetValue = True Then
|
||
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
|
||
'Hier muss nun separat as Vektorfeld indexiert werden
|
||
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing textbox as VEKTOR - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDB_ACTIVE = False Then
|
||
Dim result() As String
|
||
ReDim Preserve result(0)
|
||
result(0) = oMyInput
|
||
|
||
ValidatorLogger.Debug("Indexing Index [{0}] with value [{1}]", oMyInput, oIndexName)
|
||
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Textbox - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
|
||
Exit For
|
||
End If
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim oMyLogString = Return_LOGString(oMyInput, oSourceValue, oIndexName)
|
||
WMIndexVectofield(oMyLogString, PROFIL_LOGINDEX)
|
||
'Else
|
||
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oMyLogString)
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
oErrMsgMissingInput = "Unexpected error in Check_UpdateIndexe TextBox '" & oControl.Name & "' - Check the log"
|
||
ValidatorLogger.Error(ex)
|
||
Dim st As New StackTrace(True)
|
||
st = New StackTrace(ex, True)
|
||
ValidatorLogger.Warn("Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
|
||
Return False
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(System.Windows.Forms.ComboBox)
|
||
Try
|
||
ValidatorLogger.Debug($"Working on Combobox...")
|
||
Dim cmb As Windows.Forms.ComboBox = oControl
|
||
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
||
If cmb.SelectedIndex = -1 And oIsRequired = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Please Choose an entry out of ComboBox '" & cmb.Name & "'"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
'ElseIf cmb.SelectedIndex <> -1 Then
|
||
Else 'Änderung 28.08.2018: Ein leerer Wert in der Combobox wird in den Index geschrieben
|
||
oMyInput = cmb.Text
|
||
ValidatorLogger.Debug($"inputvalue Combobox: {cmb.Text}")
|
||
Dim oValue
|
||
'den aktuellen Wert in windream auslesen
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oValue = ReturnVektor_IndexValue(oIndexName)
|
||
Else
|
||
oValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
|
||
End If
|
||
If IsNothing(oValue) Then
|
||
ValidatorLogger.Debug($"oValue is nothing...Value EmptyString will be used")
|
||
oValue = String.Empty
|
||
End If
|
||
Dim oIndexType As String = "Index"
|
||
Try
|
||
If oValue.ToString = "System.Object[]" Then
|
||
oIndexType = "Vector"
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Debug($"Exception while oValue.ToString = System.Object[]...")
|
||
End Try
|
||
If oIndexType = "Vector" Then
|
||
ValidatorLogger.Debug($"Control with ID{oControlId} is a vectorfield...")
|
||
If oValue.Length = 1 Then
|
||
oValue = oValue(0).ToString
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
||
oValue = oValue(0).ToString
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug($"oValue is a regular item...")
|
||
Dim oitsadifference As Boolean = False
|
||
Try
|
||
If oValue.ToString <> oMyInput.ToString Then
|
||
oitsadifference = True
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Could not convert the oValue of Control with ID{oControlId}...")
|
||
ValidatorLogger.Error(ex.Message)
|
||
oitsadifference = True
|
||
End Try
|
||
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
||
If oitsadifference = True Then
|
||
ValidatorLogger.Debug($"Index with ID{oControlId} will now be indexed...")
|
||
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
|
||
'Hier muss nun separat as Vektorfeld indexiert werden
|
||
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Combobox as VEKTOR - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDB_ACTIVE = False Then
|
||
Dim result() As String
|
||
ReDim Preserve result(0)
|
||
result(0) = oMyInput
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
||
cmb.DroppedDown = True
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Combobox - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
|
||
cmb.DroppedDown = True
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error indexing combobox idb"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim ologStr = Return_LOGString(oMyInput, oValue, oIndexName)
|
||
WMIndexVectofield(ologStr, PROFIL_LOGINDEX)
|
||
'Else
|
||
'IDBData.SetVariableValue(PROFIL_LOGINDEX, ologStr)
|
||
End If
|
||
|
||
End If
|
||
'Nun das Logging
|
||
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug($"oitsadifference = False...Index with ID {oControlId} will not be indexed...")
|
||
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
||
End If
|
||
End If
|
||
|
||
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
Dim st As New StackTrace(True)
|
||
st = New StackTrace(ex, True)
|
||
MsgBox($"Unexpected error in Check_UpdateIndexe Combobox : ID{oControlId} " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Error:")
|
||
ValidatorLogger.Info($"Unexpected error in Check_UpdateIndexe Combobox : ID{oControlId}" & ex.Message)
|
||
Return False
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(DateTimePicker)
|
||
Try
|
||
Dim dtp As DateTimePicker = oControl
|
||
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
||
If oIsRequired = True And dtp.Value.ToString = String.Empty Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Please Choose DateValue for field'" & dtp.Name & "'"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then
|
||
oMyInput = CDate(dtp.Value)
|
||
'den aktuellen Wert in windream auslesen
|
||
' Dim wertWD As String = CURRENT_WMFILE.GetVariableValue(_IDXName)
|
||
Dim oObjectValue
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
oObjectValue = ReturnVektor_IndexValue(oIndexName)
|
||
Else
|
||
oObjectValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
|
||
End If
|
||
If IsNothing(oObjectValue) Or IsDBNull(oObjectValue) Then
|
||
oObjectValue = CDate("01.01.1900")
|
||
End If
|
||
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
||
If oObjectValue <> oMyInput Then
|
||
'Wenn der WErt in ein Vektorfeld geschrieben wird
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
'Input = die String komponente as String
|
||
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
|
||
'Hier muss nun separat as Vektorfeld indexiert werden
|
||
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing DatePicker as VEKTOR - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDB_ACTIVE = False Then
|
||
Dim result()
|
||
ReDim Preserve result(0)
|
||
result(0) = CDate(oMyInput)
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing DatePicker- ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error indexing datepicker idb"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim oLogstr = Return_LOGString(oMyInput, oObjectValue, oIndexName)
|
||
WMIndexVectofield(oLogstr, PROFIL_LOGINDEX)
|
||
'Else
|
||
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogstr)
|
||
End If
|
||
End If
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug("Value WD ('" & oObjectValue.ToString & "') = Input-value ('" & oMyInput.ToString & "')")
|
||
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug("DateValue is 01.01.0001 00:00:00")
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(CheckBox)
|
||
Try
|
||
Dim chk As CheckBox = oControl
|
||
oMyInput = chk.Checked.ToString
|
||
|
||
If chk.CheckState = CheckState.Indeterminate And oIsRequired = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Please set Checkbox value for field '" & chk.Name & "'"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
|
||
'den aktuellen Wert in windream auslesen
|
||
Dim WertWD As String
|
||
Dim oBoolValue As Boolean
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
WertWD = ReturnVektor_IndexValue(oIndexName)
|
||
If WertWD = "" Then
|
||
oBoolValue = False
|
||
Else
|
||
oBoolValue = CBool(WertWD)
|
||
End If
|
||
Else
|
||
Dim _Value
|
||
Dim oObjectCheck = GetVariableValuefromSource(oIndexName, oIDBTyp)
|
||
|
||
If IsNothing(oObjectCheck) Or IsDBNull(oObjectCheck) Then
|
||
oBoolValue = False
|
||
Else
|
||
If oObjectCheck.ToString = "System.Object[]" Then
|
||
If oObjectCheck.Length = 1 Then
|
||
_Value = oObjectCheck(0)
|
||
Else '
|
||
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
||
_Value = oObjectCheck(0)
|
||
End If
|
||
Else
|
||
_Value = oObjectCheck
|
||
End If
|
||
oBoolValue = CBool(_Value)
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
|
||
' Dim Bool_WD = CBool(CURRENT_WMFILE.GetVariableValue(_IDXName))
|
||
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
||
If oBoolValue <> chk.Checked Then
|
||
Dim result() As String
|
||
ReDim Preserve result(0)
|
||
If chk.Checked Then
|
||
result(0) = 1
|
||
Else
|
||
result(0) = 0
|
||
End If
|
||
|
||
If oIndexName.StartsWith("[%VKT") Then
|
||
'Input = die String komponente mit Boolean as String
|
||
oMyInput = Return_PM_VEKTOR(chk.Checked.ToString, oIndexName)
|
||
'Hier muss nun separat as Vektorfeld indexiert werden
|
||
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Checkbox as VEKTOR - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Checkbox - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
If IDBData.SetVariableValue(oIndexName, chk.Checked.ToString) Then
|
||
oErrMsgMissingInput = "error indexing checkboxidb"
|
||
Exit For
|
||
End If
|
||
End If
|
||
If IDB_ACTIVE = False Then
|
||
If PROFIL_LOGINDEX <> "" Then
|
||
Dim oLogstr = Return_LOGString(CBool(result(0)).ToString, WertWD, oIndexName)
|
||
WMIndexVectofield(oLogstr, PROFIL_LOGINDEX)
|
||
'Else
|
||
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogstr)
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(DataGridView)
|
||
Try
|
||
Dim dgv As DataGridView = oControl
|
||
|
||
Dim Zeilen As Integer = 0
|
||
For Each row As DataGridViewRow In dgv.Rows
|
||
Dim exists = False
|
||
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
||
If row.Cells(0).Value Is Nothing = False Then
|
||
Zeilen += 1
|
||
End If
|
||
Next
|
||
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
||
If oIsRequired = True And Zeilen = 0 Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Fehlende Eingabe in Vektorfeld '" & dgv.Name & "'"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
ElseIf Zeilen > 0 Then
|
||
Dim ZeilenGrid As Integer = 0
|
||
Dim myVektorArr As String()
|
||
'Jeden Werte des Datagridviews durchlaufen
|
||
For Each row As DataGridViewRow In dgv.Rows
|
||
Dim exists = False
|
||
Select Case oControlType
|
||
Case "TABLE"
|
||
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
||
Dim str As String
|
||
If row.Cells(0).Value Is Nothing = False Then
|
||
'Das Array anpassen
|
||
ReDim Preserve myVektorArr(ZeilenGrid)
|
||
For i = 0 To row.Cells.Count - 1
|
||
Select Case i
|
||
Case 0
|
||
str = row.Cells(i).Value
|
||
Case Else
|
||
str = str & PMDelimiter & row.Cells(i).Value
|
||
End Select
|
||
|
||
Next
|
||
'Den Wert im Array speichern
|
||
myVektorArr(ZeilenGrid) = str
|
||
ZeilenGrid += 1
|
||
|
||
End If
|
||
Case Else
|
||
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
||
If row.Cells(0).Value Is Nothing = False Then
|
||
'Das Array anpassen
|
||
ReDim Preserve myVektorArr(ZeilenGrid)
|
||
'Den Wert im Array speichern
|
||
myVektorArr(ZeilenGrid) = row.Cells(0).Value.ToString
|
||
ZeilenGrid += 1
|
||
End If
|
||
End Select
|
||
|
||
Next
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error while indexing Vektorfeld - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
Else
|
||
Dim oDT As DataTable = DT_FOR_ARRAY(myVektorArr)
|
||
If oDT.Rows.Count > 0 Then
|
||
If IDBData.SetVariableValue(oIndexName, oDT, True) = False Then
|
||
oMissing = True
|
||
oErrMsgMissingInput = "Error indexing Datagridview idb"
|
||
ValidatorLogger.Warn(oErrMsgMissingInput)
|
||
Exit For
|
||
End If
|
||
End If
|
||
End If
|
||
'Jetzt die Datei indexieren
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
|
||
Case oControl.GetType = GetType(GridControl)
|
||
Dim oGrid As GridControl = oControl
|
||
Dim oSettings = New ControlSettings() With {
|
||
.IndexName = oIndexName,
|
||
.ControlType = GetType(GridControl).ToString,
|
||
.Name = oControlName,
|
||
.IsRequired = oIsRequired,
|
||
.IDBAttributeType = oIDBTyp
|
||
}
|
||
Dim oGridColumnDefinition As DataTable = DT_COLUMNS_GRID.Clone()
|
||
Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
|
||
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oGridColumnDefinition, LoadOption.PreserveChanges)
|
||
|
||
Dim oResult = ValidateGridControl(oGrid, oSettings, oGridColumnDefinition, oMissing, oErrMsgMissingInput)
|
||
If oResult = False Then
|
||
Exit For
|
||
End If
|
||
|
||
|
||
End Select
|
||
End If 'End If für Control und ReadOnly = False
|
||
Next
|
||
|
||
' If Error happened in inner For, exit the outer as well
|
||
If oMissing = True Then
|
||
ValidatorLogger.Info("oMissing = True...Exiting")
|
||
Exit For
|
||
End If
|
||
Next
|
||
If oMissing = True Then
|
||
ValidatorLogger.Warn("Check_UpdateIndexe: ERROR or Missing Indexing - returning False")
|
||
Return False
|
||
Else
|
||
ValidatorLogger.Debug("Check_UpdateIndexe: Everything OK - returning True")
|
||
Return True
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Check_UpdateIndexe - ControlID: {oControlId},{oControlName}")
|
||
ValidatorLogger.Error(ex)
|
||
Dim st As New StackTrace(ex, True)
|
||
MsgBox($"Unexpected error in Check_UpdateIndexe ControlID,Name: {oControlId},{oControlName}" & vbNewLine & ex.Message & vbNewLine & "Line: " & st.GetFrame(0).GetFileLineNumber().ToString, MsgBoxStyle.Critical, "Error:")
|
||
ValidatorLogger.Info("Unexpected error in Check_UpdateIndexe:" & ex.Message & " - Line: " & st.GetFrame(0).GetFileLineNumber().ToString, True)
|
||
Return False
|
||
End Try
|
||
|
||
End Function
|
||
|
||
Private Class ControlSettings
|
||
Public Name As String
|
||
Public IsRequired As Boolean
|
||
Public IndexName As String
|
||
Public ControlType As String
|
||
Public IDBAttributeType As Integer
|
||
End Class
|
||
|
||
Private Function ValidateGridControl(pGrid As GridControl, pSettings As ControlSettings, pColumnDefinition As DataTable, ByRef pMissing As Boolean, ByRef pMissingMessage As String) As Boolean
|
||
Try
|
||
Dim oRowCount As Integer = pGrid.DataSource.Rows.Count
|
||
|
||
ValidatorLogger.Debug("Grid Row Count: [{0}]", oRowCount)
|
||
|
||
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
||
If pSettings.IsRequired = True And oRowCount = 0 Then
|
||
pMissing = True
|
||
pMissingMessage = "Fehlende Eingabe in Tabelle '" & pGrid.Name & "'"
|
||
pGrid.BackColor = Color.Red
|
||
ValidatorLogger.Warn(pMissingMessage)
|
||
|
||
'Exit For
|
||
Return False
|
||
|
||
End If
|
||
|
||
If oRowCount > 0 Then
|
||
|
||
Dim oView As GridView = pGrid.FocusedView
|
||
Dim oDatasource As DataTable = pGrid.DataSource
|
||
Dim oRowIndex As Integer = 0
|
||
|
||
For Each oRow As DataRow In oDatasource.Rows
|
||
For Each oColumn As DataColumn In oRow.Table.Columns
|
||
|
||
Dim oValue = oRow.ItemEx(oColumn.ColumnName, "")
|
||
Dim oDefinition = pColumnDefinition.AsEnumerable().
|
||
Where(Function(row) row.Item("SPALTENNAME") = oColumn.ColumnName).
|
||
FirstOrDefault()
|
||
|
||
If oDefinition IsNot Nothing Then
|
||
Dim oIsRequired = oDefinition.Item("VALIDATION")
|
||
|
||
If oIsRequired = True And oValue = String.Empty Then
|
||
|
||
' Translates the visible row index into the internal rowhandle
|
||
' they might be different because of sorting
|
||
Dim oRowHandle = oView.GetRowHandle(oRowIndex)
|
||
|
||
oView.FocusedRowHandle = oRowHandle
|
||
oView.FocusedColumn = oView.Columns.Item(oColumn.ColumnName)
|
||
|
||
pMissing = True
|
||
pMissingMessage = $"Fehlende Eingabe in Tabelle '{pGrid.Name}' in Spalte '{oDefinition.Item("SPALTEN_HEADER_LANG")}', Zeile '{oRowHandle + 1}'"
|
||
Return False
|
||
End If
|
||
End If
|
||
Next
|
||
|
||
oRowIndex += 1
|
||
Next
|
||
|
||
Dim ZeilenGrid As Integer = 0
|
||
Dim myVektorArr As String()
|
||
'Jeden Werte des Datagridviews durchlaufen
|
||
For Each oRow As DataRow In pGrid.DataSource.Rows
|
||
Dim exists = False
|
||
Select Case pSettings.ControlType
|
||
Case "DevExpress.XtraGrid.GridControl" '"TABLE"
|
||
'Dim oRowValue = oRow.Item(0)
|
||
'If IsNothing(oRowValue) Then
|
||
' oRowValue = String.Empty
|
||
'ElseIf IsDBNull(oRowValue) Then
|
||
' oRowValue = String.Empty
|
||
'End If
|
||
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
||
Dim str As String = String.Empty
|
||
'If oRowValue <> String.Empty Then
|
||
'Das Array anpassen
|
||
ReDim Preserve myVektorArr(ZeilenGrid)
|
||
|
||
Dim oValueList As New List(Of String)
|
||
|
||
For Each oMyItem As Object In oRow.ItemArray
|
||
oMyItem = ObjectEx.NotNull(oMyItem, String.Empty)
|
||
Dim oType As String = $"Typ: {oMyItem.GetType().FullName}"
|
||
' Convert to string using InvariantCulture, so converting back from string does not screw up values
|
||
If TypeOf oMyItem IsNot String Then
|
||
'oMyItem = String.Format(CultureInfo.InvariantCulture, "{0}", oMyItem)
|
||
|
||
If TypeOf oMyItem Is Double Then
|
||
oMyItem = DirectCast(oMyItem, Double).ToString(CultureInfo.InvariantCulture)
|
||
If TypeOf oMyItem Is String Then
|
||
oMyItem = oMyItem.ToString.Replace(".", ",")
|
||
End If
|
||
End If
|
||
Else
|
||
|
||
End If
|
||
oValueList.Add(oMyItem)
|
||
Next
|
||
|
||
str = String.Join(PMDelimiter, oValueList.ToArray)
|
||
|
||
' 22.10.2021 Attempt at fixing empty lines appearing in indexes
|
||
ValidatorLogger.Debug("Grid Value before saving: [{0}]", str)
|
||
If str.Trim.Length = 0 Or str.Trim.Replace(PMDelimiter, "").Length = 0 Then
|
||
ValidatorLogger.Debug("Empty line in Grid [{0}]. Skipping.", pSettings.Name)
|
||
Continue For
|
||
End If
|
||
|
||
'Den Wert im Array speichern
|
||
myVektorArr(ZeilenGrid) = str
|
||
ZeilenGrid += 1
|
||
'End If
|
||
Case Else
|
||
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
||
If oRow.Item(0) Is Nothing = False Then
|
||
'Das Array anpassen
|
||
ReDim Preserve myVektorArr(ZeilenGrid)
|
||
'Den Wert im Array speichern
|
||
myVektorArr(ZeilenGrid) = oRow.Item(0).Value.ToString
|
||
ZeilenGrid += 1
|
||
End If
|
||
End Select
|
||
|
||
Next
|
||
|
||
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, pSettings.IndexName, myVektorArr) = False Then
|
||
pMissing = True
|
||
pMissingMessage = $"Error while indexing table (1) {pGrid.Name} - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(pMissingMessage)
|
||
'Exit For
|
||
Return False
|
||
End If
|
||
Else
|
||
Dim oMyDT = DT_FOR_ARRAY(myVektorArr)
|
||
If oMyDT.Rows.Count > 0 Then
|
||
If IDBData.SetVariableValue(pSettings.IndexName, oMyDT, True, pSettings.IDBAttributeType) = False Then
|
||
pMissing = True
|
||
pMissingMessage = $"Error while indexing table IDB (1) {pGrid.Name} - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(pMissingMessage)
|
||
'Exit For
|
||
Return False
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
|
||
Else ' Row Count = 0
|
||
|
||
Dim oValue As New List(Of Object) From {String.Empty}
|
||
|
||
If IDB_ACTIVE = False Then
|
||
If Indexiere_File(CURRENT_WMFILE, pSettings.IndexName, oValue.ToArray) = False Then
|
||
pMissing = True
|
||
'oErrorMessage = "Error while indexing der Tabelle - ERROR: " & idxerr_message
|
||
pMissingMessage = $"Error while indexing table (2) {pGrid.Name} - ERROR: " & idxerr_message
|
||
ValidatorLogger.Warn(pMissingMessage)
|
||
'Exit For
|
||
Return False
|
||
End If
|
||
Else
|
||
Dim oOldAttributeResult = IDBData.GetVariableValue(pSettings.IndexName, pSettings.IDBAttributeType)
|
||
Dim oTypeOldResult = oOldAttributeResult.GetType.ToString
|
||
If oTypeOldResult = "System.Data.DataTable" Then
|
||
Dim oDT As DataTable = IDBData.GetVariableValue(pSettings.IndexName, pSettings.IDBAttributeType)
|
||
If oDT.Rows.Count > 0 Then
|
||
ValidatorLogger.Debug("User cleared the grid, so data needs to be erased!")
|
||
IDBData.Delete_AttributeData(CURRENT_DOC_ID, pSettings.IndexName)
|
||
End If
|
||
Else
|
||
ValidatorLogger.Debug("(String) User cleared the grid, so data needs to be erased!")
|
||
IDBData.Delete_AttributeData(CURRENT_DOC_ID, pSettings.IndexName)
|
||
End If
|
||
|
||
End If
|
||
|
||
End If
|
||
|
||
Return True
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
|
||
|
||
Private Function Indexiere_File(_dok As WINDREAMLib.WMObject, pIndexName As String, pIndexValues As Object) As Boolean
|
||
Dim indexierung_erfolgreich As Boolean = False
|
||
idxerr_message = ""
|
||
Try
|
||
Dim oIndexType As Integer = WINDREAM_MOD.GetIndexType(pIndexName)
|
||
If oIndexType > 4095 Then
|
||
ValidatorLogger.Debug("Es Handelt sich um einen VektorIndex...")
|
||
Dim oExistingItems = WINDREAM_MOD.GetIndexValue(CURRENT_DOC_PATH, pIndexName)
|
||
|
||
Dim oListofString As New List(Of String)
|
||
If pIndexValues.Length = 0 Then
|
||
ValidatorLogger.Debug("oSplitArray.Length = 0")
|
||
oListofString.Add(pIndexValues(0))
|
||
Else
|
||
ValidatorLogger.Debug($"pIndexValues.Length is > 0 [{pIndexValues.length}] ...")
|
||
For Each oStr In pIndexValues
|
||
ValidatorLogger.Debug("pIndexValues - oString : {0}", oStr)
|
||
oListofString.Add(oStr)
|
||
Next
|
||
End If
|
||
|
||
If oExistingItems.Count > 0 Then
|
||
ValidatorLogger.Debug("oOverwrite = False and WMObject already contains [{0}] values in attribute,Values will be concatted", oExistingItems.Count)
|
||
oListofString = oExistingItems.Concat(oListofString).ToList()
|
||
End If
|
||
oListofString = oListofString.Distinct().ToList()
|
||
indexierung_erfolgreich = WINDREAM_MOD.SetFileIndexLoS(CURRENT_DOC_PATH, pIndexName, oListofString, CURRENT_WMObjecttype)
|
||
Else
|
||
Dim oStringValue As String = pIndexValues(0).ToString
|
||
indexierung_erfolgreich = WINDREAM_MOD.SetFileIndex(CURRENT_DOC_PATH, pIndexName, oStringValue, CURRENT_WMObjecttype)
|
||
End If
|
||
Return indexierung_erfolgreich
|
||
|
||
|
||
''Die Arrays vorbereiten
|
||
'Dim arrIndex() As String = Nothing
|
||
'Dim arrValue() As String = Nothing
|
||
'arrIndex = Nothing
|
||
'arrValue = Nothing
|
||
''Den Indexnamen übergeben
|
||
'ReDim Preserve arrIndex(0)
|
||
'arrIndex(0) = pIndexName
|
||
''Das Array der Idnexwerte überprüfen
|
||
'If pIndexValues Is Nothing = False Then
|
||
' If pIndexValues.Length() > 1 Then
|
||
' ValidatorLogger.Debug("Indexing Index '" & pIndexName & "' with Arrayvalue")
|
||
|
||
' For Each oValue In pIndexValues
|
||
' Try
|
||
' ValidatorLogger.Debug("Current Index Value for [{0}] is [{1}]", pIndexName, oValue)
|
||
' Catch ex As Exception
|
||
' ValidatorLogger.Warn("Current Index Value for [{0}] could not be read!", pIndexName)
|
||
' End Try
|
||
' Next
|
||
|
||
' Dim anzahl As Integer = 0
|
||
' For Each indexvalue As String In pIndexValues
|
||
' ReDim Preserve arrValue(anzahl)
|
||
' arrValue(anzahl) = indexvalue
|
||
' anzahl += 1
|
||
' Next
|
||
' Else
|
||
' ValidatorLogger.Debug("Indexing Index '" & pIndexName & "' with value '" & pIndexValues(0) & "'")
|
||
' ReDim Preserve arrValue(0)
|
||
' arrValue(0) = pIndexValues(0).ToString
|
||
' End If
|
||
' 'Jetzt das eigentliche Indexieren der Datei
|
||
' 'File_indexiert = Me._windreamPM.RunIndexing(_dok, arrIndex, arrValue)
|
||
' indexierung_erfolgreich = WINDREAM.RunIndexing(_dok, arrIndex, arrValue)
|
||
'Return indexierung_erfolgreich
|
||
'End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
idxerr_message = "Unexpected error in Indexiere_File: " & ex.Message.ToString
|
||
ValidatorLogger.Info("Unexpected error in Indexiere_File: " & ex.Message.ToString, True)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
|
||
Private Sub btnfinal_Click(sender As System.Object, e As System.EventArgs)
|
||
Finish_WFStep()
|
||
End Sub
|
||
|
||
Sub Datei_ueberspringen()
|
||
Try
|
||
ValidatorLogger.Debug("Skipping document....(Datei_ueberspringen)")
|
||
'Das Dokument freigeben
|
||
'PRTF_PROFILE_FILES_WORK("FreeFile")
|
||
Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
|
||
DatabaseFallback.ExecuteNonQueryECM(sql)
|
||
|
||
Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}"
|
||
DatabaseFallback.ExecuteNonQueryECM(oSQL)
|
||
ValidatorLogger.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}")
|
||
Load_Next_Document(False)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Fehler bei Überspringen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
End Try
|
||
End Sub
|
||
Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean
|
||
Try
|
||
Dim sql = $"EXEC PRTF_PROFILE_FILES_WORK {CURRENT_DOC_ID},{CURRENT_ProfilGUID},{USER_ID},'{pMode}'"
|
||
Return DatabaseFallback.ExecuteNonQueryECM(sql)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
Private Sub delete_active_File()
|
||
Try
|
||
Dim result As MsgBoxResult
|
||
result = MessageBox.Show("Sind Sie sicher dass Sie dieses Dokument unwiderruflich löschen wollen?" & vbNewLine & "Danach wird die nächste Datei angezeigt!", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
||
If result = MsgBoxResult.Yes Then
|
||
Try
|
||
DocumentViewerValidator.CloseDocument()
|
||
DocumentViewerValidator.Done()
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in delete_active_File DocumentViewerValidator.Done: {ex.Message}")
|
||
End Try
|
||
Thread.Sleep(500)
|
||
Application.DoEvents()
|
||
FreeFile()
|
||
'Aus der Tabelle löschen
|
||
Dim oDelete = $"DELETE FROM TBPM_PROFILE_FILES WHERE GUID = {CURRENT_DOC_GUID}"
|
||
If DatabaseFallback.ExecuteNonQueryECM(oDelete) = True Then
|
||
Dim oDeleteResult As Boolean = False
|
||
If IDB_ACTIVE = False Then
|
||
oDeleteResult = Delete_WMFile()
|
||
End If
|
||
If oDeleteResult = True Then
|
||
Load_Next_Document(False)
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Fehler bei Löschen windream-Datei:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
End Try
|
||
|
||
End Sub
|
||
Private Function Delete_WMFile()
|
||
Try
|
||
If CURRENT_WMFILE Is Nothing = False Then
|
||
'Close_document_viewer()
|
||
'Me.PdfViewer1.DocumentFilePath = ""
|
||
Try
|
||
If CURRENT_WMFILE.aLocked Then
|
||
' unlock the windream object
|
||
CURRENT_WMFILE.unlock()
|
||
ValidatorLogger.Debug("## Delete_WMFile WMFile unlocked! ##")
|
||
End If
|
||
Try
|
||
CURRENT_WMFILE.Delete()
|
||
ValidatorLogger.Info("Manual deleting of file [" & CURRENT_WMFILE.aName & "] successfull!")
|
||
Return True
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Could not delete via windream-function - ERROR: [{ex.Message}] {vbNewLine} Trying system.io...")
|
||
Try
|
||
Try
|
||
CURRENT_WMFILE.unlock()
|
||
Catch exul As Exception
|
||
ValidatorLogger.Warn($"Could not unlock WMFile - ERROR: [{exul.Message}] - now teh system.io.Delete...")
|
||
End Try
|
||
WMDocPathWindows = ""
|
||
CURRENT_DOC_PATH = ""
|
||
CURRENT_WMFILE = Nothing
|
||
File.Delete(WMDocPathWindows)
|
||
ValidatorLogger.Info("Deleting of file via system.io [" & WMDocPathWindows & "] successfull!")
|
||
Return True
|
||
Catch ex1 As Exception
|
||
ValidatorLogger.Warn($"Could not delete via System.IO - ERROR: [{ex1.Message}] {vbNewLine} Trying system.io...")
|
||
Return False
|
||
End Try
|
||
|
||
End Try
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Das windream-Objekt konnte nicht gelöscht werden!" & vbNewLine & vbNewLine & "Fehlermeldung:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
ValidatorLogger.Info(" windream-Objekt konnte nicht gelöscht werden - Fehlermeldung: " & ex.Message, True)
|
||
Return False
|
||
End Try
|
||
End If
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Fehler bei Delete_File")
|
||
ValidatorLogger.Info(">> Fehlermeldung: " & ex.Message)
|
||
Return False
|
||
End Try
|
||
End Function
|
||
Private Const SEE_MASK_INVOKEIDLIST = &HC
|
||
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
|
||
Private Const SEE_MASK_FLAG_NO_UI = &H400
|
||
Public Const SW_SHOW As Short = 5
|
||
|
||
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)>
|
||
Public Shared Function ShellExecuteEx(ByRef lpExecInfo As SHELLEXECUTEINFO) As Boolean
|
||
End Function
|
||
Public Structure SHELLEXECUTEINFO
|
||
Public cbSize As Integer
|
||
Public fMask As Integer
|
||
Public hwnd As IntPtr
|
||
<MarshalAs(UnmanagedType.LPTStr)> Public lpVerb As String
|
||
<MarshalAs(UnmanagedType.LPTStr)> Public lpFile As String
|
||
<MarshalAs(UnmanagedType.LPTStr)> Public lpParameters As String
|
||
<MarshalAs(UnmanagedType.LPTStr)> Public lpDirectory As String
|
||
Dim nShow As Integer
|
||
Dim hInstApp As IntPtr
|
||
Dim lpIDList As IntPtr
|
||
<MarshalAs(UnmanagedType.LPTStr)> Public lpClass As String
|
||
Public hkeyClass As IntPtr
|
||
Public dwHotKey As Integer
|
||
Public hIcon As IntPtr
|
||
Public hProcess As IntPtr
|
||
End Structure
|
||
Private Sub frmValidation_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd
|
||
If WMDocPathWindows Is Nothing = False Then
|
||
My.Settings.frmValidatorSize = Me.Size
|
||
My.Settings.Save()
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub Splitter1_LocationChanged(sender As Object, e As EventArgs)
|
||
My.Settings.Save()
|
||
End Sub
|
||
|
||
Private Sub frmValidator_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
|
||
If e.KeyCode = Keys.F4 Then
|
||
Datei_ueberspringen()
|
||
ElseIf e.KeyCode = Keys.F2 Then
|
||
If USER_GHOST_MODE_ACTIVE Then
|
||
Exit Sub
|
||
End If
|
||
|
||
btnSave.Enabled = False
|
||
Finish_WFStep()
|
||
btnSave.Enabled = True
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Private Sub frmValidator_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||
|
||
End Sub
|
||
|
||
Private Sub frmValidator_Resize(sender As Object, e As EventArgs) Handles Me.Resize
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
|
||
If WindowState = FormWindowState.Maximized Then
|
||
My.Settings.frmValidatorWindowState = "Maximized"
|
||
ElseIf WindowState = FormWindowState.Normal Then
|
||
My.Settings.frmValidatorWindowState = "Normal"
|
||
End If
|
||
My.Settings.Save()
|
||
End Sub
|
||
Private Sub btnSave_MouseHover(sender As Object, e As EventArgs)
|
||
'Dim oMsg = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("F2forSave")
|
||
ToolTip1.Show(S.F2_für_Speichern, btnSave)
|
||
End Sub
|
||
|
||
Sub Reload_Controls(SingleAttribute As String)
|
||
If IDB_ACTIVE = True Then
|
||
Load_IDB_DOC_DATA()
|
||
End If
|
||
FillIndexValues(False)
|
||
End Sub
|
||
|
||
Sub SetStatusLabel(infotext As String, Optional pColor As String = "")
|
||
bsiInformation.Caption = infotext & " " & Now.ToString
|
||
If pColor <> String.Empty Then
|
||
bsiInformation.ItemAppearance.Normal.BackColor = Color.FromName(pColor)
|
||
bsiInformation.ItemAppearance.Normal.ForeColor = GraphicsEx.GetContrastedColor(Color.FromName(pColor))
|
||
Else
|
||
bsiInformation.ItemAppearance.Normal.BackColor = Color.Transparent
|
||
bsiInformation.ItemAppearance.Normal.ForeColor = Color.Black
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub BarButtonItem3_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem3.ItemClick
|
||
frmFileInfo.ShowDialog()
|
||
End Sub
|
||
|
||
Private Sub BarButtonItem4_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem4.ItemClick
|
||
If WMDocPathWindows <> "" Then
|
||
Try
|
||
Cursor = Cursors.WaitCursor
|
||
Dim oShellExecuteInfo As New SHELLEXECUTEINFO
|
||
oShellExecuteInfo.cbSize = Marshal.SizeOf(oShellExecuteInfo)
|
||
oShellExecuteInfo.lpVerb = "properties"
|
||
oShellExecuteInfo.lpFile = WMDocPathWindows
|
||
oShellExecuteInfo.nShow = SW_SHOW
|
||
oShellExecuteInfo.fMask = SEE_MASK_INVOKEIDLIST
|
||
If Not ShellExecuteEx(oShellExecuteInfo) Then
|
||
Dim ex As New System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error())
|
||
MsgBox("error in Datei-Eigenschaften öffnen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||
End If
|
||
Catch ex As Exception
|
||
End Try
|
||
Cursor = Cursors.Default
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Private Sub bbtniRefreshSearches_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniRefreshSearches.ItemClick
|
||
Click_Additional_Searches()
|
||
End Sub
|
||
Sub Click_Additional_Searches()
|
||
Try
|
||
_frmValidatorSearch?.Close()
|
||
_frmValidatorSearch = New frmValidatorSearch(Me, Environment)
|
||
_frmValidatorSearch.Show()
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
End Try
|
||
Load_Additional_Searches(False)
|
||
End Sub
|
||
Private Sub bbtniRefresh_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniRefresh.ItemClick
|
||
Reload_Controls("")
|
||
Try
|
||
'btnSave.Text = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
|
||
btnSave.Text = S.Speichern___Nächster_Vorgang__F2_
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
listChangedLookup.Clear()
|
||
SetStatusLabel("All Data refreshed", "Yellow")
|
||
End Sub
|
||
|
||
Private Sub bbtniNext_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniNext.ItemClick
|
||
If ForceGridValidation() = True Then
|
||
Reset_CurrentReferences()
|
||
Datei_ueberspringen()
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub bbtniDelete_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniDelete.ItemClick
|
||
If ForceGridValidation() = True Then
|
||
delete_active_File()
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Private Sub bbtniAnnotation_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniAnnotation.ItemClick
|
||
Application.DoEvents()
|
||
|
||
frmAnnotations.ShowDialog()
|
||
|
||
LoadDocument_DDViewer()
|
||
End Sub
|
||
|
||
Private Sub BbtnItm_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BbtnitmSave.ItemClick
|
||
If ForceGridValidation() = True Then
|
||
Dim oRESULT As String
|
||
'oRESULT = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("InputSaved")
|
||
oRESULT = S.Eingaben_gespeichert
|
||
|
||
If Check_UpdateIndexe() = True Then
|
||
SetStatusLabel($"Data saved", "LimeGreen")
|
||
ValidatorLogger.Info("Workflowdata saved manually!")
|
||
Dim ins = String.Format("INSERT INTO TBPM_FILES_WORK_HISTORY (PROFIL_ID, DOC_ID,WORKED_BY,WORKED_WHERE,STATUS_COMMENT) VALUES ({0},{1},'{2}','{3}','{4}')", CURRENT_ProfilGUID, CURRENT_DOC_ID, USER_USERNAME, System.Environment.MachineName, "Manual Save via button")
|
||
DatabaseFallback.ExecuteNonQueryECM(ins)
|
||
Else
|
||
SetStatusLabel($"Error while saving data!", "Red")
|
||
End If
|
||
End If
|
||
End Sub
|
||
Private Sub SaveDevExpressGridControl_Layout(pProfilID As Integer, pControlID As Integer, pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
|
||
Try
|
||
Dim xml As String = GetXML_OverviewLayoutName(pProfilID, pControlID)
|
||
pGridView.SaveLayoutToXml(xml)
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Error while saving GridLayout: " & ex.Message)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub RestoreDevExpressGridControl_Layout(pProfilID As Integer, pControlID As Integer, pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
|
||
|
||
Try
|
||
Dim oXml As String = GetXML_OverviewLayoutName(pProfilID, pControlID)
|
||
If File.Exists(oXml) Then
|
||
pGridView.RestoreLayoutFromXml(oXml)
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
ValidatorLogger.Info("Error while restoring layout: " & ex.Message)
|
||
End Try
|
||
End Sub
|
||
Private Function GetXML_OverviewLayoutName(pProfilID As Integer, pControlID As Integer)
|
||
Dim Filename As String = String.Format($"DevExpressValidatorGridControl_{pProfilID}-{pControlID}.xml")
|
||
Return System.IO.Path.Combine(USER_CONFIG_DIRECTORY, Filename)
|
||
End Function
|
||
|
||
Private Sub BarButtonItem5_ItemClick_1(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem5.ItemClick
|
||
MsgBox("Versioning not configured! (Reasons: RightManagement, Displaying)", MsgBoxStyle.Information)
|
||
End Sub
|
||
|
||
Private Sub Attmt_bbtnitmShow_Click(sender As Object, e As ItemClickEventArgs) Handles Attmt_bbtnitmShow.ItemClick
|
||
Click_Additional_Searches()
|
||
End Sub
|
||
|
||
Private Sub barbtnitmExport_ItemClick(sender As Object, e As ItemClickEventArgs) Handles barbtnitmExport.ItemClick
|
||
If File.Exists(WMDocPathWindows) = False Then
|
||
MsgBox("Workflow-Document seems not to exist. Check Your log.", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
Exit Sub
|
||
End If
|
||
|
||
Try
|
||
Dim oFilenameOnly As String
|
||
Dim oExtension As String
|
||
Dim oTargetPath As String
|
||
Dim oFile2Export As String
|
||
Dim oCount As Integer = 0
|
||
Dim oSQLGetFilename As String
|
||
|
||
If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then
|
||
Exit Sub
|
||
End If
|
||
|
||
oFilenameOnly = Path.GetFileName(WMDocPathWindows)
|
||
oExtension = Path.GetExtension(WMDocPathWindows)
|
||
oSQLGetFilename = $"DECLARE @Filename Varchar(512) " & vbNewLine &
|
||
$"EXEC dbo.PRPM_GETFILENAME_EXPORT {CURRENT_DOC_ID}, 1, @Outputfilename = @Filename OUTPUT;" & vbNewLine &
|
||
"SELECT @Filename"
|
||
|
||
Dim oExportFilename = DatabaseFallback.GetScalarValueECM(oSQLGetFilename)
|
||
If Not IsNothing(oExportFilename) Then
|
||
If IsDBNull(oExportFilename) Then
|
||
ValidatorLogger.Info($"#### ATTENTION: oExportFilename is DBNULL - SQL: {oSQLGetFilename}")
|
||
oExportFilename = ""
|
||
End If
|
||
If oExportFilename <> String.Empty Then
|
||
oTargetPath = FolderBrowserDialog1.SelectedPath & "\" & oExportFilename & oExtension
|
||
If Not IsNothing(barbtnitmExport.Tag) Then
|
||
If barbtnitmExport.Tag.ToString = "Convert to PDF" Then
|
||
If oExtension.ToLower.EndsWith("pdf") Then
|
||
Dim oTempPath = System.IO.Path.GetTempPath()
|
||
Dim oTempFullFilename = oTempPath + "\" + oExportFilename & oExtension
|
||
|
||
Dim oConverter As New PDFConverter(LOGCONFIG)
|
||
If oConverter.ConvertPDFADocumentToPDFDocument(WMDocPathWindows, oTempFullFilename) = False Then
|
||
ValidatorLogger.Warn("File [{0}] could not be converted to plain PDF!", WMDocPathWindows)
|
||
oFile2Export = WMDocPathWindows
|
||
Else
|
||
ValidatorLogger.Info("File [{0}] successfully converted to plain PDF!", oTempFullFilename)
|
||
ValidatorLogger.Info("File [{0}] successfully converted to plain PDF!", WMDocPathWindows)
|
||
oFile2Export = oTempFullFilename
|
||
End If
|
||
Else
|
||
ValidatorLogger.Warn("No converting as File [{0}] not ending with pdf [{1}]", WMDocPathWindows, oExtension.ToLower)
|
||
oFile2Export = WMDocPathWindows
|
||
End If
|
||
Else
|
||
ValidatorLogger.Warn("No converting as barbtnitmExport.Tag.ToString <> Convert to PDF")
|
||
oFile2Export = WMDocPathWindows
|
||
End If
|
||
Else
|
||
oFile2Export = WMDocPathWindows
|
||
End If
|
||
ValidatorLogger.Info("Final export path is: [{0}]", oFile2Export)
|
||
File.Copy(oFile2Export, oTargetPath)
|
||
ValidatorLogger.Info($"File {WMDocPathWindows} exported successfully!")
|
||
oCount += 1
|
||
Else
|
||
MsgBox("Error encountered while extracting Export-Filename!" & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
End If
|
||
End If
|
||
|
||
ValidatorLogger.Info("Now exporting attached files ...")
|
||
Dim oFileCount As Integer = 1
|
||
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
|
||
If DT_AdditionalSearches_Resultset_Docs.Rows.Count >= 1 Then
|
||
ValidatorLogger.Info("Now exporting attached files ...")
|
||
|
||
For Each ocol As DataColumn In DT_AdditionalSearches_Resultset_Docs.Columns
|
||
MsgBox("Columnname: " & ocol.Caption)
|
||
Next
|
||
For Each oFileRecord As DataRow In DT_AdditionalSearches_Resultset_Docs.Rows
|
||
Dim oFromFilename = oFileRecord.Item("FULL_FILENAME")
|
||
Dim oDocID = oFileRecord.Item("DocID")
|
||
If File.Exists(oFromFilename) Then
|
||
oFileCount += 1
|
||
oSQLGetFilename = $"DECLARE @Filename Varchar(512) " & vbNewLine &
|
||
$"EXEC dbo.PRPM_GETFILENAME_EXPORT {oDocID}, {oFileCount}, @Outputfilename = @Filename OUTPUT;" & vbNewLine &
|
||
"SELECT @Filename"
|
||
oExportFilename = DatabaseFallback.GetScalarValueECM(oSQLGetFilename)
|
||
oExtension = Path.GetExtension(oFromFilename)
|
||
If Not IsNothing(oExportFilename) Then
|
||
If IsDBNull(oExportFilename) Then
|
||
ValidatorLogger.Info($"#### ATTENTION: oExportFilename is DBNULL - SQL: {oSQLGetFilename}")
|
||
oExportFilename = ""
|
||
End If
|
||
If oExportFilename <> String.Empty Then
|
||
oTargetPath = FolderBrowserDialog1.SelectedPath & "\" & oExportFilename & oExtension
|
||
File.Copy(oFromFilename, oTargetPath)
|
||
oCount += 1
|
||
Else
|
||
Dim omsg = $"Error encountered while extracting ATTACHMENT-Export-Filename DocID [{oDocID}]!"
|
||
ValidatorLogger.Info($"#### ATTENTION: {omsg} SQL: {oSQLGetFilename}")
|
||
MsgBox(omsg & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
End If
|
||
End If
|
||
End If
|
||
Next
|
||
End If
|
||
|
||
End If
|
||
CONFIG.Config.LastExportPath = FolderBrowserDialog1.SelectedPath
|
||
CONFIG.Save()
|
||
MsgBox($"[{oCount}] file/s successfully exported to target [{FolderBrowserDialog1.SelectedPath}]!", MsgBoxStyle.Information, ADDITIONAL_TITLE)
|
||
|
||
Catch ex As Exception
|
||
ValidatorLogger.Error(ex)
|
||
MsgBox("Could not move file to target: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
Private Sub BarCheckItemLoadOnClick_CheckedChanged(sender As Object, e As ItemClickEventArgs) Handles Attmnt_bbtnitm_LoadonClick.CheckedChanged
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK = Attmnt_bbtnitm_LoadonClick.Checked
|
||
CONFIG.Save()
|
||
End Sub
|
||
|
||
Private Sub btnReject_Click(sender As Object, e As EventArgs) Handles btnReject.Click
|
||
oProfile_REJECT_SQL_REASONS = clsPatterns.ReplaceAllValues(oProfile_REJECT_SQL_REASONS, PanelValidatorControl, True)
|
||
Dim frmRejCommit As New frmRejectionCommit(CURRENT_ProfilGUID, CURRENT_DOC_ID, oProfileRejectionText, oProfile_REJECT_SQL_REASONS)
|
||
frmRejCommit.ShowDialog()
|
||
If frmRejCommit.pRejection_Commited = True Then
|
||
Dim oNoError As Boolean = True
|
||
'Ablehnungsgrund speichern
|
||
If IDB_ACTIVE = False Then
|
||
oNoError = Indexiere_File(CURRENT_WMFILE, PROFIL_REJECT_ACTIONS_ATTRIBUTE, frmRejCommit.pRejection_Action)
|
||
If oNoError Then
|
||
oNoError = Indexiere_File(CURRENT_WMFILE, PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment)
|
||
End If
|
||
Else
|
||
oNoError = IDBData.SetVariableValue(PROFIL_REJECT_ACTIONS_ATTRIBUTE, frmRejCommit.pRejection_Action)
|
||
If oNoError Then
|
||
oNoError = IDBData.SetVariableValue(PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment)
|
||
End If
|
||
End If
|
||
If oNoError Then
|
||
REJECTION_ACTIVE = True
|
||
If Check_UpdateIndexe() = True Then
|
||
Finish_WFStep(True)
|
||
End If
|
||
Else
|
||
MsgBox("We are sorry, but an enexpected error in rejection-process occured!" & vbNewLine & "Inform Your admin-team and check Your log. Thank You.", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||
End If
|
||
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub btnNotResponsible_Click(sender As Object, e As EventArgs) Handles btnNotResponsible.Click
|
||
Dim oCommentSoFar As String = ""
|
||
For Each oControl As Control In PanelValidatorControl.Controls
|
||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Attribute = PROFIL_NOT_RESP_COMMENT_ATTR Then
|
||
Dim oName = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Name
|
||
ValidatorLogger.Debug($"Got the control for the NR Attribute :{oName}..Gettin the value...")
|
||
If oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit) Then
|
||
Try
|
||
oCommentSoFar = DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue
|
||
Exit For
|
||
Catch ex As Exception
|
||
ValidatorLogger.Warn($"Unexpected error in Checking EditValue: {ex.Message}")
|
||
End Try
|
||
End If
|
||
End If
|
||
Next
|
||
|
||
|
||
oProfile_NOT_RESP_SQL = clsPatterns.ReplaceAllValues(oProfile_NOT_RESP_SQL, PanelValidatorControl, True)
|
||
Dim oCaption As String = "Bestätigung - "
|
||
If USER_LANGUAGE <> "de-DE" Then
|
||
oCaption = "Confirmation - "
|
||
End If
|
||
Dim frmDialog As New frmYesNo(oProfileNotResponsibleQuestion, oCaption + oProfileNotResponsibleText, oCommentSoFar)
|
||
frmDialog.ShowDialog()
|
||
' result = MessageBox.Show(oProfileNotResponsibleQuestion, ADDITIONAL_TITLE, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
||
If frmDialog.DialogResult = DialogResult.OK Then
|
||
|
||
'For Each oControl As Control In PanelValidatorControl.Controls
|
||
' If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Attribute = PROFIL_NOT_RESP_COMMENT_ATTR Then
|
||
' Dim oName = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Name
|
||
' Logger.Debug($"Got the control for the NR Attribute :{oName}..Gettin the value...")
|
||
' If oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit) Then
|
||
' Try
|
||
' DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = frmDialog.oComment
|
||
' Exit For
|
||
' Catch ex As Exception
|
||
' Logger.Warn($"Unexpected error in Setting EditValue NotResponsible: {ex.Message}")
|
||
' End Try
|
||
' End If
|
||
' End If
|
||
'Next
|
||
|
||
|
||
If IDB_ACTIVE = False Then
|
||
Indexiere_File(CURRENT_WMFILE, PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)
|
||
Else
|
||
Dim oREsult = IDBData.SetVariableValue(PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)
|
||
|
||
End If
|
||
|
||
OverrideAll = True
|
||
Override_SQLCommand = oProfile_NOT_RESP_SQL
|
||
Override = True
|
||
Finish_WFStep()
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub bbtnitmInfoWorkflow_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtnitmInfoWorkflow.ItemClick
|
||
Show_WF_Messages(True)
|
||
End Sub
|
||
|
||
Private Sub BarCheckItem1_CheckedChanged(sender As Object, e As ItemClickEventArgs) Handles bchkitmNotes.CheckedChanged
|
||
If _FormLoaded = False Then
|
||
Exit Sub
|
||
End If
|
||
CONFIG.Config.NOTES_ONCLICK = bchkitmNotes.Checked
|
||
CONFIG.Save()
|
||
End Sub
|
||
End Class |