TaskFlow/app/TaskFlow/frmValidator.vb
2023-04-26 13:21:33 +02:00

6093 lines
325 KiB
VB.net

Imports WINDREAMLib
Imports System.Threading
Imports System.Runtime.InteropServices
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.ComponentModel
Imports DigitalData.Controls.LookupGrid
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
Imports DigitalData.Modules.EDMI.API.Constants
Imports DevExpress.XtraBars
Imports DigitalData.GUIs.Common.DocumentResultList
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.ZooFlow.Constants
Imports DigitalData.GUIs.Common
Imports DevExpress.XtraGrid.Columns
Imports System.Globalization
Public Class frmValidator
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 PROFIL_sortbynewest As Boolean
Private Property PROFIL_VEKTORINDEX
Private Property PROFIL_FINISH_SQL
Private Property PROFIL_LOGINDEX
Private Property oErrMsgMissingInput
Private Property PMDelimiter As String
Private Property WD_Search As String
Private Property finalProfile As Boolean
Private Property Move2Folder As String
'Private Property DataASorDB As ClassDataASorDB
Private Property allgFunk As New ClassAllgemeineFunktionen
'speichert die DocumentDaten
Private Property navStep As String = Nothing
Public Shared Property WMDocPathWindows As String
Private Property WMDocFileString As String
Private Property DocPathWindows As String
Private Property OLD_Document_Path As String = ""
Private Property ValueDTP As Date
Private Property docCounter As Integer = 1
'Anzahl der Validierungsdokumente
Private Property Amount_Docs2Validate As Integer
Private Property me_closing As Boolean = False
Private Property first_control As Control
Private Property last_control As Control
Private Property _Indexe_Loaded As Boolean = False
Public Shared Property idxerr_message As String = ""
Private Property _frmValidatorSearch As frmValidatorSearch 'You need a reference to Form1
Private Property _dependingControl_in_action As Boolean = False
Private Property _dependingColumn_in_action As Boolean = False
Private Property _SetControlValue_in_action As Boolean = False
Private Property DTConversations As DataTable
Private Property DTDYNAMIC_RIGHTS As DataTable
Private Property DT_AdditionalSearches_Resultset_Docs As DataTable
Private Property Right_Conversation_Add As Boolean = False
Private Property Right_Conversation_Stop As Boolean = False
Private Property Right_Conversation_Message As Boolean = False
Private Property Conversation_User_Active As Boolean = False
Private Property ConversationQUDT_Delete As DataTable
Private Property Conversation_initialized As Boolean = False
Public Property FormLoaded 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 Property ControlHandleStarted As Boolean = False
Private Documentloader As Loader
Private Property OperationMode As OperationMode
Private ReadOnly Environment As Environment
Private AdditionalDocResultsExist As Boolean = False
Private AdditionalDataResultsExist As Boolean = False
Private Class S
Inherits My.Resources.frmValidator_Strings
End Class
Public Sub New(pEnvironment As Environment)
'MyBase.New
LOGGER.Debug("Initialize Components...")
InitializeComponent()
Environment = pEnvironment
Try
LOGGER.Debug("Initialize _frmValidatorSearch...")
_frmValidatorSearch = New frmValidatorSearch(Me, Environment)
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Private Function GetOperationMode() As OperationMode
Dim oOperationMode As OperationMode
If Environment.Service.Client Is Nothing Then
Return OperationMode.NoAppServer
End If
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
If OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
oOperationMode = OperationMode.ZooFlow
End If
Return oOperationMode
End Function
Private Sub frmValidation_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Try
LOGGER.Debug("###frmValidation_Load###")
LOGGER.Debug("Current User Language: [{0}]", USER_LANGUAGE)
' Operation mode is either guessed from service settings
' or explictly set from OperationModeOverride in Params
OperationMode = GetOperationMode()
Documentloader = New Loader(LOGCONFIG, OperationMode, Environment.Service.Client, Environment.User)
PMDelimiter = "~"
Override = False
ItemWorked = False
SplitContainer1.Panel2Collapsed = True
docCounter = 1
OLD_Document_Path = ""
first_control = Nothing
me_closing = False
'pdfxchange = False
'sumatra = False
FormLoaded = False
Attmt_bbtnitmShow.Visibility = BarItemVisibility.Never
Attmnt_bbtnitm_LoadonClick.Visibility = BarItemVisibility.Never
Catch ex As Exception
LOGGER.Warn($"Error in frmValidation_load1: {ex.Message}")
End Try
Try
If My.Settings.frmValidatorPosition.IsEmpty = False Then
If My.Settings.frmValidatorPosition.X > 0 And My.Settings.frmValidatorPosition.Y > 0 Then
Location = My.Settings.frmValidatorPosition
Else
Try
LOGGER.Debug($"!! Invalid PositionData X({My.Settings.frmValidatorPosition.X}), Y({My.Settings.frmValidatorPosition.Y})")
Catch ex As Exception
End Try
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
LOGGER.Info($"Error loading position: {ex.Message}")
End Try
Dim _step = 0
Try
DocumentViewerValidator.Init(LOGCONFIG, GDPICTURE_LICENSE)
Catch ex As Exception
LOGGER.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
LOGGER.Debug("Profile Data loaded")
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
allgFunk.Insert_LogEntry($"ERROR frmValidatorLoad>> {ex.Message}")
LOGGER.Info(">> Error in LOADING profile-data: " & ex.Message, True)
Me.Close()
End Try
LOGGER.Debug("frmValidation_Load finished till Step 3!")
Try
If CURRENT_DT_PROFILE.Rows.Count = 0 Then
LOGGER.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
LOGGER.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
LOGGER.Debug("Step 5")
If CURRENT_DT_PROFILE.Rows.Count = 1 Then
_step = 6
LOGGER.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_LOGINDEX = oProfileRow.Item("LOG_INDEX")
CURRENT_PROFILE_LOG_INDEX = PROFIL_LOGINDEX
Dim oProfileTitle As String = ""
Dim oProfileDescription As String = ""
Dim oProfileFinalText 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}" Then
oProfileFinalText = 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
WD_Search = oProfileRow.Item("WD_SEARCH")
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")
btnSave.Text = oProfileFinalText
End If
LOGGER.Debug("Buttontext validation loaded")
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Error loading final profile text:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
LOGGER.Info(">> Error loading final profile text: " & ex.Message, True)
End Try
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
If DEBUG = False Then
LOGGER.Info(" >> profiledata saved:")
LOGGER.Info(" >> WD_Search: " & WD_Search)
LOGGER.Info(" >> finalProfile: " & finalProfile)
LOGGER.Info(" >> Move2Folder: " & Move2Folder)
LOGGER.Info(" >> Right_Delete: " & USER_RIGHT_FILE_DELETE)
End If
PROFIL_sortbynewest = CURRENT_DT_PROFILE.Rows(0).Item("SORT_BY_LATEST")
LOGGER.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
LOGGER.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_
RibbonPageConversations.Visible = False
If IDB_ACTIVE Then
Dim oSQL = $"SELECT * FROM [dbo].[FNIDB_OBJECT_DYNAMIC_CONFIG] ({CURRENT_DOC_ID},{USER_ID})"
DTDYNAMIC_RIGHTS = DatabaseFallback.GetDatatableIDB(oSQL) ', CONNECTION_STRING_IDB, "FNIDB_OBJECT_DYNAMIC_CONFIG")
RibbonPageGroupConv1.Enabled = False
Dim oView As DataView = New DataView(DTDYNAMIC_RIGHTS)
oView.RowFilter = "CONF_TITLE like '%CONVERSATION_RIGHT%'"
Console.WriteLine(oView.Count, "oView after")
If oView.Count > 0 Then
LOGGER.Debug("CONVERSATION-RIGHTS EXISTING")
RibbonPageConversations.Visible = True
RibbonPageGroupConv1.Enabled = True
'ConversationQUDT_Delete = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.Conversation_Delete")
ConversationQUDT_Delete = Nothing
oView = New DataView(DTDYNAMIC_RIGHTS)
oView.RowFilter = "CONF_TITLE = 'CONVERSATION_USER_ACTIVE'"
Conversation_initialized = Conversation_init()
If oView.Count = 1 Then
Conversation_User_Active = True
Else
SplitContainer2_DV_Chat.Collapsed = True
Conversation_User_Active = False
SplitContainer2_DV_Chat.Panel2.Visible = False
End If
Else
SplitContainer2_DV_Chat.Collapsed = True
RibbonPageConversations.Visible = False
End If
'If Not IsNothing(DTConversations) Then
' If DTConversations.Rows.Count >= 1 Then
' SplitContainerMain.Collapsed = False
' Dim oConversations As List(Of String)
' oConversations = ChatControl1.GetConversations(CURRENT_DOC_ID)
' If oConversations.Count > 1 Then
' RibbonPageGroupConv_Change.Visible = True
' For Each oit As String In oConversations
' ' Dim Coll As ComboBoxItemCollection = RepositoryItemComboBox3.Properties.Items
' BarEditItem2..Items.Add(oit)
' Next
' Else
' RibbonPageGroupConv_Change.Visible = False
' End If
' Else
' End If
'Else
' SplitContainerMain.Collapsed = True
'End If
Else
SplitContainer2_DV_Chat.Collapsed = True
End If
LOGGER.Debug("frmValidation_Load finished!")
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Error LOADING Profile-Data1:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
allgFunk.Insert_LogEntry($"ERROR LOADING Profile-Data1 >> {ex.Message}")
LOGGER.Info(">> error in LOADING(2) Profile-Data: " & ex.Message, True)
End Try
End Sub
Sub Conversations_Init_Rights()
RibbonPageConversations.Visible = True
bbtnitem_ConversationNew.Visibility = BarItemVisibility.Never
btnitemConversationEnd.Visibility = BarItemVisibility.Never
btnitemConversationEnd.Enabled = True
btnitemConversation_reload.Enabled = True
For Each oRow As DataRow In DTDYNAMIC_RIGHTS.Rows
If oRow.Item("CONF_TITLE").ToString = "CONVERSATION_RIGHT" Then
Select Case oRow.Item("CONF_VALUE")
Case "Admin"
bbtnitem_ConversationNew.Visibility = BarItemVisibility.Always
btnitemConversationEnd.Visibility = BarItemVisibility.Always
Right_Conversation_Add = True
Right_Conversation_Stop = True
Case "Start"
bbtnitem_ConversationNew.Visibility = BarItemVisibility.Always
Right_Conversation_Add = True
Case "Stop"
btnitemConversationEnd.Visibility = BarItemVisibility.Always
Right_Conversation_Stop = True
Case "AddMessage"
Right_Conversation_Message = True
End Select
'ElseIf oRow.Item("CONF_TITLE").ToString = "CONVERSATION_USER_ACTIVE" Then
' Conversation_User_Active = True
End If
Next
End Sub
Sub Conversations_load()
Dim oConversations As List(Of String)
oConversations = ChatControl1.GetConversations(CURRENT_DOC_ID)
RibbonPageGroupConv_Change.Visible = True
If oConversations.Count = 0 Then
RibbonPageGroupConv_Change.Visible = False
End If
RepositoryItemComboBox3.Items.Clear()
Dim oActiveConv As Boolean = False
RibbonPageGroupConv_Change.Visible = True
For Each oconv As String In oConversations
If Not oconv.Contains("Started") Then
RepositoryItemComboBox3.Items.Add(oconv)
End If
If oconv.Contains("Started") Then
oActiveConv = True
End If
Next
If oActiveConv = False Then
btnitemConversationEnd.Enabled = False
btnitemConversation_reload.Enabled = False
SplitContainer2_DV_Chat.Collapsed = True
Else
If SplitContainer2_DV_Chat.Panel2.Visible = False Then
SplitContainer2_DV_Chat.Panel2.Visible = True
End If
SplitContainer2_DV_Chat.Collapsed = False
End If
End Sub
Private Sub frmValidation_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
me_closing = True
Try
' Position und Größe speichern
My.Settings.frmValidatorSize = Me.Size
My.Settings.frmValidatorPosition = Me.Location
My.Settings.Save()
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
End Try
Try
Dim oDel = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID}"
DatabaseFallback.ExecuteNonQueryECM(oDel)
Catch ex As Exception
LOGGER.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
Free_File()
'End If
Catch ex As Exception
LOGGER.Error(ex)
End Try
End If
Reset_CurrentReferences()
Try
DocumentViewerValidator.CloseDocument()
DocumentViewerValidator.Done()
Catch ex As Exception
LOGGER.Warn($"Unexpected error in DocumentViewerValidator.Done: {ex.Message}")
End Try
Try
_frmValidatorSearch.Close()
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Sub Reset_CurrentReferences()
LOGGER.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)
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
Attmnt_bbtnitm_LoadonClick.Visibility = BarItemVisibility.Always
Attmt_bbtnitmShow.Visibility = BarItemVisibility.Always
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
LOGGER.Error(ex)
End Try
bbtniRefreshSearches.Visibility = BarItemVisibility.Always
Else
LOGGER.Debug("AdditionlSearhes result = false!")
bbtniRefreshSearches.Visibility = BarItemVisibility.Never
Attmnt_bbtnitm_LoadonClick.Visibility = BarItemVisibility.Never
Attmt_bbtnitmShow.Visibility = BarItemVisibility.Never
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
LOGGER.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")
'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
LOGGER.Debug("Control for Index [{0}] is read-only. Continuing.")
Continue For
End If
If IsDBNull(row.Item("CONNECTION_ID")) Then
LOGGER.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
LOGGER.Warn($"Unexpected error LoadSQLData2 - sql Statement still has complex patterns! [{oSQLStatement}]")
Continue For
End If
'sql = ClassPatterns.ReplaceInternalValues(sqlStatement)
'Dim oDTContent As DataTable = ClassDatabase.Return_Datatable_ConId(oSQLStatement, oConnectionId, $"LoadSQLData - pControlId: {pControlId}")
Dim oDTContent As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLStatement, DatabaseType.ECM) With {
.ConnectionId = oConnectionId
})
If IsNothing(oDTContent) Then
LOGGER.Warn($"SQL-Query [{oSQLStatement}] for control {control.Name} is invalid.")
Exit Sub
End If
Dim oValue
If TypeOf control Is TextBox Then
Try
Dim firstRow As DataRow = oDTContent.Rows(0)
Dim value = firstRow.Item(0)
control.Text = value
oValue = value
Catch ex As Exception
LOGGER.Warn("Error in TextBoxLoadSQLData: " & ex.Message)
End Try
ElseIf TypeOf control Is ComboBox Then
Try
Dim oMyComboBox As ComboBox = control
Dim oselectedIndex = oMyComboBox.SelectedIndex
LOGGER.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
LOGGER.Warn("Error in ComboBoxLoadSQLData: " & ex.Message)
End Try
ElseIf 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
LOGGER.Warn("Error in LookUpLoadSQLData: " & 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
LOGGER.Warn("Error in GridControlSQLData: " & ex.Message)
End Try
End If
Next
Catch ex As Exception
LOGGER.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()
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
ClassControlCreator.Logger = LOGCONFIG.GetLoggerFor("ControlCreator")
For Each oControlRow As DataRow In DT_CONTROLS.Rows
Dim oMyControl As Control
Dim oControlID = oControlRow.Item("GUID")
oControlInfo = $"CtrlID: {oControlID} - CtrlName: {oControlRow.Item("NAME")} - CtrlIndex: {oControlRow.Item("INDEX_NAME")}"
Try
Select Case oControlRow.Item("CTRL_TYPE").ToString.ToUpper
Case ClassControlCreator.PREFIX_TEXTBOX
Try
oControlInfo = ClassControlCreator.PREFIX_TEXTBOX & "#" & oControlInfo
LOGGER.Debug($"[{oControlInfo}] - TXT Try to create control...")
Dim txt As TextBox = ClassControlCreator.CreateExistingTextbox(oControlRow, False)
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
oMyControl = txt
LOGGER.Debug($"[{oControlInfo}] - TXT Created!!")
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Create_Controls TXT [{oControlInfo}]: {ex.Message}")
End Try
Case "LBL"
oControlInfo = "LBL#" & oControlInfo
oMyControl = ClassControlCreator.CreateExistingLabel(oControlRow, False)
Case "CMB"
oControlInfo = "CMB#" & oControlInfo
LOGGER.Debug($"[{oControlInfo}] - CMB Try to create control...")
If oControlRow.Item("READ_ONLY") Then
Dim cmbReadonly = ClassControlCreator.CreateExistingTextbox(oControlRow, False)
oMyControl = cmbReadonly
Else
Dim oComboBox = ClassControlCreator.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
LOGGER.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
LOGGER.Debug("ConID <> String.Empty")
If oCONID > 0 And oCommandSQL_UBPF <> String.Empty Then
LOGGER.Debug("ConID > 0 And commandsql <> String.Empty")
Try
oSQL = PreventNulletc(oControlRow.Item("SQL_UEBERPRUEFUNG"), "String")
If clsPatterns.HasOnlySimplePatterns(oSQL) Then
LOGGER.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
LOGGER.Warn($"Unexpected error in CMB GetValues SQL - Error: {ex.Message}")
End Try
Else
LOGGER.Debug("Else Row 571")
End If
Else
LOGGER.Debug("AListe Handling")
Dim AListe As String = oControlRow.Item("CHOICE_LIST")
LOGGER.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
LOGGER.Debug($"[{oControlInfo}] - CMB CONTROL created")
Case "DTP"
oControlInfo = "DTP#" & oControlInfo
oMyControl = ClassControlCreator.CreateExistingDatepicker(oControlRow, False)
Case "DGV"
Dim dgv = ClassControlCreator.CreateExistingDataGridView(oControlRow, False)
AddHandler dgv.RowValidating, AddressOf onDGVRowValidating
oMyControl = dgv
Case "LOOKUP"
oControlInfo = "LOOKUP#" & oControlInfo
Dim oMultiselect = oControlRow.Item("MULTISELECT")
Dim oReadonly = oControlRow.Item("READ_ONLY")
If oMultiselect = False And oReadonly = True Then
Dim lookupReadonly = ClassControlCreator.CreateExistingTextbox(oControlRow, False)
oMyControl = lookupReadonly
Else
Dim lookup As LookupControl3 = ClassControlCreator.CreateExistingLookupControl(oControlRow, False)
lookup.Properties.PreventDuplicates = oControlRow.Item("VKT_PREVENT_MULTIPLE_VALUES")
lookup.Properties.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
lookup.Properties.MultiSelect = oMultiselect
If NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
lookup.Properties.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
End If
oMyControl = lookup
AddHandler lookup.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
LOGGER.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler lookup.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
LOGGER.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler lookup.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 lookup.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set
End If
oFilteredData = DT_CONTROLS.Clone()
End If
AddHandler lookup.GotFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(lookup.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
lookup.BackColor = Color.LightSteelBlue
End If
End Sub
AddHandler lookup.LostFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(lookup.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
lookup.BackColor = Color.White
End If
End Sub
End If
'Return filteredData
'AddHandler lookup.Leave, AddressOf onLookUp0
Case "CHK"
oControlInfo = "CHK#" & oControlInfo
oMyControl = ClassControlCreator.CreateExisingCheckbox(oControlRow, False)
Dim mycheckbox As CheckBox = oMyControl
AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange
Case "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
LOGGER.Debug("We got a DTGRID_COLUMNS definition for [{0}] ", oControlInfo)
Else
LOGGER.Debug("DTGRID_COLUMNS definition for control [{0}] does not contain any rows!", oControlInfo)
Continue For
End If
Dim oGrid = ClassControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False)
AddHandler oGrid.ProcessGridKey, Sub(ByVal _sender As Object, ByVal e As KeyEventArgs)
If e.KeyCode = Keys.Tab Then
Dim gridControl = TryCast(_sender, GridControl)
Dim view = TryCast(gridControl.FocusedView, Views.Base.ColumnView)
If (e.Modifiers = Keys.None And view.IsNewItemRow(view.FocusedRowHandle) _
And view.FocusedColumn.VisibleIndex = view.VisibleColumns.Count - 1) Then
If view.IsEditing Then
view.CloseEditor()
Me.SelectNextControl(gridControl, e.Modifiers = Keys.None, True, True, True)
e.Handled = True
End If
End If
End If
End Sub
oMyControl = oGrid
Case "LINE"
oMyControl = ClassControlCreator.CreateExistingLine(oControlRow, False)
Case "BUTTON"
Dim obutton = ClassControlCreator.CreateExistingButton(oControlRow, False)
AddHandler obutton.Click, AddressOf onCustomButtonClick
oMyControl = obutton
End Select
LOGGER.Debug($"[{oControlInfo}]: End of Select...")
If TypeOf oMyControl IsNot Label Then
If first_control Is Nothing Then
first_control = oMyControl
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}"
LOGGER.Warn(omsg)
If DEBUG = False Then MsgBox(omsg, MsgBoxStyle.Critical, "Attention:")
End Try
Next
LOGGER.Debug("Create_Controls finished!")
Catch ex As Exception
LOGGER.Error(ex)
If DEBUG = False Then MsgBox("Error CreateControls: " & ex.Message, MsgBoxStyle.Critical, "Attention:")
allgFunk.Insert_LogEntry($"ERROR CreateControls >> {ex.Message}")
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
LOGGER.Error(ex)
End Try
End Sub
Sub Clear_all_Input()
For Each inctrl As Control In Me.PanelValidatorControl.Controls
Dim Type As String = inctrl.GetType.ToString
Select Case Type
Case "System.Windows.Forms.TextBox"
inctrl.Text = ""
Case "System.Windows.Forms.ComboBox"
Dim cmb As ComboBox = inctrl
cmb.SelectedIndex = -1
Case "System.Windows.Forms.DataGridView"
Dim dgv As DataGridView = inctrl
If dgv.Rows.Count > 0 Then
dgv.Rows.Clear()
End If
Case "System.Windows.Forms.CheckBox"
End Select
Next
'set_foreground()
If first_control Is Nothing = False Then
first_control.Focus()
End If
End Sub
Public Sub OnTextBoxFocus(sender As Object, e As EventArgs)
Dim box As TextBox = sender
If DirectCast(box.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
box.BackColor = Color.LightSteelBlue
box.SelectAll()
End If
End Sub
Public Sub OnTextBoxLostFocus(sender As System.Object, e As System.EventArgs)
Dim oTextbox As TextBox = sender
If DirectCast(oTextbox.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
oTextbox.BackColor = Color.White
End If
SetControlValues_FromControl(oTextbox)
ClassControlCreator.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 TextBox = sender
If oTextBox.Text <> String.Empty And me_closing = 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
LOGGER.Error(ex)
LOGGER.Info("Unexpected Error in Display SQL result for control: " & oRow.Item("NAME") & " - ERROR: " & ex.Message)
End Try
Next
End If
ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.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)
Dim oButton As Button = sender
Dim oControlID = DirectCast(oButton.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oSQL = ClassControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL_UEBERPRUEFUNG")
If IsNothing(oSQL) Then
LOGGER.Warn("onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING")
Exit Sub
End If
If Check_UpdateIndexe() = False Then
LOGGER.Warn("onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click")
Exit Sub
End If
Override_SQLCommand = ClassControlCreator.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
LOGGER.Warn($"Could not set OverrideAll {ex.Message}")
OverrideAll = False
End Try
If OverrideAll = True Then
LOGGER.Info($"CURRENT_DOC_ID: {CURRENT_DOC_ID} - OverrideAll will be in Action!")
End If
Select Case oAction.ToString.ToUpper
Case "SetButton".ToUpper
btnSave.Text = oCaption & " (F2)"
btnSave.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 Else
MsgBox($"No configured action provided for onCustomButtonClick [{oAction}]", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
LOGGER.Warn($"No configured action provided for onCustomButtonClick [{oAction}]")
End Select
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
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
LOGGER.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))
LOGGER.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
LOGGER.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
End If
End If
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Public Sub LookupListChanged(sender As Object, SelectedValues As List(Of String))
If FormLoaded = False Then
Exit Sub
End If
Try
Dim oLookup As RepositoryItemLookupControl3 = sender
listChangedLookup.Add(oLookup.Name)
ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Public Sub onCheckBox_CheckedChange(sender As Object, e As EventArgs)
LOGGER.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)
ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Public Sub onLookUpselectedValue_Control2Set(sender As Object, SelectedValues As List(Of String))
If FormLoaded = False Then
Exit Sub
End If
LOGGER.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
LOGGER.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
LOGGER.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")
LOGGER.Debug($"Workin on SetControLValue for {oControlname2Set} ...")
Dim oConnectionId = NotNull(oRow.Item("CONNECTION_ID"), -1)
Dim oControlDataSql = NotNull(oRow.Item("SET_CONTROL_DATA"), String.Empty)
If oConnectionId = -1 Or oControlDataSql = String.Empty Then
LOGGER.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
Exit Sub
End If
Dim oSqlCommand = NotNull(oRow.Item("SET_CONTROL_DATA"), String.Empty)
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
'Dim oControlDataResult As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId, $"SetControlValues - CTRLID {oControlID}")
Dim oControlDataResult As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oConnectionId
})
If oControlDataResult Is Nothing Then
Exit Sub
End If
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
'Try
' Dim btntext = oResultRow.Item("Caption")
' btnSave.Text = btntext & " (F2)"
'Catch ex As Exception
' LOGGER.Error(ex)
'End Try
'Try
' Dim oColor1 = Color.FromName(oResultRow.Item("BackgroundColor"))
' btnSave.BackColor = oColor1
'Catch ex As Exception
' LOGGER.Error(ex)
' btnSave.BackColor = Color.Transparent
'End Try
'Try
' Dim oColor2 = Color.FromName(oResultRow.Item("FontColor"))
' btnSave.ForeColor = oColor2
'Catch ex As Exception
' LOGGER.Error(ex)
' btnSave.ForeColor = Color.Black
'End Try
btnSave.Text = oControlCaption & " (F2)"
btnSave.BackColor = oControlBackColor
btnSave.ForeColor = oControlFontColor
_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)
'If oMeta.Guid = oControlId2Set Then
LOGGER.Debug($"Got the Control22Set: {oControlId2Set}..Setting the values..")
'Dim oCaption As Object = oResultRow.Item("Caption")
'Dim oTextOption = Nothing
'Try
' oTextOption = oResultRow.Item("TextOption")
'Catch ex As Exception
' LOGGER.Debug("Column [TextOption] not found. Using Default of [Replace]")
' oTextOption = "Replace"
'End Try
Select Case oControl.GetType()
Case GetType(TextBox)
If oControlTextOption = "Replace" Then
oControl.Text = oControlCaption
Else
oControl.Text &= oControlCaption
End If
btnSave.BackColor = oControlBackColor
btnSave.ForeColor = oControlFontColor
'Dim oBackColor
'Try
' oBackColor = Color.FromName(oResultRow.Item("BackgroundColor"))
' oControl.BackColor = oBackColor
'Catch ex As Exception
' LOGGER.Debug("Column [BackgroundColor] not found. Using Default of [White]")
' oControl.BackColor = Color.White
'End Try
'Dim oForeColor As Color
'Try
' oForeColor = Color.FromName(oResultRow.Item("FontColor"))
' oControl.ForeColor = oForeColor
'Catch ex As Exception
' LOGGER.Debug("Column [FontColor] not found. Using Default of [Black]")
' oControl.ForeColor = Color.Black
'End Try
Case GetType(LookupControl3)
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
Case Else
LOGGER.Warn("SetControlData used on unsupported control")
End Select
oFound = True
'Exit For
End If
'End If
'For Each oControl As Control In PanelValidatorControl.Controls
' Dim oMeta As ClassControlCreator.ControlMetadata = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
' If oMeta.Guid = oControlId2Set Then
' LOGGER.Debug($"Got the Control22Set: {oControlId2Set}..Setting the values..")
' Dim oCaption As Object = oResultRow.Item("Caption")
' Dim oTextOption = Nothing
' Try
' oTextOption = oResultRow.Item("TextOption")
' Catch ex As Exception
' LOGGER.Debug("Column [TextOption] not found. Using Default of [Replace]")
' oTextOption = "Replace"
' End Try
' Select Case oControl.GetType()
' Case GetType(TextBox)
' If oTextOption = "Replace" Then
' oControl.Text = oCaption
' Else
' oControl.Text &= oCaption
' End If
' Dim oBackColor
' Try
' oBackColor = Color.FromName(oResultRow.Item("BackgroundColor"))
' oControl.BackColor = oBackColor
' Catch ex As Exception
' LOGGER.Debug("Column [BackgroundColor] not found. Using Default of [White]")
' oControl.BackColor = Color.White
' End Try
' Dim oForeColor As Color
' Try
' oForeColor = Color.FromName(oResultRow.Item("FontColor"))
' oControl.ForeColor = oForeColor
' Catch ex As Exception
' LOGGER.Debug("Column [FontColor] not found. Using Default of [Black]")
' oControl.ForeColor = Color.Black
' End Try
' Case GetType(LookupControl3)
' Dim oDependingLookup As LookupControl3 = oControl
' If oDependingLookup.Properties.MultiSelect = True Then
' If oTextOption = "Replace" Then
' oDependingLookup.Properties.SelectedValues = New List(Of String) From {oCaption}
' Else
' oDependingLookup.Properties.SelectedValues.Add(oCaption)
' End If
' Else
' oDependingLookup.Properties.SelectedValues = New List(Of String) From {oCaption}
' End If
' Case Else
' LOGGER.Warn("SetControlData used on unsupported control")
' End Select
' oFound = True
' Exit For
' End If
'Next
If oFound = False Then
LOGGER.Debug($"Could not find the Control2Set with ID {oControlGUID2Set} on panel!!!")
End If
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.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
LOGGER.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
LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
Else
LOGGER.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")
LOGGER.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oLOOKUPName}..")
If _dependingControl_in_action = True Then
LOGGER.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
LOGGER.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
Select Case oControl.GetType.ToString
Case GetType(TextBox).ToString
Try
Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0)
Try
If Not IsNothing(oTEXT) Then
If Not IsDBNull(oTEXT) Then
oControl.Text = oTEXT
End If
End If
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
End Try
Catch ex As Exception
LOGGER.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 GetType(LookupControl3).ToString
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 GetType(GridControl).ToString
'ClassControlCreator.GridTables
Case GetType(CheckBox).ToString
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
LOGGER.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
LOGGER.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
End If
Catch ex As Exception
LOGGER.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
_dependingControl_in_action = False
End Try
SendKeys.Send("{TAB}")
ControlHandleStarted = True
Else
LOGGER.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
LOGGER.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
LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
Else
LOGGER.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")
LOGGER.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oCheckboxname}..")
If _dependingControl_in_action = True Then
LOGGER.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
LOGGER.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
Select Case oControl.GetType.ToString
Case GetType(TextBox).ToString
Try
Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0)
Try
If Not IsNothing(oTEXT) Then
If Not IsDBNull(oTEXT) Then
oControl.Text = oTEXT
End If
End If
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
End Try
Catch ex As Exception
LOGGER.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 GetType(LookupControl3).ToString
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 GetType(GridControl).ToString
'ClassControlCreator.GridTables
Case GetType(CheckBox).ToString
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
LOGGER.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
LOGGER.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
End If
Catch ex As Exception
LOGGER.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
_dependingControl_in_action = False
End Try
SendKeys.Send("{TAB}")
ControlHandleStarted = True
Else
LOGGER.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)
LOGGER.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
LOGGER.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
ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
_dependingColumn_in_action = False
Exit For
End If
Next
End If
Catch ex As Exception
LOGGER.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
LOGGER.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
ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
_dependingColumn_in_action = False
Exit For
End If
Next
End If
Catch ex As Exception
LOGGER.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 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
LOGGER.Error(ex)
LOGGER.Info("Unexpected Error in Display SQL result (Combobox) for control: (" & _Step.ToString & ")" & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
End Try
Next
End If
ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Controls2beEnabled(oCombobox.Name)
SetControlValues_FromControl(oCombobox)
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.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
LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} controls which got enable definitions!!")
Else
LOGGER.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")
LOGGER.Debug($"Control {oENABLE_CtrlName} is depending on Control: {pControlName}..")
If _dependingControl_in_action = True Then
LOGGER.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
LOGGER.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
LOGGER.Debug($"Could not find the enabling Control with ID {oENABLE_GUID} on panel!!!")
End If
Catch ex As Exception
LOGGER.Warn($"Error while setting enabling control-value for [{oENABLE_CtrlName}]: " & ex.Message)
_dependingControl_in_action = False
End Try
Else
LOGGER.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
End If
Next
Catch ex As Exception
LOGGER.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()
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
LOGGER.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
LOGGER.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
LOGGER.Debug($"Result of Enable SQL [{oResult}]...")
oControl.Enabled = oResult
Catch ex As Exception
LOGGER.Warn($"Error en/disabling control onLoad: [{ex.Message}]")
End Try
End If
Next
Next
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Private Sub Depending_Control_Set_Result(displayboxname As String, sqlCommand As String, sqlConnection As String)
Try
LOGGER.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
LOGGER.Debug("Result Table has [{0}] rows", oResultTable.Rows.Count)
LOGGER.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
LOGGER.Debug("Control is Multivalue")
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then
LOGGER.Debug("Filling Combobox with Results")
Dim oCombobox As ComboBox = PanelValidatorControl.Controls(displayboxname)
If IsNothing(oCombobox) Then
Exit Sub
End If
LOGGER.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
LOGGER.Debug("Filling Lookup Control with Results")
Dim oLookup As LookupControl3 = PanelValidatorControl.Controls(displayboxname)
If IsNothing(oLookup) Then
Exit Sub
End If
LOGGER.Debug("Control exists, setting results.")
oLookup.Properties.DataSource = Nothing
oLookup.Properties.DataSource = oResultTable
Else
'not implemented
LOGGER.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"
LOGGER.Info(">> Datatable-SQL: " & sqlCommand)
End If
End If
Else
LOGGER.Warn("Result Table is nothing!")
End If
Catch ex As Exception
LOGGER.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
ValueDTP = dtp.Value
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
LOGGER.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
LOGGER.Error(ex)
LOGGER.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
LOGGER.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
LOGGER.Warn($">> Attention: in GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
LOGGER.Warn($"ERRORMESSAGE [{ex.Message}]")
End Try
Try
CURRENT_DOC_ID = oDT.Rows(0).Item(1)
LOGGER.Debug($"Get_Next_GUID: CURRENT_DOC_ID [{CURRENT_DOC_ID}]...")
Catch ex As Exception
LOGGER.Warn($">> Attention: in GetNextGUID - Could not get the next DocID - SQL [{oSQL}]")
LOGGER.Warn($"ERRORMESSAGE [{ex.Message}]")
End Try
Try
Amount_Docs2Validate = oDT.Rows(0).Item(2)
LOGGER.Debug($"Get_Next_GUID: Amount_Docs2Validate [{Amount_Docs2Validate}]...")
Catch ex As Exception
Amount_Docs2Validate = 0
LOGGER.Warn("Amount_Docs2Validate Error: " & ex.Message)
End Try
Else
LOGGER.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
LOGGER.Debug("newGUID: " & oNewGUID.ToString)
ElseIf oNewGUID <> 0 Then
LOGGER.Info(" >> Attention: in GetNextGUID - Could not get a GUID(2)")
oNewGUID = 0
End If
Return oNewGUID
Catch ex As Exception
LOGGER.Error(ex)
oErrMsgMissingInput = "Unexpected error in Get_Next_GUID: " & ex.Message
LOGGER.Info(">> Unexpected error in Get_Next_GUID:: " & ex.Message, True)
Return 0
End Try
End Function
Private Function CreateWMObject() As String
LOGGER.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
LOGGER.Debug($"oWMOwnPath: {oWMOwnPath}")
Try
Dim oNormalizedPath = WINDREAM_MOD.GetNormalizedPath(oWMOwnPath, 1)
CURRENT_WMFILE = WINDREAM_MOD.Session.GetWMObjectByPath(WMEntity.WMEntityDocument, oNormalizedPath)
WMDocFileString = oNormalizedPath
LOGGER.Debug("WMDocFileString: " & WMDocFileString)
Return True
Catch ex As Exception
Dim _err1 As Boolean = False
LOGGER.Error(ex)
allgFunk.Insert_LogEntry($"ERROR CreateWMObject >> {ex.Message}")
LOGGER.Info("Unexpected error creating WMObject(1) in GetWMDocFileString: " & ex.Message)
LOGGER.Info("Error Number: " & Err.Number.ToString)
errormessage = $"Could not create a WMObject(1) for [{oWMOwnPath}]!"
frmError.ShowDialog()
WMDocFileString = ""
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
Dim oSQL = $"SELECT dbo.FNPM_GET_FILEPATH ({CURRENT_DOC_GUID},{_CheckStandard})"
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
LOGGER.Debug($"Checking file 0 [{oResult}] exists?...")
WMDocPathWindows = String.Empty
If File.Exists(oResult) = False And OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
DocPathWindows = oResult
LOGGER.Info($"GetWMDocPathWindows returned false [{oResult}] - trying with standard again...")
oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)"
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
LOGGER.Debug($"Checking file 1[{oResult}] exists?...")
If File.Exists(oResult) = False Then
LOGGER.Info($"GetWMDocPathWindows FileExists2 also returned false [{oResult}]!")
DocPathWindows = oResult
LOGGER.Warn($"GetDocPathWindows: File [{oResult}] not existing!")
Return False
End If
End If
WMDocPathWindows = oResult
OLD_Document_Path = WMDocPathWindows
CURRENT_DOC_PATH = WMDocPathWindows
LOGGER.Info($"GetWMDocPathWindows CURRENT_DOC_PATH: {CURRENT_DOC_PATH}")
Return True
Catch ex As Exception
WMDocPathWindows = ""
OLD_Document_Path = ""
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)
LOGGER.Debug($"Load_IDB_DOC_DATA SQL: {oSQl}")
IDB_DT_DOC_DATA = DatabaseFallback.GetDatatableECM(oSQl)
Catch ex As Exception
LOGGER.Error(ex)
End Try
End Sub
Sub Load_Next_Document(first As Boolean)
CURRENT_WMFILE = Nothing
activate_controls(False)
oErrMsgMissingInput = ""
WMDocPathWindows = ""
WMDocFileString = ""
'Me.lblerror.Visible = False
_Indexe_Loaded = False
LOGGER.Debug("In Load_Next_Document")
Try
If first = True Then
LOGGER.Debug("First Document")
CURRENT_WMFILE = Nothing
Else
LOGGER.Debug("Following Document ")
docCounter += 1
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
LOGGER.Debug($"CURRENT_JUMP_DOC_GUID: {CURRENT_JUMP_DOC_GUID}'")
If CURRENT_JUMP_DOC_GUID = 0 Then
CURRENT_DOC_GUID = Get_Next_GUID()
LOGGER.Debug($"CURRENT_JUMP_DOC_GUID = 0 ## NEW CURRENT_DOC_GUID: {CURRENT_DOC_GUID}'")
ElseIf first = False Then
CURRENT_DOC_GUID = 0
End If
LOGGER.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 accessable: {DocPathWindows}", "DarkOrange")
MsgBox("The file can not be diplayed or is not accessable!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
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
LOGGER.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
LOGGER.Debug("Got one IDB DocData Result")
End If
End If
End If
'Beschriftung des Navigators
'lblNavigator_anzDok.Text = position & " Of " & Anzahl_ValDoks & " files"
'If WMDocPathWindows <> String.Empty Then
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
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
LOGGER.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
load_viewer()
LOGGER.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
LOGGER.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)
'LOGGER.Debug("Profilname erfolgreich in Vektorfeld LOG geschrieben")
'Else
' errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
' My.Settings.Save()
' frmError.ShowDialog()
' _error = True
End If
End If
activate_controls(True)
Else
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
End If
'Else
' errormessage = oErrorMessage
' frmError.ShowDialog()
'End If
Else
If oErrMsgMissingInput <> "" Then
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
Else
'Dim oMsg = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("msgEndOfProfile")
Dim oMsg = S.Ende_des_Profils___Keine_weiteren_Vorgänge
LOGGER.Info(oMsg)
activate_controls(True)
Me.Close()
End If
End If
LOGGER.Debug("frmValidator: LoadNextDocument finished!")
Catch ex As Exception
LOGGER.Error(ex)
allgFunk.Insert_LogEntry($"ERROR LoadNextDocument >> {ex.Message}")
errormessage = "unexpected error in Load_Next_Document:" & ex.Message
My.Settings.Save()
LOGGER.Info("unexpected error in Load_Next_Document: " & ex.Message)
frmError.ShowDialog()
End Try
End Sub
Sub load_viewer()
' DocumentViewerValidator.LoadFile(WMDocPathWindows)
Try
Dim oDocument As DocumentResultList.Document = Nothing
' Load DocumentInfo
oDocument = Documentloader.Load(CURRENT_DOC_ID, WMDocPathWindows)
If oDocument Is Nothing Then
Exit Sub
End If
Current_Document = oDocument
Catch ex As Exception
LOGGER.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(status As Boolean)
Me.PanelValidatorControl.Enabled = status
Me.btnSave.Enabled = status
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
LOGGER.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT}]...")
CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT)
Catch ex As Exception
LOGGER.Error(ex)
If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT & " not found!") Then
LOGGER.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT & " not found", True)
LOGGER.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
LOGGER.Info("error in Windream_get_Doc_info 1: " & ex.Message)
Return "error in Windream_get_Doc_info 1: " & ex.Message
End If
End Try
LOGGER.Debug("DMS-Erstellt aus WD: " & CURRENT_DOC_CREATION_DATE)
Try
LOGGER.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
LOGGER.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
LOGGER.Debug($"GetVariableValue (2) [{INDEX_DMS_ERSTELLT_ZEIT}]...")
CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT)
Else
LOGGER.Error(ex)
LOGGER.Info("error in Windream_get_Doc_info 3: " & ex.Message)
Return "error in Windream_get_Doc_info 3: " & ex.Message
End If
End Try
LOGGER.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
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
MsgBox("error in ReturnVektor_IndexValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
LOGGER.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
LOGGER.Debug($"GetVariableValuefromSource - IDBCase...")
oValuefromSource = IDBData.GetVariableValue(oSourceIndexName, oIDBTyp, FromIDB)
End If
Return oValuefromSource
Catch ex As Exception
LOGGER.Error(ex)
Return Nothing
End Try
End Function
Sub FillIndexValues(first As Boolean, Optional SingleAttribute As String = "")
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 oType As String = oControl.GetType.ToString
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 = NotNull(oControlRow.Item("DEFAULT_VALUE"), String.Empty)
oIndexName = oSourceIndexName
oControName = oControl.Name
Dim oLoadIndex As Boolean = oControlRow.Item("LOAD_IDX_VALUE")
LOGGER.Debug("INDEX: " & oSourceIndexName & " - CONTROLNAME: " & oControl.Name & " - LOAD IDXVALUES: " & oLoadIndex.ToString)
Select Case oType
Case "System.Windows.Forms.TextBox"
Try
oControlType = "Textbox"
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
oControl.Text = oDefaultValue
LOGGER.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
LOGGER.Debug("TextBox with VektorField: " & oSourceIndexName)
Try
LOGGER.Debug($"Length of Vektorarray: {oValueFromSource.length}")
Catch ex As Exception
LOGGER.Info($"Error in gettin the lenth of vektorfield {oSourceIndexName} - {ex.Message}")
End Try
If oValueFromSource.length = 1 Then
oValueFromSource = oValueFromSource(0)
Else '
LOGGER.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
oValueFromSource = oValueFromSource(0)
End If
LOGGER.Debug($"wertWD has been saved...")
End If
End If
End If
Try
Dim oFormatString As String = oControlRow.Item("CTRL_FORMAT_STRING")
If oFormatString <> String.Empty Then
Try
Dim oSPlit = Split(oFormatString, ";")
If oSPlit(0) = "Decimal" Then
oFormattedValue = oValueFromSource
Dim oFormattedDec As Decimal = oValueFromSource
If oSPlit.Length = 3 Then
oFormattedValue = $"{oFormattedDec.ToString(oSPlit(1))} {oSPlit(2)}"
ElseIf oSPlit.Length = 4 Then
oFormattedValue = $"{oFormattedDec.ToString(oSPlit(1), New CultureInfo(oSPlit(2)))} {oSPlit(3)}"
Else
oFormatString = oFormatString.Replace("Decimal;", "")
End If
End If
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Format String [{oControl.Name}]: {ex.Message}")
LOGGER.Error(ex)
End Try
End If
If Not IsNothing(oFormattedValue) And oFormattedValue <> String.Empty Then
oControl.Text = NotNull(oFormattedValue, oDefaultValue)
Else
oControl.Text = NotNull(oValueFromSource, oDefaultValue)
End If
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)
End If
End If
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Set Backcolor [{oControl.Name}]: {ex.Message}")
LOGGER.Error(ex)
End Try
ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
LOGGER.Info("Error While converting defaultValue [" & oDefaultValue & "]: " & ex.Message)
oControl.Text = ""
End Try
End If
Catch ex As Exception
LOGGER.Error(ex)
errormessage = $"Unvorhergesehener Fehler bei FillIndexValues TextBox [{oControl.Name}]:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
My.Settings.Save()
frmError.ShowDialog()
LOGGER.Info("Unexpected error in FillIndexValuesTextBox: " & ex.Message, True)
LOGGER.Info(">> Controltype: " & oControlType)
LOGGER.Info(">> Indexname windream: " & oIndexName)
Exit Sub
End Try
Case "System.Windows.Forms.ComboBox"
oControlType = "ComboBox"
Dim oMyCombobox As 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
LOGGER.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
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oSourceIndexName}: Nothing")
If oDefaultValue = String.Empty Then
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wurde nicht gefunden")
oMyCombobox.SelectedIndex = -1
Else
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wird geladen")
oMyCombobox.Text = oDefaultValue
'cmb.SelectedIndex = cmb.FindStringExact(defaultValue)
End If
Else
If oValueFromSource.ToString = "System.Object[]" Then
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name} - Combobox with VektorField: " & oSourceIndexName)
Try
LOGGER.Debug($"Length of Vektorarray: {oValueFromSource.length}")
Catch ex As Exception
LOGGER.Info($"Error in gettin the length of vektorfield {oSourceIndexName} - {ex.Message}")
End Try
If oValueFromSource.length = 1 Then
oValueFromSource = oValueFromSource(0)
Else '
LOGGER.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
oValueFromSource = oValueFromSource(0)
End If
LOGGER.Debug($"wertWD has been saved...")
Else
End If
LOGGER.Debug($"Indexwert from Index {oSourceIndexName}: {oValueFromSource}")
LOGGER.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
' If LogErrorsOnly = False Then LOGGER.Info($"Index Wert wurde ausgewählt")
oMyCombobox.SelectedIndex = oMyCombobox.FindStringExact(oValueFromSource)
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name} .SelectedIndex: {oMyCombobox.SelectedIndex}")
End If
End If
End If
LOGGER.Debug("")
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info(">> Unexpected error in FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & ex.Message, True)
LOGGER.Info(">> Controltype: " & oControlType)
LOGGER.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 "DevExpress.XtraGrid.GridControl"
oControlType = "DevExpress.XtraGrid.GridControl"
Dim oMyGridControl As GridControl = oControl
Dim oDTColumnsPerDevExGrid As DataTable = DT_COLUMNS_GRID.Clone()
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
LOGGER.Debug("Indexwert soll nicht geladen werden.")
Exit Select
End If
LOGGER.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
LOGGER.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()
LOGGER.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
LOGGER.Debug("ValueFromSource contains {0} items", oValueFromSource)
For Each Zeile As Object In oValueFromSource
LOGGER.Debug($"vektorrow Value {Zeile.ToString}...")
oColValuesfromSource = Split(Zeile, PMDelimiter)
Dim oNewRow = oDataSource.NewRow()
LOGGER.Debug("Creating new row..")
For index = 0 To oDTColumnsPerDevExGrid.Rows.Count - 1
LOGGER.Debug("Column Index {0}", index)
If oColValuesfromSource.Length > index Then
LOGGER.Debug("Value: {0}", oColValuesfromSource(index))
oNewRow.Item(index) = oColValuesfromSource(index)
Else
LOGGER.Debug("Value: String.Empty")
oNewRow.Item(index) = String.Empty
End If
Next
LOGGER.Debug("Adding row to grid..")
oDataSource.Rows.Add(oNewRow)
Next
Else
If oValueType = "System.String" Then
LOGGER.Debug($"IDB Fill Grid [{oControl.Name}] with String")
LOGGER.Debug($"oValueFromSource [{oValueFromSource}] - PMDelimiter[{PMDelimiter}]")
oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter)
If oColValuesfromSource.Length > 8 Then
LOGGER.Warn("Fill Grid Error - Max 8 columns can be configured!")
End If
Select Case oColValuesfromSource.Length
Case 1
oDataSource.Rows.Add(New String() {oColValuesfromSource(0)})
Case 2
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1)})
Case 3
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2)})
Case 4
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3)})
Case 5
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4)})
Case 6
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5)})
Case 7
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5), oColValuesfromSource(6)})
Case 8
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5), oColValuesfromSource(6), oColValuesfromSource(7)})
End Select
ElseIf oValueType = "System.Data.DataTable" Then
Dim oMyDatatable As DataTable = oValueFromSource
LOGGER.Debug($"IDB Fill Grid [{oControl.Name}] with Datatable - Rows: " & oMyDatatable.Rows.Count)
For Each oRow As DataRow In oMyDatatable.Rows
LOGGER.Debug($"IDB ROW Vector {oRow.Item(0).ToString}...")
oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter)
'If USER_USERNAME.ToLower = "'marscheiber" Then MsgBox($"IDB ROW Vector {oRow.Item(0).ToString}...")
If oColValuesfromSource.Length > 8 Then
LOGGER.Warn("Fill Grid with DatatableSplit Error - Max 8 columns can be configured!")
End If
Select Case oColValuesfromSource.Length
Case 1
oDataSource.Rows.Add(New String() {oColValuesfromSource(0)})
Case 2
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1)})
Case 3
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2)})
Case 4
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3)})
Case 5
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4)})
Case 6
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5)})
Case 7
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5), oColValuesfromSource(6)})
Case 8
oDataSource.Rows.Add(New String() {oColValuesfromSource(0), oColValuesfromSource(1), oColValuesfromSource(2), oColValuesfromSource(3), oColValuesfromSource(4), oColValuesfromSource(5), oColValuesfromSource(6), oColValuesfromSource(7)})
End Select
Next
End If
End If
Else
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
LOGGER.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
For Each oRow As DataRow In oDTColumnsPerDevExGrid.Rows
For Each oActGridColumn As DevExpress.XtraGrid.Columns.GridColumn In oMyGridView.Columns
Dim oGridDXFieldName = oActGridColumn.FieldName
Dim GridDXColumnEditName = oActGridColumn.ColumnEditName
If oRow.Item("SPALTENNAME") = oGridDXFieldName Then
oActGridColumn.Width = oRow.Item("SPALTENBREITE")
Exit For
End If
Next
Next
Dim i = 0
' RestoreDevExpressGridControl_Layout(CURRENT_CLICKED_PROFILE_ID, oControlId, oMyGridView)
Catch ex As Exception
LOGGER.Error(ex)
End Try
End If
Case "System.Windows.Forms.CheckBox"
LOGGER.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
LOGGER.Debug("Indexwert soll nicht geladen werden.")
End If
LOGGER.Debug("Loading Bool-Value from Source...")
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
Else
Try
LOGGER.Debug($"..Now GetVariableValue({oSourceIndexName})...")
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
Catch ex As Exception
LOGGER.Warn($"Could not get the windreamValue for CheckboxIndex: {oSourceIndexName} [{ex.Message}]")
End Try
End If
If oValueFromSource Is Nothing Then
LOGGER.Info(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
LOGGER.Debug(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
If oDefaultValue <> String.Empty Then
LOGGER.Info($"Using Default value [{oDefaultValue}]")
LOGGER.Debug($"Using Default value [{oDefaultValue}]")
myCheckBox.Checked = CBool(oDefaultValue)
Exit Select
Else
LOGGER.Debug("No Default Value for Checkbox - so using false!")
myCheckBox.CheckState = CheckState.Indeterminate
End If
Else
LOGGER.Debug("oValueFromSource: " & oValueFromSource.ToString)
If oValueFromSource.ToString = "" Then
LOGGER.Info(">> Versuch, default Value zu laden")
If oDefaultValue <> String.Empty Then
Dim result = False
If Boolean.TryParse(oDefaultValue, result) Then
LOGGER.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
LOGGER.Info(">> defaultValue war leer")
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End If
Else
Dim _value
If oValueFromSource.ToString = "System.Object[]" Then
LOGGER.Debug("CheckBoxValue with VectorField: " & oSourceIndexName)
If oValueFromSource.length = 1 Then
_value = oValueFromSource(0)
Else '
LOGGER.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
_value = oValueFromSource(0)
End If
Else
_value = oValueFromSource
LOGGER.Debug($"Value is not nothing and also not System.Object: [{_value}]")
End If
Try
Select Case CBool(_value)
Case True
LOGGER.Debug(">> CBool(_value) = True")
myCheckBox.Checked = True
myCheckBox.CheckState = CheckState.Checked
Case False
LOGGER.Debug(">> CBool(_value) = False")
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End Select
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.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 "DigitalData.Controls.LookupGrid.LookupControl3"
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
LOGGER.Error(ex)
LOGGER.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 "System.Windows.Forms.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
LOGGER.Debug("DATE über PM-Vektor holen")
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
LOGGER.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)
LOGGER.Debug("DATE konnte umgewandelt werden")
Catch ex As Exception
LOGGER.Error(ex)
ValueDTP = tempdate
LOGGER.Debug("DATE wurde auf heute gesetzt")
End Try
DTP.Text = tempdate
Else
LOGGER.Debug("DATE ist leer")
ValueDTP = tempdate
DTP.Text = tempdate
End If
Catch ex As Exception
LOGGER.Error(ex)
errormessage = "Unvorhergesehener Fehler bei DTP: " & vbNewLine & ex.Message
LOGGER.Info("Unexpected error in FillIndex DTP: " & ex.Message & vbNewLine & "Wert WD: " & oValueFromSource.ToString & vbNewLine & "Indexname: " & oSourceIndexName, True)
frmError.ShowDialog()
LOGGER.Info("Unexpected error in FillIndex DTP: " & ex.Message, True)
End Try
End If
End Select
oCount += 1
Next
' set_foreground()
If first_control Is Nothing = False Then first_control.Focus()
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
LOGGER.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
ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
Exit For
End If
Next
Else
LOGGER.Warn($"FillIndexValues - oDTRESULT_FOR_COLUMN is nothing!")
End If
Catch ex As Exception
LOGGER.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
LOGGER.Warn($"FillIndexValues - Unexpected error in creating dropdown for Grid: " & ex.Message)
End Try
If IDB_ACTIVE = True Then
Try
Dim oSQL = $"select Attribut, TERM_VALUE from VWIDB_VALUE_TEXT WHERE LANG_CODE = '{USER_LANGUAGE}' 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
LOGGER.Debug($"No PM_Info-Configuration!!")
RibbonPageGroup2.Visible = False
End If
Else
LOGGER.Warn($"oDTINFO is nothing!!")
RibbonPageGroup2.Visible = False
End If
Catch ex As Exception
LOGGER.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
Attmt_bbtnitmShow.Visibility = BarItemVisibility.Always
Attmnt_bbtnitm_LoadonClick.Checked = CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK
Attmnt_bbtnitm_LoadonClick.Visibility = BarItemVisibility.Always
Else
Attmt_bbtnitmShow.Visibility = BarItemVisibility.Never
Attmnt_bbtnitm_LoadonClick.Visibility = BarItemVisibility.Never
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
LOGGER.Warn($"Unexpected error in FillIndexValues: [{oControName} -TYPE: {oControlType}-INDEXNAME: {oIndexName}] ERROR: {ex.Message}")
errormessage = "Unvorhergesehener Fehler bei FillIndexValues:" & vbNewLine & 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
If File.Exists(WMDocPathWindows) Then
barbtnitmExport.Caption = ButtonExport2Folder_Caption
barbtnitmExport.Visibility = BarItemVisibility.Always
Try
If ButtonExport2Folder_RootFolder <> "" Then
If Directory.Exists(ButtonExport2Folder_RootFolder) Then
If CONFIG.Config.LastExportPath <> String.Empty Then
FolderBrowserDialog1.SelectedPath = CONFIG.Config.LastExportPath
Else
FolderBrowserDialog1.SelectedPath = ButtonExport2Folder_RootFolder
End If
Else
LOGGER.Warn($"### Dis/Enabale Export2Path - RootFolder {ButtonExport2Folder_RootFolder} not existing or accessible!###")
End If
End If
Catch ex As Exception
LOGGER.Warn($"### Error Dis/Enabale Export2Path: {ex.Message} !###")
End Try
End If
End If
End If
Catch ex As Exception
LOGGER.Error(ex)
End Try
LOGGER.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()
LOGGER.Debug("Forcing grid Validation")
For Each oGrid As GridControl In oGrids
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.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, "")
LOGGER.Warn($"No valid action provided [{oMsgType}] in btnFinishContinue!")
Return False
End Select
Catch ex As Exception
LOGGER.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
LOGGER.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 = "PROFIL_ID,TAB_INDEX"
})
If oDTFinalIndexing?.Rows.Count > 0 Then
'Jetzt finale Indexe setzen
LOGGER.Debug("FINAL INDEXING STARTING...")
For Each oFinalIndexRow As DataRow In oDTFinalIndexing.Rows
Dim oValue As String = oFinalIndexRow.Item("VALUE").ToString
Dim oFinalIndex = oFinalIndexRow.Item("INDEXNAME")
LOGGER.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(oFinalIndexRow.Item("INDEXNAME"))
End If
If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ###
LOGGER.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
Dim oResultfromSQL As Object = DatabaseFallback.GetScalarValueWithConnection(oSQLCommand, oConnectionID)
If Not IsNothing(oResultfromSQL) Then
LOGGER.Debug($"oResultfromSQL is [{oResultfromSQL.ToString}]")
If IsDBNull(oResultfromSQL) Then
If oContinueOnIndifferentState = False Then
errormessage = "Result from SQL is DBNull - Check the SQL and the log"
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
ItemWorked = False
Else
LOGGER.Warn($"FinalIndexResult from SQL is DBNull - AttributeName [{oFinalIndexRow.Item("INDEXNAME")}] - oContinueOnIndifferentState = true, Continuing with next Attribute and Replacing with empty String")
oResultfromSQL = ""
Continue For
End If
End If
If Len(oResultfromSQL) = 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
LOGGER.Warn($"FinalIndexResult from SQL is EmptyValue - AttributeName [{oFinalIndexRow.Item("INDEXNAME")}] - oContinueOnIndifferentState = true, So continuing with next Attribute")
Continue For
End If
End If
oValue = oResultfromSQL
Else
LOGGER.Warn("ATTENTION: DYNAMIC VALUE IS NOTHING!")
Continue For
End If
End If
Else
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
End If
If oErrorOcurred Then
Exit For
End If
Dim oResult() As String
ReDim Preserve oResult(0)
oResult(0) = oValue
LOGGER.Debug($"oIndexType {oIndexType.ToString}")
If oIndexType > 4000 And oIndexType < 5000 Then
'If dr.Item("INDEXNAME").ToString.StartsWith("[%VKT") Then
' Dim PM_String = Return_PM_VEKTOR(value, dr.Item("INDEXNAME"))
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oValue, oFinalIndexRow.Item("INDEXNAME"), oFinalIndexRow.Item("PREVENT_DUPLICATES"), oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = False Then
LOGGER.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has beens et suxxessfully!")
Else
errormessage = "Error in final indexing:" & vbNewLine & idxerr_message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
ItemWorked = False
End If
Else
LOGGER.Debug("Now the final indexing...")
If oValue.ToUpper = "SQL-Command".ToUpper Then
MsgBox("Something went wrong while final-indexing. Check Your log and inform the admin-team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
LOGGER.Warn("Something went wrong while final-indexing")
Exit For
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
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.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
'######
Dim Type As String = oControl.GetType.ToString
Select Case Type
Case "System.Windows.Forms.TextBox"
Try
value_from_control = oControl.Text
Catch ex As Exception
LOGGER.Error(ex)
value_from_control = String.Empty
End Try
Case "System.Windows.Forms.ComboBox"
Dim cmb As ComboBox = oControl
Try
value_from_control = cmb.Text
Catch ex As Exception
LOGGER.Error(ex)
value_from_control = String.Empty
End Try
Case "System.Windows.Forms.DateTimePicker"
Dim dtp As DateTimePicker = oControl
Try
value_from_control = dtp.Value.ToString
Catch ex As Exception
LOGGER.Error(ex)
value_from_control = String.Empty
End Try
Case "System.Windows.Forms.CheckBox"
Dim chk As CheckBox = oControl
Try
value_from_control = chk.Checked
Catch ex As Exception
LOGGER.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
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
errormessage = "Unexpected error in Finish:" & ex.Message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
ItemWorked = False
LOGGER.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
LOGGER.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
End If
If oErrorOcurred = True Then
MsgBox("Unhandled error occured ... please check your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
ItemWorked = False
Else
LOGGER.Debug("Validation of document ended successfully!")
Dim oPROCSQL = $"EXEC PRPM_CHECK_NEXT_WF {CURRENT_DOC_GUID}"
If DatabaseFallback.ExecuteNonQueryECM(oPROCSQL) = False Then
LOGGER.Warn($"Attention: Error executing proc {oPROCSQL}")
End If
End If
If CURRENT_JUMP_DOC_GUID <> 0 Then
Me.Close()
Else
'Das nächste Dokument laden
Load_Next_Document(False)
' set_foreground()
If first_control Is Nothing = False Then first_control.Focus()
End If
btnSave.Enabled = True
End Sub
Function Check_Missing(control As Control, typ As String)
Select Case typ
Case "txt"
If control.Text = String.Empty Then
Return True
End If
Return False
End Select
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
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
LOGGER.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
LOGGER.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
If oCtrlType = "LBL" Or oCtrlType = "LINE" Or oCtrlType = "BUTTON" Then
Continue For
End If
'Den Indexnamen auslesen
Dim oIndexName As String = oControlRow.Item("INDEX_NAME")
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"))
'Readonly felder werden über finale indexe gefüllt, nicht mit SetControlData
If oIsReadOnly = True And oSaveChangeEnabledFalse = False Then
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 = NotNull(oControlRow.Item("REGEX_MATCH"), String.Empty)
Dim oRegexMessage As String = 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 ' oSQLCheckCommand <> "") And
LOGGER.Debug("Indexierung für Control (" & oControlId & ") '" & oControlName & "' gestartet. Indexname '" & oIndexName & "'")
If oIndexName = "" Then
LOGGER.Info(" >> Indexname is unexpected empty.")
Continue For
End If
Dim Type As String = oControl.GetType.ToString
Select Case Type
Case "DigitalData.Controls.LookupGrid.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}'"
LOGGER.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
LOGGER.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"
LOGGER.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
LOGGER.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}"
LOGGER.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 '
LOGGER.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
LOGGER.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is NOTHING!")
oValueIsIndifferent = True
End If
If oValueIsIndifferent = False Then
If IsDBNull(oValueFromObject) Then
LOGGER.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is DBNULL!")
oValueIsIndifferent = True
End If
End If
Dim oValueSourceIsDifferent As Boolean = False
If oValueIsIndifferent = False Then
LOGGER.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is [{oValueFromObject}]")
Try
If oValueFromObject <> oMyInput Then
oValueSourceIsDifferent = True
LOGGER.Debug($"CheckUpdateIndex.LookUpGrid: There is a difference between oValueFromObject and [{oValueFromObject}]")
End If
Catch ex As Exception
oValueSourceIsDifferent = True
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.Error(ex)
End Try
Case "System.Windows.Forms.TextBox"
Try
'Dim oWrongInputMessage = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.WrongInputControl")
Dim oWrongInputMessage = S.Falsche_Eingabe
If oRegexMatch <> String.Empty AndAlso Not Regex.IsMatch(oControl.Text, oRegexMatch) Then
oMissing = True
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
LOGGER.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(oControl, "txt") = True And oIsRequired = True Then 'NICHTS EINGETRAGEN
oMissing = True
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
LOGGER.Warn(oErrMsgMissingInput)
oControl.BackColor = Color.Red
Exit For
Else
oMyInput = oControl.Text
'den aktuellen Wert in windream auslesen
Dim oSourceValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
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 '
LOGGER.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
'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
LOGGER.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
LOGGER.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"
LOGGER.Error(ex)
Dim st As New StackTrace(True)
st = New StackTrace(ex, True)
LOGGER.Warn("Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
Return False
End Try
Case "System.Windows.Forms.ComboBox"
Try
LOGGER.Debug($"Working on Combobox...")
Dim cmb As 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 & "'"
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.Debug($"Exception while oValue.ToString = System.Object[]...")
End Try
If oIndexType = "Vector" Then
LOGGER.Debug($"Control with ID{oControlId} is a vectorfield...")
If oValue.Length = 1 Then
oValue = oValue(0).ToString
Else '
LOGGER.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
oValue = oValue(0).ToString
End If
Else
LOGGER.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
LOGGER.Warn($"Could not convert the oValue of Control with ID{oControlId}...")
LOGGER.Error(ex.Message)
oitsadifference = True
End Try
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If oitsadifference = True Then
LOGGER.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
LOGGER.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
LOGGER.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
cmb.DroppedDown = True
oMissing = True
oErrMsgMissingInput = "Error indexing combobox idb"
LOGGER.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
LOGGER.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
LOGGER.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:")
LOGGER.Info($"Unexpected error in Check_UpdateIndexe Combobox : ID{oControlId}" & ex.Message)
Return False
End Try
Case "System.Windows.Forms.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 & "'"
LOGGER.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
LOGGER.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
LOGGER.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
oMissing = True
oErrMsgMissingInput = "Error indexing datepicker idb"
LOGGER.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
LOGGER.Debug("Value WD ('" & oObjectValue.ToString & "') = Input-value ('" & oMyInput.ToString & "')")
End If
Else
LOGGER.Debug("DateValue is 01.01.0001 00:00:00")
End If
Catch ex As Exception
LOGGER.Error(ex)
End Try
Case "System.Windows.Forms.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 & "'"
LOGGER.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 '
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.Error(ex)
End Try
Case "System.Windows.Forms.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 & "'"
LOGGER.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
LOGGER.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"
LOGGER.Warn(oErrMsgMissingInput)
Exit For
End If
End If
End If
'Jetzt die Datei indexieren
End If
Catch ex As Exception
LOGGER.Error(ex)
End Try
Case "DevExpress.XtraGrid.GridControl"
Dim oGrid As GridControl = oControl
Dim oSettings = New ControlSettings() With {
.IndexName = oIndexName,
.ControlType = Type,
.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
LOGGER.Info("oMissing = True...Exiting")
Exit For
End If
Next
If oMissing = True Then
LOGGER.Warn("Check_UpdateIndexe: ERROR or Missing Indexing - returning False")
Return False
Else
LOGGER.Debug("Check_UpdateIndexe: Everything OK - returning True")
Return True
End If
Catch ex As Exception
LOGGER.Warn($"Unexpected error in Check_UpdateIndexe - ControlID: {oControlId},{oControlName}")
LOGGER.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:")
LOGGER.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
LOGGER.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
LOGGER.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 item In oRow.ItemArray
item = NotNull(item, String.Empty)
If TypeOf item IsNot String Then item.ToString()
oValueList.Add(item)
Next
str = String.Join(PMDelimiter, oValueList.ToArray)
' 22.10.2021 Attempt at fixing empty lines appearing in indexes
LOGGER.Debug("Grid Value before saving: [{0}]", str)
If str.Trim.Length = 0 Or str.Trim.Replace(PMDelimiter, "").Length = 0 Then
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.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
LOGGER.Debug("User cleared the grid, so data needs to be erased!")
IDBData.Delete_AttributeData(CURRENT_DOC_ID, pSettings.IndexName)
End If
Else
LOGGER.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
LOGGER.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 File_indexiert As Boolean = False
idxerr_message = ""
Try
'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
LOGGER.Debug("Indexing Index '" & pIndexName & "' with Arrayvalue")
For Each oValue In pIndexValues
Try
LOGGER.Debug("Current Index Value for [{0}] is [{1}]", pIndexName, oValue)
Catch ex As Exception
LOGGER.Debug("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
LOGGER.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)
File_indexiert = WINDREAM.RunIndexing(_dok, arrIndex, arrValue)
Return File_indexiert
End If
Catch ex As Exception
LOGGER.Error(ex)
allgFunk.Insert_LogEntry($"ERROR Indexiere_File Validator >> {ex.Message}")
idxerr_message = "Unexpected error in Indexiere_File: " & ex.Message.ToString
LOGGER.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
Private Sub btnNavigatorfirst_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
navStep = "first"
End If
End Sub
Private Sub btnNavigatorprevious_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
navStep = "previous"
End If
End Sub
Private Sub btnNavigatornext_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
navStep = "next"
End If
End Sub
Private Sub btnNavigatorlast_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
navStep = "last"
End If
End Sub
Private Sub frmValidation_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
navStep = Nothing
End If
End Sub
Sub Datei_ueberspringen()
Try
LOGGER.Debug("Skipping document....(Datei_ueberspringen)")
'Das Dokument freigeben
Free_File()
Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}"
DatabaseFallback.ExecuteNonQueryECM(oSQL)
LOGGER.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}")
Load_Next_Document(False)
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Fehler bei Überspringen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Function Free_File()
Try
Dim sql = $"UPDATE TBPM_PROFILE_FILES SET EDIT = 0, IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
Return DatabaseFallback.ExecuteNonQueryECM(sql)
Catch ex As Exception
allgFunk.Insert_LogEntry($"ERROR Free_File >> {ex.Message}")
LOGGER.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
LOGGER.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
LOGGER.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()
LOGGER.Debug("## Delete_WMFile WMFile unlocked! ##")
End If
Try
CURRENT_WMFILE.Delete()
LOGGER.Info("Manual deleting of file [" & CURRENT_WMFILE.aName & "] successfull!")
Return True
Catch ex As Exception
LOGGER.Warn($"Could not delete via windream-function - ERROR: [{ex.Message}] {vbNewLine} Trying system.io...")
Try
Try
CURRENT_WMFILE.unlock()
Catch exul As Exception
LOGGER.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)
LOGGER.Info("Deleting of file via system.io [" & WMDocPathWindows & "] successfull!")
Return True
Catch ex1 As Exception
LOGGER.Warn($"Could not delete via System.IO - ERROR: [{ex1.Message}] {vbNewLine} Trying system.io...")
Return False
End Try
End Try
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Das windream-Objekt konnte nicht gelöscht werden!" & vbNewLine & vbNewLine & "Fehlermeldung:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
LOGGER.Info(" windream-Objekt konnte nicht gelöscht werden - Fehlermeldung: " & ex.Message, True)
Return False
End Try
End If
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Fehler bei Delete_File")
LOGGER.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) Handles btnSave.MouseHover
'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)
Else
bsiInformation.ItemAppearance.Normal.BackColor = Color.Transparent
End If
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItemFileView.ItemClick
Try
Dim Proc As New System.Diagnostics.Process
Dim psi As New ProcessStartInfo(WMDocPathWindows)
Proc.EnableRaisingEvents = True
Proc.StartInfo = psi
Proc.Start()
LOGGER.Info(" - Datei wurde geöffnet!")
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Fehler bei Datei öffnen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
LOGGER.Info("Fehler bei Datei öffnen: " & ex.Message, True)
End Try
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
LOGGER.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()
load_viewer()
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")
LOGGER.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
LOGGER.Error(ex)
LOGGER.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
LOGGER.Error(ex)
LOGGER.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(CONFIG.UserConfigPath.Replace("UserConfig.xml", ""), Filename)
End Function
Private Function Conversation_init()
Try
Dim oResult = ChatControl1.Init(LOGCONFIG, CONNECTION_STRING_IDB, IIf(CONV_IDENTIFICATION = "Email", USER_EMAIL, USER_USERNAME), USER_ID, USER_USERNAME, USER_LANGUAGE, ConversationQUDT_Delete, DTDYNAMIC_RIGHTS)
If oResult = True Then
Conversations_Init_Rights()
Conversations_load()
AddHandler ChatControl1.Conversation_Ended, AddressOf onConversationEnded
AddHandler ChatControl1.Conversation_UsersAdded_Success, AddressOf ConversationUsersAdded
End If
Return oResult
Catch ex As Exception
Return False
End Try
End Function
Private Sub bbtnitem_ConversationNew_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtnitem_ConversationNew.ItemClick
Dim oDTUSER As DataTable
For Each oRow As DataRow In DTDYNAMIC_RIGHTS.Rows
If oRow.Item("CONF_TITLE") = "NEW_CONVERSATION_USER_SELECT" Then
Dim oSQL = oRow.Item("CONF_VALUE")
oDTUSER = DatabaseFallback.GetDatatableIDB(oSQL)
End If
Next
If Not IsNothing(oDTUSER) Then
CURRENT_CONVERSATION_NEW = 0
Dim oForm As New frmChat_NewConversation(oDTUSER, Nothing)
Dim oResult = oForm.ShowDialog()
If CURRENT_CONVERSATION_NEW <> 0 Then
If Not Conversation_initialized Then
Conversation_init()
End If
Conversations_Init_Rights()
Conversations_load()
End If
End If
End Sub
Private Sub bbtnitem_ConversationEnd_ItemClick(sender As Object, e As ItemClickEventArgs) Handles btnitemConversationEnd.ItemClick
If ChatControl1.CurrentConversationID <> 0 Then
Dim result As MsgBoxResult
result = MessageBox.Show(S.Wollen_Sie_die_Konversation_beenden_, Text, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If result = MsgBoxResult.Yes Then
Dim oSQL = $"EXEC PRIDB_END_CONVERSATION {ChatControl1.CurrentConversationID}, '{USER_USERNAME}', '{USER_LANGUAGE}'"
If DatabaseFallback.ExecuteNonQueryIDB(oSQL) = True Then
btnitemConversationEnd.Enabled = False
SplitContainer2_DV_Chat.Collapsed = True
btnitemConversationEnd.Enabled = True
Else
MsgBox("Unexpected error in PRIDB_END_CONVERSATION - Check Your log!", MsgBoxStyle.Exclamation)
End If
End If
End If
End Sub
Private Sub BarEditItem3_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarEditItem3.ItemClick
Dim o = BarEditItem3.EditValue
End Sub
Private Sub RepositoryItemComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RepositoryItemComboBox3.SelectedIndexChanged
Try
Dim cBox As DevExpress.XtraEditors.ComboBoxEdit = sender
Dim item = cBox.EditValue
Dim oSplit() = item.ToString.Split("|")
Dim oConvID = oSplit(0)
ChatControl1.LoadConversation(oConvID)
btnitemConversationEnd.Enabled = False
If SplitContainer2_DV_Chat.IsPanelCollapsed Then
SplitContainer2_DV_Chat.Collapsed = False
If SplitContainer2_DV_Chat.Panel2.Visible = False Then
SplitContainer2_DV_Chat.Panel2.Visible = True
End If
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
End Try
End Sub
Private Sub BarButtonItem5_ItemClick(sender As Object, e As ItemClickEventArgs) Handles btnitemConversation_reload.ItemClick
Conversations_Init_Rights()
Conversations_load()
End Sub
Sub onConversationEnded()
Conversations_load()
btnitemConversationEnd.Enabled = False
SplitContainer2_DV_Chat.Collapsed = True
btnitemConversation_reload.Enabled = False
End Sub
Sub ConversationUsersAdded()
Conversations_load()
End Sub
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) Then
Try
Dim oFilenameOnly As String
Dim oExtension As String
Dim oTargetPath As String
If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
Dim oCount As Integer = 0
oFilenameOnly = Path.GetFileName(WMDocPathWindows)
oExtension = Path.GetExtension(WMDocPathWindows)
Dim oSQLGetFilename As String
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
LOGGER.Info($"#### ATTENTION: oExportFilename is DBNULL - SQL: {oSQLGetFilename}")
oExportFilename = ""
End If
If oExportFilename <> String.Empty Then
oTargetPath = FolderBrowserDialog1.SelectedPath & "\" & oExportFilename & oExtension
File.Copy(WMDocPathWindows, oTargetPath)
oCount += 1
Else
MsgBox("Error encountered while extracting Export-Filename!" & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End If
End If
Dim oFileCount As Integer = 1
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
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
LOGGER.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}]!"
LOGGER.Info($"#### ATTENTION: {omsg} SQL: {oSQLGetFilename}")
MsgBox(omsg & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End If
End If
'oFilenameOnly = Path.GetFileName(oFromFilename)
End If
Next
End If
CONFIG.Config.LastExportPath = FolderBrowserDialog1.SelectedPath
CONFIG.Save()
MsgBox($"[{oCount}] file/s successfully exported to target [{FolderBrowserDialog1.SelectedPath}]!", MsgBoxStyle.Information, ADDITIONAL_TITLE)
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Could not move file to target: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End Try
Else
MsgBox("Workflow-Document seems not to exist. Check Your log.", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
End If
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 Function TakeScreenShot(ByVal Control As Control) As Bitmap
Dim tmpImg As New Bitmap(Control.Width, Control.Height)
Using g As Graphics = Graphics.FromImage(tmpImg)
g.CopyFromScreen(PanelValidatorControl.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(PanelValidatorControl.Width, PanelValidatorControl.Height))
End Using
Return tmpImg
End Function
Private Sub BarButtonItem6_ItemClick_2(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem6.ItemClick
End Sub
End Class