3987 lines
214 KiB
VB.net
3987 lines
214 KiB
VB.net
Imports WINDREAMLib
|
|
Imports System.Threading
|
|
Imports System.Runtime.InteropServices
|
|
Imports Oracle.ManagedDataAccess.Client
|
|
Imports Independentsoft
|
|
Imports System.IO
|
|
Imports System.Text.RegularExpressions
|
|
Imports System.ComponentModel
|
|
Imports DD_LIB_Standards
|
|
Imports DigitalData.Controls.LookupGrid
|
|
Imports DevExpress.XtraGrid
|
|
|
|
Public Class frmValidator
|
|
Dim viewerID
|
|
Dim strFileList()
|
|
Dim PROFIL_sortbynewest As Boolean
|
|
Dim PROFIL_VEKTORINDEX
|
|
Dim PROFIL_LOGINDEX
|
|
|
|
Dim Delimiter As String
|
|
|
|
Dim WD_Search As String
|
|
Dim finalProfile As Boolean
|
|
Dim Move2Folder As String
|
|
'Private _windreamPM As New ClassPMWindream
|
|
Private _windream As New ClassWindream_allgemein
|
|
Private allgFunk As New ClassAllgemeineFunktionen
|
|
|
|
'speichert die DocumentDaten
|
|
Private navStep As String = Nothing
|
|
|
|
Public Shared WMDocPathWindows As String
|
|
Public WMDocFileString As String
|
|
|
|
Dim OLD_Document_Path As String = ""
|
|
Dim ValueDTP As Date
|
|
Dim AnzDoks As Integer
|
|
Dim docCounter As Integer = 1
|
|
'Anzahl der Validierungsdokumente
|
|
Dim Anzahl_ValDoks As Integer
|
|
'Anzahl der validierten Dokumente
|
|
Dim Anzahl_validierte_Dok As Integer = 0
|
|
Dim me_closing As Boolean = False
|
|
Dim oErrorMessage As String = "Please validate red marked fields"
|
|
Dim first_control As Control
|
|
Dim last_control As Control
|
|
Dim _Indexe_Loaded As Boolean = False
|
|
|
|
Public Shared idxerr_message As String = ""
|
|
Dim DocView
|
|
Dim viewer_string As String
|
|
Dim pdfxchange As Boolean = False
|
|
Dim sumatra As Boolean = False
|
|
|
|
Private _CURRENT_INDEX_ARRAY(100, 250) As String
|
|
|
|
|
|
Private _frmValidatorSearch As frmValidatorSearch 'You need a reference to Form1
|
|
Private _dependingControl_in_action As Boolean = False
|
|
Private DTCONTROLS As DataTable
|
|
Private FormLoaded As Boolean = False
|
|
|
|
Private ControlHandleStarted As Boolean = False
|
|
|
|
<DllImport("user32.dll", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)>
|
|
Public Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
|
|
End Function
|
|
Function set_foreground()
|
|
Try
|
|
Dim hwnd As IntPtr
|
|
Dim prc() As Process = Process.GetProcessesByName("DD_PM_WINDREAM")
|
|
|
|
If Not prc Is Nothing AndAlso Not prc.Length = 0 Then
|
|
hwnd = prc(0).MainWindowHandle
|
|
SetForegroundWindow(hwnd)
|
|
Else
|
|
prc = Process.GetProcessesByName("DD_PM_WINDREAM.vshost")
|
|
If Not prc Is Nothing AndAlso Not prc.Length = 0 Then
|
|
hwnd = prc(0).MainWindowHandle
|
|
SetForegroundWindow(hwnd)
|
|
End If
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Fehler in set_foreground: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler:")
|
|
End Try
|
|
|
|
End Function
|
|
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
|
|
Select Case Path.GetExtension(WMDocPathWindows).ToLower
|
|
Case ".pdf"
|
|
Select Case VIEWER_PDF
|
|
Case "internal"
|
|
My.Settings.frmValidation_Size_PDFViewer = Me.Size
|
|
Case "pdfxchange"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
Case "sumatra"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
Case "system"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
End Select
|
|
Case ".msg"
|
|
My.Settings.frmValidation_Size_Email = Me.Size
|
|
Case Else
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
End Select
|
|
My.Settings.Save()
|
|
Try
|
|
_frmValidatorSearch.Close()
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
|
|
End Try
|
|
Try
|
|
Dim oDel = $"DELETE FROM TBPM_FILES_USER_NOT_INDEXED WHERE UPPER(USR_NAME) = UPPER('{USER_USERNAME}')"
|
|
ClassDatabase.Execute_non_Query(oDel)
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Fehler bei Übersprungene Files löschen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
If CURRENT_DOC_GUID <> 0 Then
|
|
Try
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", CURRENT_DOC_GUID)
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler bei Freigabe der Dok-ID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
End Try
|
|
End If
|
|
|
|
If VIEWER_ALL = "docview" Then
|
|
CloseWDDocview()
|
|
End If
|
|
|
|
If VIEWER_PDF = "system" Then
|
|
Kill_PDFAcrobat()
|
|
Else
|
|
If pdfxchange = True Or sumatra = True Then
|
|
Close_PDF_Viewer(WMDocPathWindows)
|
|
End If
|
|
KillU_Viewer()
|
|
End If
|
|
|
|
|
|
|
|
End Sub
|
|
Sub KillU_Viewer()
|
|
Try
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo("taskkill.exe", "/im Viewer.exe")
|
|
psi.UseShellExecute = True
|
|
Proc.StartInfo = psi
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.Start()
|
|
pdfxchange = False
|
|
|
|
Dim p As Process
|
|
Dim processes As Process()
|
|
processes = Process.GetProcesses()
|
|
For Each p In processes
|
|
If p.ProcessName.ToLower = "viewer" Then
|
|
p.Kill()
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
End Try
|
|
End Sub
|
|
Sub Kill_PDFAcrobat()
|
|
Try
|
|
Dim p As Process
|
|
Dim processes As Process()
|
|
processes = Process.GetProcesses()
|
|
For Each p In processes
|
|
If viewerID Is Nothing = False Then
|
|
If p.Id = viewerID Then p.Kill()
|
|
If p.ProcessName = "Acrobat.exe" Then p.Kill()
|
|
Else
|
|
If p.ProcessName = "Acrobat.exe" Then p.Kill()
|
|
If p.ProcessName = "AcroRd32.exe" Then p.Kill()
|
|
If p.ProcessName.ToLower = "acrord32" Then p.Kill()
|
|
If p.ProcessName.Contains("croRd") Then p.Kill()
|
|
End If
|
|
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
|
|
End Try
|
|
End Sub
|
|
Private Function process_User_exists(processname As String, Status As String)
|
|
Dim fi = New FileInfo(processname)
|
|
Dim filename As String = fi.Name.Replace(fi.Extension, "")
|
|
|
|
Try
|
|
If Process.GetProcessesByName(filename).Length > 0 Then
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(">> Fehler in process_User_exists: " & ex.Message, True)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
'Private Function process_terminate(processname As String)
|
|
' Try
|
|
' Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process")
|
|
' Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(selectQuery)
|
|
' For Each proc As ManagementObject In searcher.Get
|
|
' If proc("Name").ToString = processname Then
|
|
' Dim s(1) As String
|
|
' proc.InvokeMethod("GetOwner", CType(s, Object()))
|
|
' If CStr(s(0)).ToLower.Contains(Environment.UserName.ToLower) Then
|
|
' proc.InvokeMethod("Terminate", Nothing)
|
|
' End If
|
|
' End If
|
|
' Next
|
|
' Return False
|
|
' Catch ex As Exception
|
|
' LOGGER.Info(">> Fehler in process_terminate: " & ex.Message, True)
|
|
' End Try
|
|
'End Function
|
|
Sub Close_PDF_Viewer(vorherigefile As String)
|
|
Try
|
|
If VIEWER_PDF = "pdfxchange" Then
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(VIEWER_XCHANGE, "/Close:save """ & vorherigefile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
psi.UseShellExecute = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
pdfxchange = True
|
|
sumatra = False
|
|
'Dim count As Integer = 0
|
|
'sss()
|
|
'Do While process_User_exists("PDFXCview.exe", "CLOSE") = True
|
|
' 'Warten bis PDF geschlossen ist
|
|
' count += 1
|
|
' If count = 500 Then
|
|
' If process_terminate("PDFXCview.exe") Then
|
|
' process_terminate("PDFXCview.exe")
|
|
' End If
|
|
' End If
|
|
'Loop
|
|
End If
|
|
If VIEWER_PDF = "sumatra" Then
|
|
Try
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo("taskkill.exe", "/im SumatraPDF.exe")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
psi.UseShellExecute = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
pdfxchange = False
|
|
sumatra = True
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
|
|
End Try
|
|
End If
|
|
If VIEWER_PDF = "system" Then
|
|
Kill_PDFAcrobat()
|
|
pdfxchange = False
|
|
sumatra = False
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Fehler in Close_PDFXCHANGE")
|
|
LOGGER.Info(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Function Init_windream()
|
|
Try
|
|
WINDREAM = New ClassPMWindream()
|
|
WINDREAM.Create_Session()
|
|
LOGGER.Debug("Windream initiiert")
|
|
Return True
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Error Init_windream:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error Init _windream: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(">> Fehler in Init_windream: " & ex.Message, True)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Private Sub frmValidation_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
|
SplitContainer1.Panel2Collapsed = True
|
|
docCounter = 1
|
|
OLD_Document_Path = ""
|
|
first_control = Nothing
|
|
me_closing = False
|
|
pdfxchange = False
|
|
sumatra = False
|
|
RibbonControl1.Minimized = True
|
|
FormLoaded = False
|
|
|
|
|
|
If My.Settings.frmValidatorPosition.IsEmpty = False Then
|
|
If My.Settings.frmValidatorPosition.X > 0 And My.Settings.frmValidatorPosition.Y > 0 Then
|
|
Location = My.Settings.frmValidatorPosition
|
|
End If
|
|
End If
|
|
If My.Settings.frmValidatorSize.IsEmpty = False Then
|
|
Size = My.Settings.frmValidatorSize
|
|
End If
|
|
Dim _step = 0
|
|
Try
|
|
_step = 1
|
|
|
|
TBPM_PROFILE_CONTROLSTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBDD_CONNECTIONTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_PROFILE_FILESTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_PROFILETableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_KONFIGURATIONTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
VWPM_CONTROL_INDEXTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_CONTROL_TABLETableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
_step = 2
|
|
VWPM_CONTROL_INDEXTableAdapter.Fill(DD_DMSLiteDataSet.VWPM_CONTROL_INDEX, CURRENT_ProfilName)
|
|
_step = 3
|
|
TBDD_CONNECTIONTableAdapter.Fill(DD_DMSLiteDataSet.TBDD_CONNECTION)
|
|
_step = 4
|
|
TBPM_CONTROL_TABLETableAdapter.FillAll(DD_DMSLiteDataSet.TBPM_CONTROL_TABLE)
|
|
|
|
LOGGER.Debug("Profile Data geladen")
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error LOADING profile-data: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(">> Fehler in LOADING profile-data: " & ex.Message, True)
|
|
Me.Close()
|
|
End Try
|
|
|
|
Try
|
|
Delimiter = TBPM_KONFIGURATIONTableAdapter.cmdGetDelimiter
|
|
|
|
|
|
If CURRENT_DT_PROFILE.Rows.Count = 0 Then
|
|
LOGGER.Info(">> Profildaten konnten nicht geladen werden - Übergebenes Profil: : " & CURRENT_ProfilName, True)
|
|
MsgBox("Achtung: Profildaten konnten nicht übergeben oder geladen werden.", MsgBoxStyle.Critical, "Achtung:")
|
|
Me.Close()
|
|
End If
|
|
If CURRENT_DT_PROFILE.Rows.Count > 1 Then
|
|
MsgBox("Es wurde mehr als 1 Profil (" & CURRENT_DT_PROFILE.Rows.Count & ") zurückgegeben!!", MsgBoxStyle.Critical, "Achtung:")
|
|
Else
|
|
If CURRENT_DT_PROFILE.Rows.Count = 1 Then
|
|
For Each dr As DataRow In CURRENT_DT_PROFILE.Rows
|
|
PROFIL_VEKTORINDEX = dr.Item("PM_VEKTOR_INDEX")
|
|
PROFIL_LOGINDEX = dr.Item("LOG_INDEX")
|
|
Me.Text = "Process Manager - " & dr.Item("TITLE")
|
|
|
|
TITLELabel1.Text = dr.Item("TITLE")
|
|
DESCRIPTIONLabel.Text = IIf(IsDBNull(dr.Item("DESCRIPTION")), "", dr.Item("DESCRIPTION"))
|
|
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 = dr.Item("WD_SEARCH")
|
|
finalProfile = dr.Item("FINAL_PROFILE")
|
|
Move2Folder = IIf(IsDBNull(dr.Item("MOVE2Folder")), "", dr.Item("MOVE2Folder"))
|
|
Try
|
|
If finalProfile = True Then
|
|
|
|
Dim text As String = IIf(IsDBNull(dr.Item("FINAL_TEXT")), "", dr.Item("FINAL_TEXT"))
|
|
If text <> "" Then
|
|
btnSave.Text = text & " (F1)"
|
|
Else
|
|
btnSave.Text = "Validierung speichern - Nächstes Dokument" & " (F1)"
|
|
End If
|
|
Else
|
|
btnSave.Text = "Validierung speichern - Nächstes Dokument" & " (F1)"
|
|
End If
|
|
LOGGER.Debug("Final profile Text geladen")
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Error loading final profile text:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error loading final profile text: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(">> Fehler in loading final profile text: " & ex.Message, True)
|
|
End Try
|
|
ToolStripButtonJumpFile.Enabled = True
|
|
If CURRENT_JUMP_DOC_GUID <> 0 Then
|
|
ToolStripButtonJumpFile.Enabled = False
|
|
Anzahl_ValDoks = 1
|
|
Else
|
|
|
|
Anzahl_ValDoks = TBPM_PROFILE_FILESTableAdapter.cmdGet_Anzahl(CURRENT_ProfilGUID)
|
|
End If
|
|
|
|
Next
|
|
If LOG_ERRORS_ONLY = False Then
|
|
LOGGER.Info(" >> Profildaten gespeichert")
|
|
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
|
|
ToolStripButtonDeleteFile.Enabled = True
|
|
Else
|
|
ToolStripButtonDeleteFile.Enabled = False
|
|
End If
|
|
|
|
LOGGER.Debug("Right_Delete: " & USER_RIGHT_FILE_DELETE.ToString)
|
|
Load_Controls()
|
|
|
|
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Error LOADING Profile-Data1:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error LOADING(2) Profile-Data: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(">> Fehler in LOADING(2) Profile-Data: " & ex.Message, True)
|
|
End Try
|
|
|
|
End Sub
|
|
Public Sub Load_Additional_Searches()
|
|
If CURRENT_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Or CURRENT_DT_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
|
|
frmValidatorSearch.Show()
|
|
_frmValidatorSearch = frmValidatorSearch
|
|
ToolStripButtonSearchesReload.Visible = True
|
|
Dim oPnl1Collapsed As Boolean = True
|
|
Dim oPnl2Collapsed As Boolean = True
|
|
If CURRENT_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
|
|
oPnl1Collapsed = False
|
|
Else
|
|
oPnl1Collapsed = True
|
|
End If
|
|
If CURRENT_DT_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
|
|
oPnl2Collapsed = False
|
|
Else
|
|
oPnl2Collapsed = True
|
|
End If
|
|
_frmValidatorSearch.TabPreload(oPnl1Collapsed, oPnl2Collapsed, CURRENT_DT_PROFILE_SEARCHES_SQL.Rows.Count, CURRENT_DT_PROFILE_SEARCHES_DOC.Rows.Count,
|
|
CURRENT_DT_PROFILE_SEARCHES_SQL, CURRENT_DT_PROFILE_SEARCHES_DOC)
|
|
If CURRENT_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
|
|
_frmValidatorSearch._DTSQLSearches = CURRENT_DT_PROFILE_SEARCHES_SQL
|
|
Dim oConID = CURRENT_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID")
|
|
Dim oCommand = CURRENT_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND")
|
|
oCommand = clsPatterns.ReplaceAllValues(oCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
|
|
_frmValidatorSearch.Refresh_Load_GridSQL(oConID, oCommand, 0, CURRENT_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("TAB_TITLE"))
|
|
End If
|
|
If CURRENT_DT_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
|
|
_frmValidatorSearch._DTDocSearches = CURRENT_DT_PROFILE_SEARCHES_DOC
|
|
Dim oConID = CURRENT_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
|
|
Dim oCommand = CURRENT_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
|
|
oCommand = clsPatterns.ReplaceAllValues(oCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
|
|
_frmValidatorSearch.RefreshTabDoc(oConID, oCommand, 0, CURRENT_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("TAB_TITLE"))
|
|
End If
|
|
Else
|
|
LOGGER.Info("Not loading AdditionalSearches...!")
|
|
ToolStripButtonSearchesReload.Visible = False
|
|
End If
|
|
End Sub
|
|
Sub LoadSQLData(control As Control, controlId As Integer)
|
|
Try
|
|
If TypeOf control Is Label Then Exit Sub
|
|
|
|
Dim sql As String = $"SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE GUID = {controlId} AND PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(ISNULL(SQL_UEBERPRUEFUNG,'')) > 0 AND SQL_UEBERPRUEFUNG NOT LIKE '%#WMI#%' AND SQL_UEBERPRUEFUNG NOT LIKE '%#CTRL#%'"
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
|
|
If IsNothing(dt) Then Exit Sub
|
|
If dt.Rows.Count = 0 Then Exit Sub
|
|
|
|
For Each row As DataRow In dt.Rows
|
|
Dim name As String = row.Item("NAME")
|
|
|
|
If IsDBNull(row.Item("CONNECTION_ID")) Then Continue For
|
|
If IsDBNull(row.Item("SQL_UEBERPRUEFUNG")) Then Continue For
|
|
|
|
Dim sqlStatement As String = row.Item("SQL_UEBERPRUEFUNG")
|
|
Dim connectionId As Integer = row.Item("CONNECTION_ID")
|
|
|
|
If clsPatterns.HasComplexPatterns(sqlStatement) Then
|
|
Continue For
|
|
End If
|
|
|
|
sql = clsPatterns.ReplaceUserValues(sqlStatement, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
sql = clsPatterns.ReplaceInternalValues(sql)
|
|
LOGGER.Debug(">>> sql after ReplaceInternalValues: " & sql)
|
|
'sql = ClassPatterns.ReplaceInternalValues(sqlStatement)
|
|
dt = ClassDatabase.Return_Datatable_CS(sql, connectionId)
|
|
|
|
If IsNothing(dt) Then
|
|
MsgBox($"SQL-Query for control {control.Name} is invalid.")
|
|
Exit Sub
|
|
End If
|
|
Dim oValue
|
|
|
|
If TypeOf control Is TextBox Then
|
|
Try
|
|
Dim firstRow As DataRow = dt.Rows(0)
|
|
|
|
Dim value = firstRow.Item(0)
|
|
|
|
control.Text = value
|
|
oValue = value
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
clsLogger.Add("Error in LoadSimpleData for TextBox: " & 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 dt.Rows
|
|
list.Add(_row.Item(0))
|
|
Next
|
|
|
|
oMyComboBox.DataSource = list
|
|
oMyComboBox.SelectedIndex = oselectedIndex
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
clsLogger.Add("Error in LoadSimpleData for Combobox: " & ex.Message)
|
|
End Try
|
|
ElseIf TypeOf control Is LookupControl2 Then
|
|
Try
|
|
Dim lookup As LookupControl2 = control
|
|
|
|
lookup.DataSource = dt
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
clsLogger.Add("Error in LoadSimpleData for LookupControl2: " & 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 = dt.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 dt.Rows
|
|
oDataSource.ImportRow(oRow)
|
|
Next
|
|
|
|
dataGridView.DataSource = oDataSource
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
clsLogger.Add("Error in LoadSimpleData for DataGridView: " & ex.Message)
|
|
End Try
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Error in LoadSimpleData: " & ex.Message, MsgBoxStyle.Critical)
|
|
clsLogger.Add("Error in LoadSimpleData: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Sub Load_Controls()
|
|
Try
|
|
pnldesigner.Controls.Clear()
|
|
|
|
Dim oSQL = $"SELECT * FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC"
|
|
DTCONTROLS = ClassDatabase.Return_Datatable(oSQL)
|
|
|
|
Dim oCount As Integer = 0
|
|
|
|
For Each oControlRow As DataRow In DTCONTROLS.Rows
|
|
Dim oMyControl As Control
|
|
|
|
Select Case oControlRow.Item("CTRL_TYPE").ToString.ToUpper
|
|
Case "TXT"
|
|
LOGGER.Debug("Versuch TXT zu laden")
|
|
Dim txt As TextBox = ClassControlCreator.CreateExistingTextbox(oControlRow, False)
|
|
LOGGER.Debug("TXT wurde geladen")
|
|
|
|
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
|
|
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
|
|
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
|
|
|
|
oMyControl = txt
|
|
Case "LBL"
|
|
LOGGER.Debug("Versuch LBL zu laden")
|
|
oMyControl = ClassControlCreator.CreateExistingLabel(oControlRow, False)
|
|
Case "CMB"
|
|
LOGGER.Debug("Versuch CMB zu laden")
|
|
|
|
Dim cmb = ClassControlCreator.CreateExistingCombobox(oControlRow, False)
|
|
|
|
AddHandler cmb.SelectedValueChanged, AddressOf OnCmbselectedIndex
|
|
|
|
#Region "CONTROL LIST"
|
|
|
|
Dim ControlID = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(CURRENT_ProfilGUID, cmb.Name)
|
|
LOGGER.Debug("In add_ComboBox - GUID: " & ControlID)
|
|
If ControlID > 0 Then
|
|
LOGGER.Debug(" >>ControlID > 0")
|
|
Dim ConID = Me.TBPM_PROFILE_CONTROLSTableAdapter.cmdgetConnectionID(ControlID)
|
|
If ConID Is Nothing = False Then
|
|
Dim commandsql = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID)
|
|
LOGGER.Debug("ConID Is Nothing = False")
|
|
If ConID > 0 And commandsql <> "" Then
|
|
LOGGER.Debug("CConID > 0 And TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID)")
|
|
Dim connectionString As String
|
|
TBDD_CONNECTIONTableAdapter.FillByID(DD_DMSLiteDataSet.TBDD_CONNECTION, ConID)
|
|
Dim DTConnection As DataTable = DD_DMSLiteDataSet.TBDD_CONNECTION
|
|
Dim drConnection As DataRow
|
|
For Each drConnection In DTConnection.Rows
|
|
Select Case drConnection.Item("SQL_PROVIDER").ToString.ToLower
|
|
Case "ms-sql"
|
|
If drConnection.Item("USERNAME") = "WINAUTH" Then
|
|
connectionString = "Data Source=" & drConnection.Item("SERVER") & ";Initial Catalog=" & drConnection.Item("DATENBANK") & ";Trusted_Connection=True;"
|
|
Else
|
|
connectionString = "Data Source=" & drConnection.Item("SERVER") & ";Initial Catalog= " & drConnection.Item("DATENBANK") & ";User Id=" & drConnection.Item("USERNAME") & ";Password=" & drConnection.Item("PASSWORD") & ";"
|
|
End If
|
|
LOGGER.Debug("ConnString Sql-Server: " & connectionString)
|
|
Case "oracle"
|
|
Dim conn As New OracleConnectionStringBuilder
|
|
Dim connstr As String
|
|
If drConnection.Item("SERVER") <> "" And drConnection.Item("DATENBANK").GetType.ToString <> "system.dbnull" Then
|
|
connstr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & drConnection.Item("SERVER") & ")(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" &
|
|
drConnection.Item("DATENBANK") & ")));User Id=" & drConnection.Item("USERNAME") & ";Password=" & drConnection.Item("PASSWORD") & ";"
|
|
Else
|
|
conn.DataSource = drConnection.Item("SERVER")
|
|
conn.UserID = drConnection.Item("USERNAME")
|
|
conn.Password = drConnection.Item("PASSWORD")
|
|
conn.PersistSecurityInfo = True
|
|
conn.ConnectionTimeout = 120
|
|
connstr = conn.ConnectionString
|
|
End If
|
|
|
|
connectionString = connstr
|
|
Case Else
|
|
LOGGER.Info(" - ConnectionType nicht integriert")
|
|
MsgBox("ConnectionType nicht integriert", MsgBoxStyle.Critical, "Bitte Konfiguration Connection überprüfen!")
|
|
End Select
|
|
Next
|
|
If connectionString Is Nothing = False Then
|
|
Try
|
|
Dim sqlCnn As SqlClient.SqlConnection
|
|
Dim sqlCmd As SqlClient.SqlCommand
|
|
Dim adapter As New SqlClient.SqlDataAdapter
|
|
Dim NewDataset As New DataSet
|
|
Dim i As Integer
|
|
Dim sql As String
|
|
|
|
|
|
sql = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID)
|
|
|
|
'sql = ClassPatterns.ReplaceAllValues(sql, pnldesigner, CURRENT_WMFILE)
|
|
|
|
'If ClassPatterns.HasOnlySimplePatterns(sql) Then
|
|
If clsPatterns.HasOnlySimplePatterns(sql) Then
|
|
sql = clsPatterns.ReplaceInternalValues(sql)
|
|
sql = clsPatterns.ReplaceControlValues(sql, pnldesigner)
|
|
LOGGER.Debug(">>> sql after HasOnlySimplePatterns: " & sql)
|
|
sqlCnn = New SqlClient.SqlConnection(connectionString)
|
|
' Try
|
|
sqlCnn.Open()
|
|
sqlCmd = New SqlClient.SqlCommand(sql, sqlCnn)
|
|
adapter.SelectCommand = sqlCmd
|
|
adapter.Fill(NewDataset)
|
|
Dim msg As String
|
|
For i = 0 To NewDataset.Tables(0).Rows.Count - 1
|
|
cmb.Items.Add(NewDataset.Tables(0).Rows(i).Item(0))
|
|
Next
|
|
adapter.Dispose()
|
|
sqlCmd.Dispose()
|
|
sqlCnn.Close()
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(" - Unvorhergesehener Fehler bei GetValues SQL - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei GetValues SQL:")
|
|
End Try
|
|
End If
|
|
Else
|
|
LOGGER.Debug("Else Row 571")
|
|
End If
|
|
Else
|
|
LOGGER.Debug("AListe Handling")
|
|
Dim AListe As String = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetChoiceListName(ControlID)
|
|
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
|
|
cmb.Items.Add("")
|
|
For Each index As String In liste
|
|
cmb.Items.Add(index)
|
|
Next
|
|
cmb.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
|
|
|
|
|
|
End If
|
|
#End Region
|
|
|
|
Dim maxWith As Integer = cmb.Width
|
|
Using g As Graphics = Me.CreateGraphics
|
|
For Each oItem As Object In cmb.Items 'Für alle Einträge...
|
|
Dim g1 As Graphics = cmb.CreateGraphics
|
|
If g1.MeasureString(Text, cmb.Font).Width + 30 > maxWith Then
|
|
maxWith = g1.MeasureString(Text, cmb.Font).Width + 30
|
|
End If
|
|
g1.Dispose()
|
|
Next oItem
|
|
End Using
|
|
cmb.DropDownWidth = maxWith
|
|
|
|
oMyControl = cmb
|
|
|
|
'add_ComboBox(dr.Item("GUID"), dr.Item("CTRL_NAME"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")), CInt(dr.Item("WIDTH")), CInt(dr.Item("HEIGHT")), dr.Item("READ_ONLY"), dr.Item("LOAD_IDX_VALUE")) 'dr.Item("INDEX_NAME"),
|
|
Case "DTP"
|
|
LOGGER.Debug("Versuch DTP zu laden")
|
|
oMyControl = ClassControlCreator.CreateExistingDatepicker(oControlRow, False)
|
|
|
|
'add_DTP(dr.Item("GUID"), dr.Item("NAME"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")), CInt(dr.Item("WIDTH")), CInt(dr.Item("HEIGHT")), dr.Item("READ_ONLY"), dr.Item("LOAD_IDX_VALUE")) 'dr.Item("INDEX_NAME"),
|
|
Case "DGV"
|
|
LOGGER.Debug("Versuch DGV zu laden")
|
|
Dim dgv = ClassControlCreator.CreateExistingDataGridView(oControlRow, False)
|
|
|
|
AddHandler dgv.RowValidating, AddressOf onDGVRowValidating
|
|
|
|
oMyControl = dgv
|
|
|
|
Case "LOOKUP"
|
|
LOGGER.Debug("Versuch LOOKUP zu laden")
|
|
Dim lookup As LookupControl2 = ClassControlCreator.CreateExistingLookupControl(oControlRow, False)
|
|
|
|
lookup.PreventDuplicates = oControlRow.Item("VKT_PREVENT_MULTIPLE_VALUES")
|
|
lookup.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
|
|
lookup.MultiSelect = oControlRow.Item("MULTISELECT")
|
|
|
|
If NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
|
|
lookup.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
|
|
End If
|
|
|
|
oMyControl = lookup
|
|
'Wenn Multiselect false dann prüfen ob abhängiges Control
|
|
If CBool(oControlRow.Item("MULTISELECT")) = False Then
|
|
Dim filteredData As DataTable = DTCONTROLS.Clone()
|
|
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'"
|
|
DTCONTROLS.Select(oExpression).CopyToDataTable(filteredData, LoadOption.PreserveChanges)
|
|
If filteredData.Rows.Count = 1 Then
|
|
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
|
AddHandler lookup.SelectedValuesChanged, AddressOf onLookUp1
|
|
End If
|
|
End If
|
|
|
|
'Return filteredData
|
|
'AddHandler lookup.Leave, AddressOf onLookUp0
|
|
|
|
'add_DGV(dr.Item("GUID"), dr.Item("CTRL_NAME"), dr.Item("HEIGHT"), dr.Item("WIDTH"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")), dr.Item("READ_ONLY"), dr.Item("LOAD_IDX_VALUE")) 'dr.Item("INDEX_NAME"),
|
|
Case "CHK"
|
|
LOGGER.Debug("Versuch Checkbox zu laden")
|
|
|
|
oMyControl = ClassControlCreator.CreateExisingCheckbox(oControlRow, False)
|
|
'add_Checkbox(dr.Item("GUID"), dr.Item("CTRL_NAME"), dr.Item("CTRL_TEXT"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")), dr.Item("READ_ONLY"), dr.Item("LOAD_IDX_VALUE"))
|
|
Case "TABLE"
|
|
LOGGER.Debug("Versuch Tabelle zu laden")
|
|
|
|
Dim columns As List(Of DD_DMSLiteDataSet.TBPM_CONTROL_TABLERow) = (From r As DD_DMSLiteDataSet.TBPM_CONTROL_TABLERow In DD_DMSLiteDataSet.TBPM_CONTROL_TABLE
|
|
Where r.CONTROL_ID = oControlRow.Item("GUID")
|
|
Select r).ToList()
|
|
|
|
oMyControl = ClassControlCreator.CreateExistingGridControl(oControlRow, columns, False)
|
|
Case "LINE"
|
|
LOGGER.Debug("Versuch Linie zu laden")
|
|
|
|
oMyControl = ClassControlCreator.CreateExistingLine(oControlRow, False)
|
|
End Select
|
|
|
|
If TypeOf oMyControl IsNot Label Then
|
|
If first_control Is Nothing Then
|
|
first_control = oMyControl
|
|
End If
|
|
last_control = oMyControl
|
|
|
|
oMyControl.TabIndex = oCount
|
|
End If
|
|
|
|
pnldesigner.Controls.Add(oMyControl)
|
|
|
|
oCount += 1
|
|
Next
|
|
LOGGER.Debug("Controls geladen")
|
|
LOGGER.Info("")
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
If LOG_ERRORS_ONLY = False Then MsgBox("Error Load_Controls: " & ex.Message, MsgBoxStyle.Critical, "Attention error:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error Load_Controls: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info("Unvorhergesehener Fehler bei Load_Controls:" & ex.Message)
|
|
LOGGER.Info("")
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Sub Clear_all_Input()
|
|
For Each inctrl As Control In Me.pnldesigner.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
|
|
box.BackColor = Color.Lime
|
|
box.SelectAll()
|
|
End Sub
|
|
Public Sub OnTextBoxLostFocus(sender As System.Object, e As System.EventArgs)
|
|
Dim box As TextBox = sender
|
|
box.BackColor = Color.White
|
|
End Sub
|
|
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
|
|
If ControlHandleStarted = True Then
|
|
ControlHandleStarted = False
|
|
Exit Sub
|
|
End If
|
|
Dim box As TextBox = sender
|
|
If box.Text <> String.Empty And me_closing = False And _Indexe_Loaded = True Then
|
|
|
|
If (e.KeyCode = Keys.Return) Or (e.KeyCode = Keys.Tab) Or (e.KeyCode = Keys.Enter) Then
|
|
Try
|
|
Dim CONTROL_ID = VWPM_CONTROL_INDEXTableAdapter.cmdGetControlID(CURRENT_ProfilGUID, box.Name)
|
|
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, box.Name)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
|
|
For Each ROW As DataRow In DT.Rows
|
|
Try
|
|
Dim displayboxname = ROW.Item(0).ToString
|
|
If Not IsDBNull(ROW.Item(1)) And Not IsDBNull(ROW.Item(2)) Then
|
|
Dim sql_Statement = ROW.Item(2)
|
|
|
|
|
|
sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
LOGGER.Debug(">>> sql after ReplaceAllValues: " & sql)
|
|
'' Regulären Ausdruck zum Auslesen der Indexe definieren
|
|
'Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
|
'' einen Regulären Ausdruck laden
|
|
'Dim regulärerAusdruck As Regex = New Regex(preg)
|
|
'' die Vorkommen im SQL-String auslesen
|
|
'Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement)
|
|
''####
|
|
'' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
'For Each element As Text.RegularExpressions.Match In elemente
|
|
' Try
|
|
' If LogErrorsOnly = False Then LOGGER.Info(" >> element in RegeX: " & element.Value)
|
|
' Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3)
|
|
' Dim input_value
|
|
|
|
' If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then
|
|
' Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox)
|
|
' input_value = txt.Text
|
|
' ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then
|
|
' Dim cmb As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox)
|
|
' input_value = cmb.Text
|
|
' End If
|
|
' sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value)
|
|
' Catch ex As Exception
|
|
' LOGGER.Info("Unexpected Error in Checking control values for Variable SQL Result - ERROR: " & ex.Message)
|
|
' End Try
|
|
|
|
'Next
|
|
_dependingControl_in_action = True
|
|
Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
|
|
_dependingControl_in_action = False
|
|
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
|
|
If box.Name = last_control.Name Then
|
|
' Abschluss()
|
|
Else
|
|
SendKeys.Send("{TAB}")
|
|
ControlHandleStarted = True
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
Public Sub onDGVRowValidating(ByVal sender As Object, ByVal e As DataGridViewCellCancelEventArgs)
|
|
Dim dgv As DataGridView = sender
|
|
Try
|
|
Dim CONTROL_ID = VWPM_CONTROL_INDEXTableAdapter.cmdGetControlID(CURRENT_ProfilGUID, dgv.Name)
|
|
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
|
|
For Each ROW As DataRow In DT.Rows
|
|
Try
|
|
Dim displayboxname = ROW.Item(0).ToString
|
|
If Not IsDBNull(ROW.Item(1)) And Not IsDBNull(ROW.Item(2)) Then
|
|
Dim sql_Statement = ROW.Item(2)
|
|
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_CS(sql_Statement, ROW.Item(1))
|
|
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
|
|
pnldesigner.Controls(displayboxname).Text = result.ToString
|
|
|
|
Exit For
|
|
Else
|
|
pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING"
|
|
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
pnldesigner.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 onLookUp0(sender As Object, e As System.EventArgs)
|
|
Dim oLookup As LookupControl2 = sender
|
|
Try
|
|
If Not IsNothing(oLookup.SelectedValues) Then
|
|
For Each ocont In oLookup.SelectedValues
|
|
Dim o = ocont
|
|
Next
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
Public Sub onLookUp1(sender As Object, SelectedValues As List(Of String))
|
|
LOGGER.Debug("onLookup1")
|
|
If FormLoaded = False Then
|
|
Exit Sub
|
|
End If
|
|
Dim oLookup As LookupControl2 = sender
|
|
Try
|
|
If Not IsNothing(SelectedValues) Then
|
|
If SelectedValues.Count = 1 Then
|
|
Dim oLOOKUPValue = SelectedValues.Item(0)
|
|
Dim oLOOKUPName = oLookup.Name
|
|
|
|
Dim oControlID = DirectCast(oLookup.Tag, ClassControlCreator.ControlMetadata).Guid
|
|
Dim filteredData As DataTable = DTCONTROLS.Clone()
|
|
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oLOOKUPName}%'"
|
|
DTCONTROLS.Select(oExpression).CopyToDataTable(filteredData, LoadOption.PreserveChanges)
|
|
If filteredData.Rows.Count = 1 Then
|
|
Dim oDEPENDING_GUID = filteredData.Rows(0).Item("GUID")
|
|
Dim oDEPENDING_CtrlName = filteredData.Rows(0).Item("NAME")
|
|
If _dependingControl_in_action = True Then
|
|
Exit Sub
|
|
End If
|
|
If Not IsDBNull(filteredData.Rows(0).Item("CONNECTION_ID")) And Not IsDBNull(filteredData.Rows(0).Item("SQL_UEBERPRUEFUNG")) Then
|
|
Dim oSqlCommand = IIf(IsDBNull(filteredData.Rows(0).Item("SQL_UEBERPRUEFUNG")), "", filteredData.Rows(0).Item("SQL_UEBERPRUEFUNG"))
|
|
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
LOGGER.Debug(">>> sql after ReplaceAllValues: " & oSqlCommand)
|
|
_dependingControl_in_action = True
|
|
Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable(oSqlCommand)
|
|
Try
|
|
'Dim oDependingLookup As LookupControl2 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault()
|
|
For Each oControl As Control In pnldesigner.Controls
|
|
|
|
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
|
|
If oControl.GetType.ToString = "System.Windows.Forms.TextBox" Then
|
|
oControl.Text = oDTDEPENDING_RESULT.Rows(0).Item(0)
|
|
Else
|
|
Dim oDependingLookup As LookupControl2 = oControl
|
|
oDependingLookup.DataSource = oDTDEPENDING_RESULT
|
|
End If
|
|
_dependingControl_in_action = False
|
|
Exit For
|
|
End If
|
|
|
|
Next
|
|
|
|
|
|
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
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
End Try
|
|
End Sub
|
|
Public Sub OnCmbselectedIndex(sender As System.Object, e As System.EventArgs)
|
|
Dim cmb As ComboBox = sender
|
|
If cmb.SelectedIndex <> -1 And _Indexe_Loaded = True Then
|
|
If cmb.Name = last_control.Name Then
|
|
'Abschluss()
|
|
Else
|
|
Try
|
|
Dim CONTROL_ID = VWPM_CONTROL_INDEXTableAdapter.cmdGetControlID(CURRENT_ProfilGUID, cmb.Name)
|
|
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, cmb.Name)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
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, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
_Step = 3
|
|
LOGGER.Debug(">>> sql after ReplaceAllValues: " & sql)
|
|
'' Regulären Ausdruck zum Auslesen der Indexe definieren
|
|
'Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
|
'' einen Regulären Ausdruck laden
|
|
'Dim regulärerAusdruck As Text.RegularExpressions.Regex = New Text.RegularExpressions.Regex(preg)
|
|
'' die Vorkommen im SQL-String auslesen
|
|
'Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement)
|
|
''####
|
|
'' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
'For Each element As Text.RegularExpressions.Match In elemente
|
|
' Try
|
|
' If LogErrorsOnly = False Then LOGGER.Info(" >> element in RegeX: " & element.Value)
|
|
' Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3)
|
|
' Dim input_value
|
|
|
|
' If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then
|
|
' Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox)
|
|
' input_value = txt.Text
|
|
' ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then
|
|
' Dim cmb1 As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox)
|
|
' input_value = cmb1.Text
|
|
' End If
|
|
' sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value)
|
|
|
|
' Catch ex As Exception
|
|
' LOGGER.Info("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message)
|
|
' End Try
|
|
|
|
'Next
|
|
'If LogErrorsOnly = False Then LOGGER.Info(">>> sql_Statement after replacement: " & sql_Statement)
|
|
|
|
_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
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Unexpected Error in Eventhandler Variable SQL Result ComboBox - ERROR: " & ex.Message)
|
|
End Try
|
|
|
|
SendKeys.Send("{TAB}")
|
|
ControlHandleStarted = True
|
|
|
|
End If
|
|
End If
|
|
End Sub
|
|
Private Sub Depending_Control_Set_Result(displayboxname As String, sqlCommand As String, sqlConnection As String)
|
|
Try
|
|
Dim resultDT As DataTable = ClassDatabase.Return_Datatable_CS(sqlCommand, sqlConnection)
|
|
If Not IsNothing(resultDT) Then
|
|
'Ist das Control ein Control was mehrfachwerte enthalten kann
|
|
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_DATAGRIDVIEW) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then
|
|
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then
|
|
Dim cmbpanel As ComboBox = pnldesigner.Controls(displayboxname)
|
|
cmbpanel.DataSource = Nothing
|
|
cmbpanel.DataSource = resultDT
|
|
cmbpanel.DisplayMember = resultDT.Columns(0).ColumnName
|
|
cmbpanel.ValueMember = resultDT.Columns(0).ColumnName
|
|
|
|
Dim maxWith As Integer = cmbpanel.Width
|
|
Using g As Graphics = Me.CreateGraphics
|
|
For Each oItem As Object In cmbpanel.Items 'Für alle Einträge...
|
|
Dim g1 As Graphics = cmbpanel.CreateGraphics
|
|
If g1.MeasureString(Text, cmbpanel.Font).Width + 30 > maxWith Then
|
|
maxWith = g1.MeasureString(Text, cmbpanel.Font).Width + 30
|
|
End If
|
|
g1.Dispose()
|
|
Next oItem
|
|
End Using
|
|
cmbpanel.DropDownWidth = maxWith
|
|
|
|
ElseIf displayboxname.StartsWith(ClassControlCreator.PREFIX_DATAGRIDVIEW) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then
|
|
'not implemented
|
|
End If
|
|
Else
|
|
If resultDT.Rows.Count = 1 Then
|
|
pnldesigner.Controls(displayboxname).Text = resultDT.Rows(0).Item(0).ToString
|
|
Else
|
|
pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING or MORE THAN 1 ROW"
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Unexpected Error in Depending_Control_Set_Result - ERROR: " & ex.Message)
|
|
MsgBox("Unexpected error: " & 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
|
|
Dim dt As DataTable = DD_DMSLiteDataSet.VWPM_CONTROL_INDEX
|
|
For Each dr As DataRow In dt.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 = 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 = "Der eingegebene Wert '" & control.Text & "' existiert nicht in der Datenbank!"
|
|
My.Settings.Save()
|
|
Return False
|
|
End If
|
|
Else
|
|
Return True
|
|
End If
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Unvorhergesehener Fehler bei CheckValueExists:" & ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Sub ShowFile_UniversalViewer(AktuelleIndexfile As String)
|
|
Try
|
|
KillU_Viewer()
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(VIEWER_UNIVERSAL, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Fehler in ShowFile_UniversalViewer:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
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
|
|
Sub Open_PDFXCHANGE(AktuelleIndexfile As String)
|
|
Try
|
|
Dim Proc As New Process
|
|
Dim psi As New ProcessStartInfo(VIEWER_XCHANGE, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
psi.UseShellExecute = False
|
|
Proc.StartInfo = psi
|
|
|
|
Proc.Start()
|
|
Do While process_User_exists(VIEWER_XCHANGE, "START") = False
|
|
'Warten bis PDF geladen ist
|
|
Thread.Sleep(500)
|
|
Loop
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler in Open_PDFXCHANGE:")
|
|
LOGGER.Info("Fehler in Open_PDFXCHANGE")
|
|
LOGGER.Info(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Sub Open_Sumatra(AktuelleIndexfile As String)
|
|
Try
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(VIEWER_SUMATRA, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
psi.UseShellExecute = False
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler in Open_Sumatra:")
|
|
LOGGER.Info("Fehler in Open_Sumatra")
|
|
LOGGER.Info(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Sub Open_PDF_withStandard()
|
|
If WMDocPathWindows.ToLower.EndsWith(".pdf") = True Then
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(WMDocPathWindows)
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
viewerID = Proc.Id
|
|
End If
|
|
End Sub
|
|
|
|
Function ReplaceWindreamDriveLetter(Filepath As String) As String
|
|
Return Filepath.
|
|
Replace("W:", "\\windream\objects").
|
|
Replace("K:", "\\windream\objects")
|
|
End Function
|
|
|
|
'Function Next_GUID() As Integer
|
|
' 'Dim id = CURRENT_DOC_GUID
|
|
' 'Dim oFilePath = ReplaceWindreamDriveLetter(Filepath).ToUpper()
|
|
' Dim oSQL = $"SELECT [dbo].[FNPM_GET_NEXT_DOC_GUID] ({CURRENT_ProfilGUID},{PROFIL_sortbynewest},{CURRENT_DOC_GUID},'{USER_USERNAME}')"
|
|
|
|
' 'SELECT GUID FROM TBPM_PROFILE_FILES WHERE
|
|
' ' PROFIL_ID = {CURRENT_ProfilGUID} AND EDIT = 0 AND IN_WORK = 0 AND
|
|
' ' UPPER(REPLACE(FILE_PATH, 'W:','\\windream\objects')) <> '{oFilePath}' AND
|
|
' ' UPPER(REPLACE(FILE_PATH, 'W:','\\windream\objects')) NOT IN (
|
|
' ' SELECT UPPER(FILE_PATH)
|
|
' ' FROM TBPM_FILES_USER_NOT_INDEXED
|
|
' ' WHERE (PROFIL_ID = {ProfilId}) AND (UPPER(USR_NAME) = UPPER('{Environment.UserName}'))
|
|
' ' )
|
|
' ' {IIf(OrderByNewest, " ORDER BY DMS_ERSTELLT_DATE DESC", "")}
|
|
' ' "
|
|
|
|
' Return ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, True)
|
|
'End Function
|
|
|
|
Function Get_Next_GUID() As Integer
|
|
Try
|
|
LOGGER.Debug("Get_Next_GUID...")
|
|
Dim newGUID As Integer
|
|
|
|
'If PROFIL_sortbynewest = True Then
|
|
' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdgetNextFile_GUID_Newest(CURRENT_ProfilGUID, OLD_Document_Path, Environment.UserName)
|
|
'Else
|
|
' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdGetNextFile_GUID(CURRENT_ProfilGUID, OLD_Document_Path, Environment.UserName)
|
|
'End If
|
|
LOGGER.Debug("Old Document_Path: " & OLD_Document_Path)
|
|
Dim oBIT As Integer = 0
|
|
If PROFIL_sortbynewest = True Then
|
|
oBIT = 1
|
|
End If
|
|
Dim oSQL = $"SELECT [dbo].[FNPM_GET_NEXT_DOC_GUID] ({CURRENT_ProfilGUID},{oBIT},{CURRENT_DOC_GUID},'{USER_USERNAME}')"
|
|
|
|
newGUID = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, True)
|
|
|
|
WMDocPathWindows = ""
|
|
CURRENT_DOC_PATH = ""
|
|
CURRENT_WMFILE = Nothing
|
|
If newGUID > 0 Then
|
|
LOGGER.Debug("newGUID: " & newGUID.ToString)
|
|
|
|
ElseIf newGUID <> 0 Then
|
|
LOGGER.Info(" >> ACHTUNG: Ausnahme in GetNextGUID - Es konnte keine GUID abgerufen werden!")
|
|
newGUID = 0
|
|
End If
|
|
|
|
Return newGUID
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
oErrorMessage = "Unvorhergesehener Fehler in Get_Next_GUID: " & ex.Message
|
|
LOGGER.Info(">> Unvorhergesehener Fehler in Get_Next_GUID:: " & ex.Message, True)
|
|
Return 0
|
|
End Try
|
|
|
|
End Function
|
|
|
|
'lädt die windream-Files für das Profil
|
|
Sub Refresh_FileList()
|
|
'windream-Suche für Profil starten
|
|
'_windreamPM = New ClassPMWindream()
|
|
If PROFIL_sortbynewest = True Then
|
|
TBPM_PROFILE_FILESTableAdapter.FillBy_Newest(DD_DMSLiteDataSet.TBPM_PROFILE_FILES, CURRENT_ProfilGUID)
|
|
Else
|
|
TBPM_PROFILE_FILESTableAdapter.Fill(DD_DMSLiteDataSet.TBPM_PROFILE_FILES, CURRENT_ProfilGUID)
|
|
End If
|
|
If CURRENT_DOC_GUID = 0 Then
|
|
Dim DT As DataTable = DD_DMSLiteDataSet.TBPM_PROFILE_FILES
|
|
CURRENT_DOC_GUID = 0 'DT.Rows(0).Item("GUID")
|
|
AnzDoks = DT.Rows.Count
|
|
Else
|
|
AnzDoks = 1
|
|
WMDocPathWindows = CURRENT_DOC_PATH
|
|
End If
|
|
|
|
tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID
|
|
|
|
|
|
|
|
End Sub
|
|
Sub Close_document_viewer()
|
|
'Vorherige Datei Schliessen
|
|
If CURRENT_HTML_DOC <> "" Then
|
|
If File.Exists(CURRENT_HTML_DOC) Then
|
|
File.Delete(CURRENT_HTML_DOC)
|
|
End If
|
|
End If
|
|
If pdfxchange = True Or sumatra = True Or VIEWER_PDF = "system" Then
|
|
Close_PDF_Viewer(WMDocPathWindows)
|
|
End If
|
|
If CURRENT_WMFILE Is Nothing = False Then
|
|
If CURRENT_WMFILE.aLocked Then
|
|
CURRENT_WMFILE.Save()
|
|
' unlock the windream object
|
|
CURRENT_WMFILE.unlock()
|
|
End If
|
|
End If
|
|
End Sub
|
|
Sub PdfControls_visible(visible As Boolean)
|
|
If visible = False Then
|
|
pnlpdf.Dock = DockStyle.None
|
|
Else
|
|
pnlpdf.Dock = DockStyle.Fill
|
|
End If
|
|
|
|
pnlpdf.Visible = visible
|
|
|
|
End Sub
|
|
Private Function CreateWMObject() As String
|
|
LOGGER.Debug($"in GetWMDocFileString...'")
|
|
Dim oWMRELPATH As String = CURRENT_DT_CONFIG.Rows.Item(0).Item("WM_REL_PATH")
|
|
If oWMRELPATH.EndsWith("\") = False Then
|
|
oWMRELPATH = oWMRELPATH & "\"
|
|
End If
|
|
Dim oWMOwnPath = WMDocPathWindows.Replace(oWMRELPATH, "")
|
|
LOGGER.Debug($"oWMOwnPath: {oWMOwnPath}")
|
|
Try
|
|
Dim oNormalizedPath = WINDREAM.NormalizePath(oWMOwnPath)
|
|
CURRENT_WMFILE = WINDREAM.oSession.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(CURRENT_ProfilGUID, "error in creating WMObject - DocGUID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
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 GetWMDocPathWindows(_CheckStandard As Integer)
|
|
Try
|
|
Dim oResult As String
|
|
Dim oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},{_CheckStandard})"
|
|
oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING)
|
|
LOGGER.Debug($"Checking file [{oResult}] exists?...")
|
|
If File.Exists(oResult) = False Then
|
|
LOGGER.Debug($"GetWMDocPathWindows returned false - trying with standard again...")
|
|
oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},1)"
|
|
oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING)
|
|
LOGGER.Debug($"Checking file [{oResult}] exists?...")
|
|
If File.Exists(oResult) = False Then
|
|
Return False
|
|
End If
|
|
End If
|
|
WMDocPathWindows = oResult
|
|
OLD_Document_Path = WMDocPathWindows
|
|
CURRENT_DOC_PATH = WMDocPathWindows
|
|
LOGGER.Debug($"CURRENT_DOC_PATH: {CURRENT_DOC_PATH}")
|
|
Return True
|
|
Catch ex As Exception
|
|
WMDocPathWindows = ""
|
|
OLD_Document_Path = ""
|
|
CURRENT_DOC_PATH = ""
|
|
errormessage = $"Unexpected error in GetWMDocPathWindows: [{ex.Message}]!"
|
|
frmError.ShowDialog()
|
|
Return False
|
|
End Try
|
|
|
|
|
|
End Function
|
|
Sub Load_Next_Document(first As Boolean)
|
|
|
|
CURRENT_WMFILE = Nothing
|
|
LOGGER.Debug("CURRENT_WMFILE nothing gesetzt")
|
|
activate_controls(False)
|
|
oErrorMessage = ""
|
|
WMDocPathWindows = ""
|
|
WMDocFileString = ""
|
|
|
|
CURRENT_HTML_DOC = ""
|
|
|
|
'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()
|
|
ElseIf first = False Then
|
|
CURRENT_DOC_GUID = 0
|
|
End If
|
|
LOGGER.Debug("Dokument-GUID: '" & CURRENT_DOC_GUID.ToString & "'")
|
|
If CURRENT_DOC_GUID > 0 Then
|
|
If GetWMDocPathWindows(0) = False Then
|
|
Exit Sub
|
|
End If
|
|
If CreateWMObject() = False Then
|
|
Exit Sub
|
|
End If
|
|
'Beschriftung des Navigators
|
|
'lblNavigator_anzDok.Text = position & " of " & Anzahl_ValDoks & " files"
|
|
If WMDocPathWindows <> String.Empty Then
|
|
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(True, Environment.UserName, CURRENT_DOC_GUID)
|
|
' ############ Infos eintragen #################
|
|
tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID & " - DocGUID: " & CURRENT_DOC_GUID
|
|
' txtDateipfad.Text = Document_Path
|
|
tstrlbl_Info.Text = "Datei " & docCounter.ToString & " von " & Anzahl_ValDoks.ToString
|
|
LOGGER.Info(">> Validierung für Dokument '" & WMDocPathWindows & "' gestartet")
|
|
|
|
Dim oSQL = $"SELECT DOC_ID FROM TBPM_PROFILE_FILES WHERE GUID = {CURRENT_DOC_GUID}"
|
|
CURRENT_DOC_ID = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING)
|
|
tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID
|
|
|
|
LOGGER.Debug("WMDoc created...")
|
|
oErrorMessage = Windream_get_Doc_info()
|
|
|
|
LOGGER.Debug("Windream-Dok Info geholt")
|
|
If oErrorMessage = "" Then
|
|
Me.grpbxMailBody.Visible = False
|
|
Me.grpBetreff.Visible = False
|
|
|
|
load_viewer()
|
|
|
|
If WMDocPathWindows.ToLower.EndsWith(".pdf") Then
|
|
ToolStripButtonAnnotation.Visible = True
|
|
Else
|
|
ToolStripButtonAnnotation.Visible = False
|
|
End If
|
|
|
|
LOGGER.Debug("Viewer geladen")
|
|
|
|
|
|
|
|
FillIndexValues(first)
|
|
|
|
For Each oControl As Control In pnldesigner.Controls
|
|
LoadSQLData(oControl, DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid)
|
|
Next
|
|
|
|
LOGGER.Debug("Indexmaske geladen")
|
|
LOGGER.Debug("")
|
|
|
|
'Nun im Vektoprindex loggen das das Profil geladen wurde
|
|
'If PROFIL_VEKTORINDEX <> "" Then
|
|
' Dim Profilstring = "DD-PM" & Delimiter & "Profil: '" & PROFIL_NAME & "'" & Delimiter & Environment.UserName & Delimiter & Now.ToString
|
|
' If Indexiere_VektorfeldPM(Profilstring, PROFIL_VEKTORINDEX) = False Then
|
|
' If LogErrorsOnly = False Then LOGGER.Info(" >> Profilname erfolgreich in Vektorfeld PM geschrieben")
|
|
' 'Else
|
|
' ' errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
' ' My.Settings.Save()
|
|
' ' frmError.ShowDialog()
|
|
' ' _error = True
|
|
' End If
|
|
'End If
|
|
'Nun loggen das das Profil geladen wurde
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
Dim Profilstring = "DD-PMlog" & Delimiter & "In Profil: '" & CURRENT_ProfilName & "' geladen" & Delimiter & Environment.UserName & Delimiter & Now.ToString
|
|
If Indexiere_VektorfeldPM(Profilstring, PROFIL_LOGINDEX) = False Then
|
|
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)
|
|
Me.BringToFront()
|
|
Else
|
|
errormessage = oErrorMessage
|
|
frmError.ShowDialog()
|
|
End If
|
|
Else
|
|
errormessage = oErrorMessage
|
|
frmError.ShowDialog()
|
|
End If
|
|
Else
|
|
If oErrorMessage <> "" Then
|
|
errormessage = oErrorMessage
|
|
frmError.ShowDialog()
|
|
Else
|
|
LOGGER.Info(" >> Ende des Profils - Kein weiteres Dokument!")
|
|
LOGGER.Info("")
|
|
MsgBox("Kein weiteres Dokument gefunden - Ende des Profils!" & vbNewLine & "Das Formular wird nun geschlossen.", MsgBoxStyle.Information, "Hinweis:")
|
|
activate_controls(True)
|
|
Me.Close()
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Unvorhergesehener Fehler bei Load_Next_Document - DocGUID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
errormessage = "Unvorhergesehener Fehler bei Load_Next_Document:" & ex.Message
|
|
My.Settings.Save()
|
|
LOGGER.Info("Unvorhergesehener Fehler in Load_Next_Document: " & ex.Message)
|
|
frmError.ShowDialog()
|
|
End Try
|
|
End Sub
|
|
Sub load_viewer()
|
|
If VIEWER_ALL = "uviewer" Then
|
|
pdfxchange = False
|
|
sumatra = False
|
|
If WMDocPathWindows.ToLower.EndsWith(".msg") Then
|
|
Show_Email()
|
|
Else
|
|
ShowFile_UniversalViewer(WMDocPathWindows)
|
|
End If
|
|
ElseIf VIEWER_ALL = "docview" Then
|
|
PdfControls_visible(False)
|
|
If WMDocPathWindows.ToLower.EndsWith(".pdf") And VIEWER_PDF <> "none" Then
|
|
Select Case VIEWER_PDF
|
|
Case "internal"
|
|
SplitContainer1.Panel2Collapsed = False
|
|
PdfViewer1.LoadDocument(WMDocPathWindows)
|
|
LOGGER.Debug("Internal Viewer Path: " & WMDocPathWindows)
|
|
PdfControls_visible(True)
|
|
Me.Size = My.Settings.frmValidation_Size_PDFViewer
|
|
'PdfViewer1.ZoomFactor = PDFViewer_ZoomMode
|
|
PdfViewer1.ZoomMode = DevExpress.XtraPdfViewer.PdfZoomMode.FitToWidth
|
|
pdfxchange = False
|
|
sumatra = False
|
|
Case "pdfxchange"
|
|
SplitContainer1.Panel2Collapsed = True
|
|
Open_PDFXCHANGE(WMDocPathWindows)
|
|
pdfxchange = True
|
|
sumatra = False
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
Case "sumatra"
|
|
SplitContainer1.Panel2Collapsed = True
|
|
Open_Sumatra(WMDocPathWindows)
|
|
sumatra = True
|
|
pdfxchange = False
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
Case "system"
|
|
SplitContainer1.Panel2Collapsed = True
|
|
sumatra = False
|
|
pdfxchange = False
|
|
Open_PDF_withStandard()
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
End Select
|
|
ElseIf WMDocPathWindows.ToLower.EndsWith(".msg") Then
|
|
Show_Email()
|
|
Else
|
|
SplitContainer1.Panel2Collapsed = True
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
pdfxchange = False
|
|
sumatra = False
|
|
DocView = Nothing
|
|
DocView = CreateObject("WMPViewXNG.Viewer")
|
|
' open the viewer
|
|
viewer_string = CURRENT_WMFILE.aPath.ToString
|
|
DocView.ViewFile(viewer_string)
|
|
End If
|
|
Else
|
|
SplitContainer1.Panel2Collapsed = True
|
|
PdfControls_visible(False)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
pdfxchange = False
|
|
sumatra = False
|
|
DocView = Nothing
|
|
DocView = CreateObject("WMPViewXNG.Viewer")
|
|
' open the viewer
|
|
viewer_string = CURRENT_WMFILE.aPath.ToString
|
|
DocView.ViewFile(viewer_string)
|
|
End If
|
|
End Sub
|
|
Sub Show_Email()
|
|
|
|
Me.grpBetreff.Dock = DockStyle.Top
|
|
Me.grpbxMailBody.Dock = DockStyle.Fill
|
|
Dim msg_email As New Msg.Message(WMDocPathWindows)
|
|
'Eine tempfile generieren
|
|
Dim tempFilename = My.Computer.FileSystem.GetTempFileName()
|
|
Dim name = Path.GetFileNameWithoutExtension(tempFilename)
|
|
tempFilename = Path.Combine(Path.GetDirectoryName(tempFilename), name & ".html")
|
|
'tempfile löschen
|
|
If My.Computer.FileSystem.FileExists(tempFilename) Then
|
|
My.Computer.FileSystem.DeleteFile(tempFilename)
|
|
End If
|
|
|
|
Me.txtBetreff.Text = msg_email.Subject
|
|
Try
|
|
Dim wFile As System.IO.FileStream
|
|
Dim byteData() As Byte
|
|
byteData = msg_email.BodyHtml
|
|
|
|
' MsgBox(msg_email.InternetCodePage)
|
|
' wFile = New FileStream(tempFilename, FileMode.Append)
|
|
' wFile.Write(byteData, 0, byteData.Length)
|
|
' wFile.Close()
|
|
'Catch ex As IOException
|
|
' MsgBox(ex.ToString)
|
|
'End Try
|
|
|
|
Dim vIn() As Byte = msg_email.BodyHtml
|
|
Dim vOut As String = System.Text.Encoding.UTF8.GetString(vIn)
|
|
File.WriteAllText(tempFilename, vOut, System.Text.Encoding.UTF8)
|
|
|
|
CURRENT_HTML_DOC = tempFilename
|
|
Me.tslblWebbrowser.Text = CURRENT_HTML_DOC
|
|
WebBrowser.Navigate("file:///" & CURRENT_HTML_DOC)
|
|
SplitContainer1.Panel2Collapsed = False
|
|
Me.Size = My.Settings.frmValidation_Size_Email
|
|
Me.grpbxMailBody.Visible = True
|
|
Me.grpBetreff.Visible = True
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
errormessage = "Unvorhergesehener Fehler bei Show_Email:" & ex.Message
|
|
LOGGER.Info("Unvorhergesehener Fehler in Show_Email: " & ex.Message)
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
End Try
|
|
End Sub
|
|
Sub activate_controls(status As Boolean)
|
|
Me.pnldesigner.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("Fehler in Windream_get_Doc_info 1: " & ex.Message)
|
|
Return "Fehler 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("Fehler in Windream_get_Doc_info 3: " & ex.Message)
|
|
Return "Fehler 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("Fehler in Windream_get_Doc_info (GENERELL): " & ex.Message)
|
|
Return "Fehler 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, Delimiter)
|
|
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("Fehler in ReturnVektor_IndexValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
LOGGER.Info("Fehler in ReturnVektor_IndexValue: " & ex.Message)
|
|
Return ""
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End Function
|
|
Sub FillIndexValues(first As Boolean)
|
|
Dim oControlType As String
|
|
Dim oIndexName As String
|
|
Try
|
|
If DD_DMSLiteDataSet.VWPM_CONTROL_INDEX.Rows.Count > 0 Then
|
|
Dim oCount As Integer = 0
|
|
For Each oControl As Control In Me.pnldesigner.Controls
|
|
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
|
Dim oControlRow = (From form In DD_DMSLiteDataSet.VWPM_CONTROL_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 oWMIndexName 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 = oWMIndexName
|
|
|
|
Dim oLoadIndex As Boolean = oControlRow.Item("LOAD_IDX_VALUE")
|
|
LOGGER.Debug("INDEX: " & oWMIndexName & " - CONTROLNAME: " & oControl.Name & " - LOAD IDXVALUES: " & oLoadIndex.ToString)
|
|
|
|
_CURRENT_INDEX_ARRAY(oCount, 0) = oWMIndexName
|
|
Select Case oType
|
|
Case "System.Windows.Forms.TextBox"
|
|
Try
|
|
oControlType = "Textbox"
|
|
If oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
If oLoadIndex = False Or oWMIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
|
' Wenn kein Index exisitiert, defaultValue laden
|
|
oControl.Text = oDefaultValue
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oDefaultValue
|
|
LOGGER.Debug("Indexwert soll nicht geladen werden.")
|
|
Exit Select
|
|
End If
|
|
Dim wertWD
|
|
|
|
If oWMIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(oWMIndexName)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
If wertWD Is Nothing Then
|
|
wertWD = ""
|
|
Else
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
LOGGER.Debug("TextBox with VektorField: " & oWMIndexName)
|
|
Try
|
|
LOGGER.Debug($"Length of Vektorarray: {wertWD.length}")
|
|
Catch ex As Exception
|
|
LOGGER.Info($"Error in gettin the lenth of vektorfield {oWMIndexName} - {ex.Message}")
|
|
End Try
|
|
If wertWD.length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oWMIndexName & "' contains more then one value - First value will be used")
|
|
wertWD = wertWD(0)
|
|
End If
|
|
LOGGER.Debug($"wertWD has been saved...")
|
|
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
Try
|
|
oControl.Text = NotNull(wertWD, oDefaultValue)
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = NotNull(wertWD, oDefaultValue)
|
|
Catch ex As Exception
|
|
LOGGER.Info("ERROR while converting defaultValue [" & oDefaultValue & "]: " & ex.Message)
|
|
oControl.Text = ""
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = ""
|
|
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(">> Unvorhergesehener Fehler bei 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 oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
If oLoadIndex = False Or oWMIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
|
If oDefaultValue = String.Empty Then
|
|
oMyCombobox.SelectedIndex = -1
|
|
Else
|
|
oMyCombobox.Text = oDefaultValue
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oDefaultValue
|
|
End If
|
|
LOGGER.Debug($" oMyComboBox {oMyCombobox.Name}: Indexwert soll nicht geladen werden.")
|
|
Exit Select
|
|
End If
|
|
Dim wertWD
|
|
If oWMIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(oWMIndexName)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
End If
|
|
|
|
If wertWD Is Nothing Then
|
|
|
|
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oWMIndexName}: 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
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oDefaultValue
|
|
'cmb.SelectedIndex = cmb.FindStringExact(defaultValue)
|
|
End If
|
|
Else
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
LOGGER.Debug($"oMyComboBox {oMyCombobox.Name} - Combobox with VektorField: " & oWMIndexName)
|
|
Try
|
|
LOGGER.Debug($"Length of Vektorarray: {wertWD.length}")
|
|
Catch ex As Exception
|
|
LOGGER.Info($"Error in gettin the length of vektorfield {oWMIndexName} - {ex.Message}")
|
|
End Try
|
|
If wertWD.length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oWMIndexName & "' contains more then one value - First value will be used")
|
|
wertWD = wertWD(0)
|
|
End If
|
|
LOGGER.Debug($"wertWD has been saved...")
|
|
Else
|
|
|
|
End If
|
|
LOGGER.Debug($"Indexwert from Index {oWMIndexName}: {wertWD}")
|
|
LOGGER.Debug($"Items in Combobox: {oMyCombobox.Items.Count}")
|
|
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = wertWD
|
|
LOGGER.Debug($"_CURRENT_INDEX_ARRAY set...")
|
|
If oMyCombobox.Items.Count = 0 Then
|
|
' If LogErrorsOnly = False Then LOGGER.Info($"Index Wert wurde gesetzt")
|
|
oMyCombobox.Text = wertWD
|
|
Else
|
|
' If LogErrorsOnly = False Then LOGGER.Info($"Index Wert wurde ausgewählt")
|
|
oMyCombobox.SelectedIndex = oMyCombobox.FindStringExact(wertWD)
|
|
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(">> Unvorhergesehener Fehler bei FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & ex.Message, True)
|
|
LOGGER.Info(">> Controltype: " & oControlType)
|
|
LOGGER.Info(">> Indexname windream: " & oIndexName)
|
|
errormessage = "Unvorhergesehener Fehler bei FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
|
|
End Try
|
|
|
|
Case "System.Windows.Forms.DataGridView"
|
|
oControlType = "DataGridView"
|
|
Dim dgv As DataGridView = oControl
|
|
If oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
If oLoadIndex = False Then
|
|
LOGGER.Debug("Indexwert soll nicht geladen werden.")
|
|
Exit Select
|
|
End If
|
|
LOGGER.Debug($"getting wmValue for Index {oWMIndexName}...")
|
|
Dim wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
|
|
If wertWD Is Nothing = False Then
|
|
'Es wird gegen ein Vektorfeld nachindexiert
|
|
If wertWD.GetType.ToString.Contains("System.Object") Then
|
|
Select Case oTyp
|
|
'Tabellendarstellung
|
|
Case "TABLE"
|
|
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPM_CONTROL_TABLE WHERE CONTROL_ID = " & oControlId)
|
|
Dim SpaltenWerte As String()
|
|
LOGGER.Debug($"{dt.Rows.Count} Columns configured for control {oControlId}.")
|
|
If dt.Rows.Count > 1 Then
|
|
For Each Zeile As Object In wertWD
|
|
LOGGER.Debug($"vektorrow Value {Zeile.ToString}...")
|
|
SpaltenWerte = Split(Zeile, Delimiter)
|
|
Select Case dt.Rows.Count
|
|
Case 1
|
|
dgv.Rows.Add(New String() {Zeile.ToString})
|
|
Case 2
|
|
If SpaltenWerte.Length = 2 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1)})
|
|
Else
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), ""})
|
|
End If
|
|
Case 3
|
|
If SpaltenWerte.Length = 3 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2)})
|
|
ElseIf SpaltenWerte.Length = 2 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), ""})
|
|
Else
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), "", ""})
|
|
End If
|
|
Case 4
|
|
If SpaltenWerte.Length = 4 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), SpaltenWerte(3)})
|
|
ElseIf SpaltenWerte.Length = 3 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), ""})
|
|
ElseIf SpaltenWerte.Length = 2 Then
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), "", ""})
|
|
Else
|
|
dgv.Rows.Add(New String() {SpaltenWerte(0), "", "", ""})
|
|
End If
|
|
|
|
End Select
|
|
Next
|
|
End If
|
|
|
|
Case Else
|
|
'es handelt sich um ein einfaches Vektorfeld mit einem Wert
|
|
For Each obj As Object In wertWD
|
|
If obj Is Nothing = False Then
|
|
dgv.Rows.Add(New String() {obj.ToString})
|
|
|
|
End If
|
|
|
|
Next
|
|
End Select
|
|
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
Case "DevExpress.XtraGrid.GridControl"
|
|
oControlType = "DataGridView"
|
|
Dim dgv As GridControl = oControl
|
|
If oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
If oLoadIndex = False Then
|
|
LOGGER.Debug("Indexwert soll nicht geladen werden.")
|
|
Exit Select
|
|
End If
|
|
LOGGER.Debug($"getting wmValue for Index {oWMIndexName}...")
|
|
Dim wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
|
|
If wertWD Is Nothing = False Then
|
|
'Es wird gegen ein Vektorfeld nachindexiert
|
|
If wertWD.GetType.ToString.Contains("System.Object") Then
|
|
Select Case oTyp
|
|
'Tabellendarstellung
|
|
Case "TABLE"
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPM_CONTROL_TABLE WHERE CONTROL_ID = " & oControlId)
|
|
|
|
Dim SpaltenWerte As String()
|
|
LOGGER.Debug($"{dt.Rows.Count} Columns configured for control {oControlId}.")
|
|
If dt.Rows.Count >= 1 Then
|
|
Dim oDataSource As DataTable = dgv.DataSource
|
|
oDataSource.Rows.Clear()
|
|
|
|
For Each Zeile As Object In wertWD
|
|
LOGGER.Debug($"vektorrow Value {Zeile.ToString}...")
|
|
SpaltenWerte = Split(Zeile, Delimiter)
|
|
|
|
|
|
|
|
Select Case dt.Rows.Count
|
|
Case 1
|
|
oDataSource.Rows.Add(New String() {Zeile.ToString})
|
|
'dgv.Rows.Add(New String() {Zeile.ToString})
|
|
Case 2
|
|
If SpaltenWerte.Length = 2 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1)})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1)})
|
|
Else
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), ""})
|
|
End If
|
|
Case 3
|
|
If SpaltenWerte.Length = 3 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2)})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2)})
|
|
ElseIf SpaltenWerte.Length = 2 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), ""})
|
|
Else
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), "", ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), "", ""})
|
|
End If
|
|
Case 4
|
|
If SpaltenWerte.Length = 4 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), SpaltenWerte(3)})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), SpaltenWerte(3)})
|
|
ElseIf SpaltenWerte.Length = 3 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), SpaltenWerte(2), ""})
|
|
ElseIf SpaltenWerte.Length = 2 Then
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), "", ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), SpaltenWerte(1), "", ""})
|
|
Else
|
|
oDataSource.Rows.Add(New String() {SpaltenWerte(0), "", "", ""})
|
|
'dgv.Rows.Add(New String() {SpaltenWerte(0), "", "", ""})
|
|
End If
|
|
|
|
End Select
|
|
Next
|
|
End If
|
|
|
|
Case Else
|
|
'es handelt sich um ein einfaches Vektorfeld mit einem Wert
|
|
Dim oDataSource As DataTable = dgv.DataSource
|
|
For Each obj As Object In wertWD
|
|
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
|
|
|
|
|
|
End If
|
|
|
|
Else
|
|
If first = False Then
|
|
Dim oDataSource As DataTable = dgv.DataSource
|
|
|
|
If oDataSource.Rows.Count > 0 Then
|
|
oDataSource.Rows.Clear()
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
Case "System.Windows.Forms.CheckBox"
|
|
LOGGER.Debug("Loading checkbox.")
|
|
oControlType = "CheckBox"
|
|
If oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
|
|
Dim chk As CheckBox = oControl
|
|
|
|
If oLoadIndex = False Or oWMIndexName = "DD PM-ONLY FOR DISPLAY" Then
|
|
LOGGER.Debug("Indexwert soll nicht geladen werden.")
|
|
Else
|
|
|
|
If oDefaultValue <> String.Empty Then
|
|
Dim result = False
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oDefaultValue
|
|
If Boolean.TryParse(oDefaultValue, result) Then
|
|
chk.Checked = result
|
|
Exit Select
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
LOGGER.Debug("Loading Bool-Value from Windream.")
|
|
Dim wertWD
|
|
If oWMIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(oWMIndexName)
|
|
Else
|
|
Try
|
|
LOGGER.Debug($"..Now GetVariableValue({oWMIndexName})...")
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
Catch ex As Exception
|
|
LOGGER.Warn($"Could not get the windreamValue for CheckboxIndex: {oWMIndexName} [{ex.Message}]")
|
|
End Try
|
|
|
|
End If
|
|
|
|
|
|
If wertWD Is Nothing Then
|
|
LOGGER.Info(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Check defaultvalue")
|
|
|
|
chk.Checked = False
|
|
Else
|
|
LOGGER.Debug("Index value loaded: " & wertWD.ToString)
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = wertWD.ToString
|
|
If wertWD.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")
|
|
chk.Checked = result
|
|
Else
|
|
chk.Checked = False
|
|
End If
|
|
Else
|
|
LOGGER.Info(">> defaultValue war leer")
|
|
chk.Checked = False
|
|
End If
|
|
Else
|
|
Dim _value
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
LOGGER.Debug("CheckBoxValue with VectorField: " & oWMIndexName)
|
|
If wertWD.length = 1 Then
|
|
_value = wertWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oWMIndexName & "' contains more then one value - First value will be used")
|
|
_value = wertWD(0)
|
|
End If
|
|
Else
|
|
LOGGER.Debug("Value is not nothing and also not System.Object[]...")
|
|
_value = wertWD
|
|
End If
|
|
Try
|
|
Select Case CBool(_value)
|
|
Case True
|
|
LOGGER.Info(">> CBool(_value) = True")
|
|
chk.Checked = True
|
|
Case Else
|
|
LOGGER.Info(">> CBool(_value) = False")
|
|
chk.Checked = False
|
|
End Select
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei CBool(wertWD) - CheckBox: " & ex.Message & vbNewLine & "Wert WD: " & wertWD.ToString, True)
|
|
chk.Checked = False
|
|
End Try
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
Case "DigitalData.Controls.LookupGrid.LookupControl2"
|
|
Try
|
|
Dim oLookup As LookupControl2 = oControl
|
|
Dim oWindreamValue = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
Try
|
|
oLookup.SelectedValues = Nothing
|
|
oLookup.SelectedValues = New List(Of String)
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
If Not IsNothing(oWindreamValue) Then
|
|
If oWindreamValue.GetType.ToString.Contains("System.Object") Then
|
|
Dim oArrlist As New List(Of String)
|
|
For Each oVectorRow As Object In oWindreamValue
|
|
Dim Ocontent = oVectorRow.ToString
|
|
oArrlist.Add(Ocontent)
|
|
Next
|
|
oLookup.SelectedValues = oArrlist
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oWindreamValue.ToString
|
|
Else
|
|
Dim oArrlist As New List(Of String)
|
|
oArrlist.Add(oWindreamValue.ToString)
|
|
oLookup.SelectedValues = oArrlist
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = oWindreamValue.ToString
|
|
End If
|
|
Else
|
|
If Not IsNothing(oLookup.SelectedValues) Then
|
|
If oLookup.SelectedValues.Count = 0 And oDefaultValue <> String.Empty Then
|
|
Dim oValues As List(Of String) = oDefaultValue.Split(",").ToList()
|
|
oLookup.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 LookupControl2:")
|
|
End Try
|
|
|
|
Case "System.Windows.Forms.DateTimePicker"
|
|
oControlType = "DateTimePicker"
|
|
Dim DTP As DateTimePicker = oControl
|
|
If oWMIndexName = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & oControl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If oWMIndexName Is Nothing = False Then
|
|
Dim wertWD
|
|
Try
|
|
If oWMIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
LOGGER.Debug("DATE über PM-Vektor holen")
|
|
wertWD = ReturnVektor_IndexValue(oWMIndexName)
|
|
LOGGER.Info(">> DTP is """)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oWMIndexName)
|
|
End If
|
|
|
|
If wertWD Is Nothing Then wertWD = ""
|
|
Dim tempdate As Date = CDate("01.01.0001 00:00:00")
|
|
If wertWD.ToString.Length > 0 Then
|
|
Try
|
|
tempdate = CDate(wertWD)
|
|
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
|
|
_CURRENT_INDEX_ARRAY(oCount, 1) = wertWD.ToString
|
|
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
errormessage = "Unvorhergesehener Fehler bei DTP: " & vbNewLine & ex.Message
|
|
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei FillIndex DTP: " & ex.Message & vbNewLine & "Wert WD: " & wertWD.ToString & vbNewLine & "Indexname: " & oWMIndexName, True)
|
|
frmError.ShowDialog()
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei FillIndex DTP: " & ex.Message, True)
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End If
|
|
'Case Else
|
|
' MsgBox(Type)
|
|
End Select
|
|
oCount += 1
|
|
Next
|
|
set_foreground()
|
|
If first_control Is Nothing = False Then first_control.Focus()
|
|
'Flag setzen das Indexe geladen sind
|
|
_Indexe_Loaded = True
|
|
Load_Additional_Searches()
|
|
Else
|
|
MsgBox("Für dieses Profil wurde noch keine Eingabemaske definiert!" & vbNewLine & "Informieren Sie Ihren PM-Administrator!" & vbNewLine & "Das Fenster wird geschlossen!", MsgBoxStyle.Exclamation, "Achtung:")
|
|
Me.Close()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
errormessage = "Unvorhergesehener Fehler bei FillIndexValues:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei FillIndexValues: " & ex.Message, True)
|
|
LOGGER.Info(">> Controltype: " & oControlType)
|
|
LOGGER.Info(">> Indexname windream: " & oIndexName)
|
|
LOGGER.Info(">> Stacktrace: " & ex.StackTrace)
|
|
|
|
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
Private Sub frmValidation_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
|
|
Refresh_FileList()
|
|
Load_Next_Document(True)
|
|
_dependingControl_in_action = False
|
|
FormLoaded = True
|
|
End Sub
|
|
Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
|
|
btnSave.Enabled = False
|
|
Abschluss()
|
|
btnSave.Enabled = True
|
|
End Sub
|
|
Sub CloseWDDocview()
|
|
Try
|
|
Dim oFileName = New FileInfo(CURRENT_WMFILE.aPath)
|
|
Dim oProcesses As Process() = Process.GetProcesses()
|
|
Dim oViewerNames As New List(Of String) From {
|
|
"WMPViewX",
|
|
"WMPViewXNG"
|
|
}
|
|
|
|
For Each p In oProcesses
|
|
If oViewerNames.Contains(p.ProcessName) Then
|
|
p.Kill()
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(" ### FEHLER in CloseDocView")
|
|
LOGGER.Info("### " & ex.Message & " ###")
|
|
End Try
|
|
|
|
'Try
|
|
' If VIEWER_ALL = "docview" Then
|
|
' DocView.CloseView(CURRENT_WMFILE.aPath, 0)
|
|
' End If
|
|
'Catch ex As Exception
|
|
' LOGGER.Error(ex)
|
|
' LOGGER.Info(" ### FEHLER in CloseDocView")
|
|
' LOGGER.Info("### " & ex.Message & " ###")
|
|
'End Try
|
|
End Sub
|
|
Sub Abschluss()
|
|
btnSave.Enabled = False
|
|
LOGGER.Debug("Abschluss für Dok: " & CURRENT_WMFILE.aName & " gestartet")
|
|
'Eingaben auf Form überprüfen
|
|
If Check_UpdateIndexe() = False Then
|
|
'lblerror.Visible = False
|
|
Try
|
|
Dim oErrorOcurred As Boolean = False
|
|
|
|
TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Fill(FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING, CURRENT_ProfilName)
|
|
Dim dtfinal As DataTable = FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING
|
|
If dtfinal.Rows.Count > 0 Then
|
|
'Jetzt finale Indexe setzen
|
|
LOGGER.Debug("Finale(r) Index(e) für Dok: " & CURRENT_WMFILE.aName & " soll gesetzt werden")
|
|
For Each dr As DataRow In dtfinal.Rows
|
|
Dim oValue As String = dr.Item("VALUE").ToString
|
|
Dim oIndexType = WINDREAM.GetTypeOfIndex(dr.Item("INDEXNAME"))
|
|
|
|
If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ###
|
|
LOGGER.Debug("Indexierung mit dynamischem SQL!")
|
|
Dim oSQLCommand = dr.Item("SQL_COMMAND")
|
|
|
|
LOGGER.Debug("SQL_COMMAND before ReplaceAllValues: " & oSQLCommand)
|
|
oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
If IsNothing(oSQLCommand) Then
|
|
errormessage = "Error while replacing Values in final indexing - Check the log"
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
oErrorOcurred = True
|
|
End If
|
|
If Not IsNothing(oSQLCommand) Then
|
|
LOGGER.Debug("SQL_COMMAND after ReplaceAllValues: " & oSQLCommand)
|
|
Dim dynamic_value = ClassDatabase.Execute_Scalar(oSQLCommand, CONNECTION_STRING, True)
|
|
|
|
If Not IsNothing(dynamic_value) Then
|
|
LOGGER.Debug("DYNAMIC VALUE IS: " & dynamic_value.ToString)
|
|
oValue = dynamic_value
|
|
Else
|
|
LOGGER.Info("ATTENTION: DYNAMIC VALUE IS NOTHING!")
|
|
End If
|
|
End If
|
|
|
|
Else
|
|
If oValue.StartsWith("v") Then
|
|
Select Case dr.Item("VALUE").ToString
|
|
Case "vDate"
|
|
oValue = Now.ToShortDateString
|
|
Case "vUserName"
|
|
oValue = Environment.UserName
|
|
Case Else
|
|
oValue = dr.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 als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(oValue, dr.Item("INDEXNAME"), dr.Item("PREVENT_DUPLICATES"), dr.Item("ALLOW_NEW_VALUES")) = False Then
|
|
LOGGER.Debug("FINALER INDEX '" & dr.Item("INDEXNAME").ToString & "' WURDE ERFOLGREICH GESETZT")
|
|
Else
|
|
errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
oErrorOcurred = True
|
|
End If
|
|
Else
|
|
LOGGER.Debug("Jetzt das indexieren")
|
|
If Indexiere_File(CURRENT_WMFILE, dr.Item("INDEXNAME"), oResult) = True Then
|
|
LOGGER.Debug("FINALER INDEX '" & dr.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT")
|
|
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", dr.Item("INDEXNAME"))
|
|
Indexiere_VektorfeldPM(logstr, PROFIL_LOGINDEX)
|
|
End If
|
|
Else
|
|
errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
oErrorOcurred = True
|
|
End If
|
|
End If
|
|
If oErrorOcurred = True Then
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
''Wenn kein Fehler nach der finalen Indexierung gesetzt wurde
|
|
|
|
If oErrorOcurred = False Then
|
|
LOGGER.Debug("Tabelle updaten und co")
|
|
'Das Dokument freigeben und als editiert markieren
|
|
Dim sql = String.Format("UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, WORK_USER = '{0}', EDIT = 1 WHERE GUID = {1}", Environment.UserName, CURRENT_DOC_GUID)
|
|
ClassDatabase.Execute_non_Query(sql)
|
|
'TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", Document_ID)
|
|
''Das Dokument
|
|
'TBPM_PROFILE_FILESTableAdapter.CmdSetEdit(Document_ID)
|
|
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 innerhalbd er 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
|
|
For Each oControl As Control In Me.pnldesigner.Controls
|
|
If IsNothing(DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Then
|
|
Continue For
|
|
End If
|
|
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
|
|
If Not IsNothing(value_from_control) And value_from_control <> String.Empty 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.ToString.Replace("@DATE", Now.ToShortDateString)
|
|
End If
|
|
If WORK_HISTORY_ENTRY.ToString.Contains("@USERNAME") Then
|
|
WORK_HISTORY_ENTRY.ToString.Replace("@USERNAME", Environment.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, Environment.UserName, Environment.MachineName, WORK_HISTORY_ENTRY)
|
|
ClassDatabase.Execute_non_Query(ins)
|
|
|
|
Close_document_viewer()
|
|
If WMDocPathWindows.ToLower.EndsWith(".pdf") Then
|
|
If Not IsNothing(WORK_HISTORY_ENTRY) Then
|
|
If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then
|
|
sql = 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 = ClassDatabase.Return_Datatable(sql, True)
|
|
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)
|
|
End If
|
|
End If
|
|
End If
|
|
Dim value = CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_ALL_WORK_HISTORY_ENTRIES")
|
|
If CBool(value) = True Then
|
|
sql = 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 = ClassDatabase.Return_Datatable(sql, True)
|
|
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, 10, 40)
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
'wenn Move2Folder aktiviert wurde
|
|
If Move2Folder <> "" Then
|
|
idxerr_message = allgFunk.Move2Folder(WMDocPathWindows, Move2Folder, CURRENT_ProfilGUID, _windream)
|
|
If idxerr_message <> "" Then
|
|
errormessage = "Fehler bei Move2Folder:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
oErrorOcurred = True
|
|
End If
|
|
End If
|
|
'Validierungsfile löschen wenn vorhanden
|
|
allgFunk.Delete_xffres(WMDocPathWindows, _windream)
|
|
LOGGER.Debug("Delete_xffres ausgeführt")
|
|
LOGGER.Debug("All Input clear")
|
|
Anzahl_validierte_Dok += 1
|
|
'tstrlbl_Info.Text = "Anzahl Dateien: " & TBPM_PROFILE_FILESTableAdapter.cmdGet_Anzahl(PROFIL_ID)
|
|
LOGGER.Debug("Anzahl hochgesetzt")
|
|
LOGGER.Debug("Validierung erfolgreich abgeschlossen")
|
|
LOGGER.Info("")
|
|
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
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
errormessage = "Unvorhergesehener Fehler bei Abschluss:" & ex.Message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei Abschluss: " & ex.Message, True)
|
|
End Try
|
|
Else
|
|
'lblerror.Visible = True
|
|
'lblerror.Text = errmessage
|
|
errormessage = oErrorMessage
|
|
frmError.ShowDialog()
|
|
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" & Delimiter & Bezeichner & Delimiter & input & Delimiter & Environment.UserName & Delimiter & Now.ToString
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(">> Fehler 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" & Delimiter & indexname & Delimiter & input & Delimiter & Environment.UserName & Delimiter & Now.ToString
|
|
Else
|
|
PM_String = "DD-PMlog-CHG" & Delimiter & indexname & Delimiter & "NEW: '" & input & "' - OLD: '" & old & "'" & Delimiter & Environment.UserName & Delimiter & Now.ToString
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(">> Fehler in Return_LOGString: " & ex.Message, True)
|
|
PM_String = "DD-PM ERROR: " & ex.Message
|
|
End Try
|
|
Return PM_String
|
|
|
|
End Function
|
|
Private Function Indexiere_VektorfeldPM(input As String, NameVKTIndex As String, Optional PreventDuplicates As Boolean = False, Optional AllowAddNewValues As Boolean = True)
|
|
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
|
|
oErrorMessage = "Fehler beim Indexieren Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message
|
|
End If
|
|
End If
|
|
|
|
Return oMissing
|
|
End Function
|
|
Function Check_UpdateIndexe()
|
|
Dim oControlName
|
|
Dim oControlId As String
|
|
Try
|
|
Dim dt As DataTable = DD_DMSLiteDataSet.VWPM_CONTROL_INDEX
|
|
Dim oMissing As Boolean = False
|
|
|
|
'Jedes Control auf panel durchlaufen
|
|
For Each oControl As Control In Me.pnldesigner.Controls
|
|
'Der input der Box,Cmb muss jedes mal geleert werden
|
|
Dim input As String = ""
|
|
'Jedes Control in Konfig Tab durchlaufn
|
|
For Each dr As DataRow In dt.Rows
|
|
If dr.Item("CTRL_TYPE") = "LBL" Or dr.Item("CTRL_TYPE") = "LINE" Then
|
|
Continue For
|
|
End If
|
|
|
|
'Den Indexnamen auslesen
|
|
Dim oIndexName As String = dr.Item("INDEX_NAME")
|
|
Dim oIsRequired As Boolean = CBool(dr.Item("VALIDATION"))
|
|
Dim oSQLCheckCommand As String = IIf(IsDBNull(dr.Item("SQL_UEBERPRUEFUNG")), "", dr.Item("SQL_UEBERPRUEFUNG"))
|
|
Dim oIsReadOnly As Boolean = CBool(dr.Item("READ_ONLY"))
|
|
Dim oControlType As String = dr.Item("CTRL_TYPE")
|
|
oControlId = dr.Item("GUID")
|
|
Dim oRegexMatch As String = NotNull(dr.Item("REGEX_MATCH"), String.Empty)
|
|
Dim oRegexMessage As String = NotNull(dr.Item("REGEX_MESSAGE_DE"), String.Empty)
|
|
oControlName = dr.Item("CTRL_NAME")
|
|
|
|
'Nur wenn der Name der Zeile entspricht und der Index READ_ONLY FALSE ist
|
|
If dr.Item("CTRL_NAME") = oControl.Name And (oIsReadOnly = False Or oSQLCheckCommand <> "") And oIndexName <> "DD PM-ONLY FOR DISPLAY" Then
|
|
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.LookupControl2"
|
|
Try
|
|
Dim lookup As LookupControl2 = oControl
|
|
If oControl.Name = "DGV_ca94be19" Then
|
|
'MsgBox("attebt")
|
|
End If
|
|
If lookup.SelectedValues.Count = 0 And oIsRequired = True Then
|
|
oMissing = True
|
|
oErrorMessage = $"Kein Auswahl getroffen in LookupGrid '{oControl.Name}'"
|
|
oControl.BackColor = Color.Red
|
|
Exit For
|
|
Else
|
|
|
|
If lookup.MultiSelect = True Then
|
|
Dim Zeilen As Integer = lookup.SelectedValues.Count
|
|
|
|
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
|
If Zeilen > 0 Then
|
|
Dim ZeilenGrid As Integer = 0
|
|
Dim myVektorArr As String()
|
|
'Jeden Werte des Datagridviews durchlaufen
|
|
For Each value As String In lookup.SelectedValues
|
|
If value Is Nothing = False Then
|
|
'Das Array anpassen
|
|
ReDim Preserve myVektorArr(ZeilenGrid)
|
|
'Den Wert im Array speichern
|
|
myVektorArr(ZeilenGrid) = value
|
|
ZeilenGrid += 1
|
|
End If
|
|
|
|
Next
|
|
'Jetzt die Datei indexieren
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren von LookupGrid - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim oValues As New List(Of Object) From {String.Empty}
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, oValues.ToArray) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren von LookupGrid - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
End If
|
|
|
|
|
|
Else
|
|
input = lookup.SelectedValues.FirstOrDefault()
|
|
If IsNothing(input) And oIsRequired = True Then
|
|
oMissing = True
|
|
oErrorMessage = $"Could not get FirstOrDefault-Value of LookUpGrid! - LookUPGridName: {lookup.Name}"
|
|
Exit For
|
|
ElseIf IsNothing(input) And oIsRequired = False Then
|
|
Continue For
|
|
End If
|
|
'den aktuellen Wert in windream auslesen
|
|
Dim wertWD
|
|
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(oIndexName)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
|
If Not IsNothing(wertWD) Then
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
If wertWD.Length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
|
wertWD = wertWD(0)
|
|
End If
|
|
End If
|
|
Else
|
|
wertWD = ""
|
|
End If
|
|
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If IsNothing(wertWD) Or wertWD <> input Then
|
|
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
input = Return_PM_VEKTOR(input, oIndexName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Textbox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim result() As String
|
|
ReDim Preserve result(0)
|
|
result(0) = input
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Textbox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, oIndexName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
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
|
|
If oRegexMatch <> String.Empty AndAlso Not Regex.IsMatch(oControl.Text, oRegexMatch) Then
|
|
oMissing = True
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
oErrorMessage = "Wrong input in textbox '" & oControl.Name & "'"
|
|
Else
|
|
oErrorMessage = "Falsche Eingabe in Textbox '" & oControl.Name & "'"
|
|
End If
|
|
|
|
|
|
If oRegexMessage <> String.Empty Then
|
|
oErrorMessage &= ":" & vbCrLf & oRegexMessage
|
|
End If
|
|
|
|
oControl.BackColor = Color.Red
|
|
Exit For
|
|
End If
|
|
|
|
'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist
|
|
If Check_Missing(oControl, "txt") = True And oIsRequired = True Then 'NICHTS EINGETRAGEN
|
|
oMissing = True
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
oErrorMessage = "Missing input in textbox '" & oControl.Name & "'"
|
|
Else
|
|
oErrorMessage = "Fehlende Eingabe in Textbox '" & oControl.Name & "'"
|
|
End If
|
|
|
|
oControl.BackColor = Color.Red
|
|
Exit For
|
|
Else
|
|
input = oControl.Text
|
|
'den aktuellen Wert in windream auslesen
|
|
Dim wertWD
|
|
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(oIndexName)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
|
If Not IsNothing(wertWD) Then
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
If wertWD.Length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
|
wertWD = wertWD(0)
|
|
End If
|
|
End If
|
|
Else
|
|
wertWD = ""
|
|
End If
|
|
End If
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If IsNothing(wertWD) Or wertWD <> input Then
|
|
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
input = Return_PM_VEKTOR(input, oIndexName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Textbox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim result() As String
|
|
ReDim Preserve result(0)
|
|
result(0) = input
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Textbox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, oIndexName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
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("Unvorhergesehener Fehler in Check_UpdateIndexe TextBox: " & vbNewLine & ex.Message & vbNewLine & "Line: " & st.GetFrame(0).GetFileLineNumber().ToString, MsgBoxStyle.Critical, "Error:")
|
|
LOGGER.Info("Unvorhergesehener Fehler in Check_UpdateIndexe:" & ex.Message & " - Line: " & st.GetFrame(0).GetFileLineNumber().ToString, True)
|
|
Return True
|
|
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
|
|
oErrorMessage = "Please Choose an entry out of ComboBox '" & cmb.Name & "'"
|
|
Exit For
|
|
'ElseIf cmb.SelectedIndex <> -1 Then
|
|
Else 'Änderung 28.08.2018: Ein leerer Wert in der Combobox wird in den Index geschrieben
|
|
input = cmb.Text
|
|
LOGGER.Debug($"inputvalue Combobox: {cmb.Text}")
|
|
Dim oWMValue
|
|
'den aktuellen Wert in windream auslesen
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
oWMValue = ReturnVektor_IndexValue(oIndexName)
|
|
Else
|
|
oWMValue = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
|
End If
|
|
LOGGER.Debug($"Got a WMValue...")
|
|
If IsNothing(oWMValue) Then
|
|
LOGGER.Debug($"WMValue is nothing...Value EmptyString will be used")
|
|
oWMValue = String.Empty
|
|
End If
|
|
Dim oIndexType As String = "Index"
|
|
Try
|
|
If oWMValue.ToString = "System.Object[]" Then
|
|
oIndexType = "Vector"
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Debug($"Exception while oWMValue.ToString = System.Object[]...")
|
|
End Try
|
|
If oIndexType = "Vector" Then
|
|
LOGGER.Debug($"Control with ID{oControlId} is a vectorfield...")
|
|
If oWMValue.Length = 1 Then
|
|
oWMValue = oWMValue(0).ToString
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
|
oWMValue = oWMValue(0).ToString
|
|
End If
|
|
Else
|
|
LOGGER.Debug($"WMValue is a regular item...")
|
|
Dim oitsadifference As Boolean = False
|
|
Try
|
|
If oWMValue.ToString <> input.ToString Then
|
|
oitsadifference = True
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Warn($"Could not convert the WMValue 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
|
|
input = Return_PM_VEKTOR(input, oIndexName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Combobox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim result() As String
|
|
ReDim Preserve result(0)
|
|
result(0) = input
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
|
cmb.DroppedDown = True
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Combobox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, oWMValue, oIndexName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
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($"Unvorhergesehener Fehler in Check_UpdateIndexe Combobox : ID{oControlId} " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Error:")
|
|
LOGGER.Info($"Unvorhergesehener Fehler in Check_UpdateIndexe Combobox : ID{oControlId}" & ex.Message)
|
|
Return True
|
|
End Try
|
|
|
|
Case "System.Windows.Forms.DateTimePicker"
|
|
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
|
|
oErrorMessage = "Please Choose DateValue for field'" & dtp.Name & "'"
|
|
Exit For
|
|
ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then
|
|
input = CDate(dtp.Value)
|
|
'den aktuellen Wert in windream auslesen
|
|
' Dim wertWD As String = CURRENT_WMFILE.GetVariableValue(_IDXName)
|
|
Dim wertWD As String
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(oIndexName)
|
|
Else
|
|
wertWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
|
End If
|
|
If IsNothing(wertWD) Then
|
|
wertWD = CDate("01.01.1900")
|
|
End If
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If wertWD <> input Then
|
|
'Wenn der WErt in ein Vektorfeld geschrieben wird
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
'Input = die String komponente als String
|
|
input = Return_PM_VEKTOR(input, oIndexName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren DatePicker als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim result()
|
|
ReDim Preserve result(0)
|
|
result(0) = CDate(input)
|
|
'MsgBox(_IDXName)
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren DatePicker- ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, oIndexName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
Else
|
|
LOGGER.Debug("Value WD ('" & wertWD.ToString & "') = Input-value ('" & input.ToString & "')")
|
|
|
|
End If
|
|
Else
|
|
LOGGER.Debug("DateValue is 01.01.0001 00:00:00")
|
|
End If
|
|
Case "System.Windows.Forms.CheckBox"
|
|
Dim chk As CheckBox = oControl
|
|
input = chk.Checked.ToString
|
|
|
|
'If chk.Checked = False And oIsRequired = True Then
|
|
' oMissing = True
|
|
' oErrorMessage = "Option '" & chk.Name & "' is required."
|
|
' Exit For
|
|
'End If
|
|
|
|
'den aktuellen Wert in windream auslesen
|
|
Dim WertWD As String
|
|
Dim Bool_WD As Boolean
|
|
If oIndexName.StartsWith("[%VKT") Then
|
|
WertWD = ReturnVektor_IndexValue(oIndexName)
|
|
If WertWD = "" Then
|
|
Bool_WD = False
|
|
Else
|
|
Bool_WD = CBool(WertWD)
|
|
End If
|
|
Else
|
|
Dim _Value
|
|
Dim ValueWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
|
|
If IsNothing(ValueWD) Then
|
|
Bool_WD = False
|
|
Else
|
|
If ValueWD.ToString = "System.Object[]" Then
|
|
If ValueWD.Length = 1 Then
|
|
_Value = ValueWD(0)
|
|
Else '
|
|
LOGGER.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
|
|
_Value = ValueWD(0)
|
|
End If
|
|
Else
|
|
_Value = ValueWD
|
|
End If
|
|
Bool_WD = CBool(_Value)
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
|
|
' Dim Bool_WD = CBool(CURRENT_WMFILE.GetVariableValue(_IDXName))
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If Bool_WD <> 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 als String
|
|
input = Return_PM_VEKTOR(chk.Checked.ToString, oIndexName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Checkbox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Checkbox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(CBool(result(0)).ToString, WertWD, oIndexName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
Case "System.Windows.Forms.DataGridView"
|
|
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
|
|
oErrorMessage = "Fehlende Eingabe in Vektorfeld '" & dgv.Name & "'"
|
|
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 & Delimiter & 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
|
|
'Jetzt die Datei indexieren
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren Vektorfeld - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
End If
|
|
|
|
Case "DevExpress.XtraGrid.GridControl"
|
|
Dim dgv As GridControl = oControl
|
|
|
|
Dim Zeilen As Integer = dgv.DataSource.Rows.Count
|
|
|
|
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
|
If oIsRequired = True And Zeilen = 0 Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehlende Eingabe in Tabelle '" & dgv.Name & "'"
|
|
oControl.BackColor = Color.Red
|
|
Exit For
|
|
|
|
|
|
ElseIf Zeilen > 0 Then
|
|
Dim ZeilenGrid As Integer = 0
|
|
Dim myVektorArr As String()
|
|
'Jeden Werte des Datagridviews durchlaufen
|
|
For Each row As DataRow In dgv.DataSource.Rows
|
|
Dim exists = False
|
|
Select Case oControlType
|
|
Case "TABLE"
|
|
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
|
Dim str As String = String.Empty
|
|
If row.Item(0) <> String.Empty Then
|
|
'Das Array anpassen
|
|
ReDim Preserve myVektorArr(ZeilenGrid)
|
|
|
|
Dim oValueList As New List(Of String)
|
|
|
|
For Each item In row.ItemArray
|
|
item = NotNull(item, String.Empty)
|
|
If TypeOf item IsNot String Then item.ToString()
|
|
oValueList.Add(item)
|
|
Next
|
|
|
|
str = String.Join(Delimiter, oValueList.ToArray)
|
|
|
|
'Den Wert im Array speichern
|
|
myVektorArr(ZeilenGrid) = str
|
|
ZeilenGrid += 1
|
|
End If
|
|
Case Else
|
|
' MsgBox(row.Cells(0).Value.GetType.ToString)
|
|
If row.Item(0) Is Nothing = False Then
|
|
'Das Array anpassen
|
|
ReDim Preserve myVektorArr(ZeilenGrid)
|
|
'Den Wert im Array speichern
|
|
myVektorArr(ZeilenGrid) = row.Item(0).Value.ToString
|
|
ZeilenGrid += 1
|
|
End If
|
|
End Select
|
|
|
|
Next
|
|
'Jetzt die Datei indexieren
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren der Tabelle - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim oValue As New List(Of Object) From {String.Empty}
|
|
|
|
'Jetzt die Datei indexieren
|
|
If Indexiere_File(CURRENT_WMFILE, oIndexName, oValue.ToArray) = False Then
|
|
oMissing = True
|
|
oErrorMessage = "Fehler beim Indexieren der Tabelle - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
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
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Return oMissing
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Warn($"Unexpected error in Check_UpdateIndexe - ControlID: {oControlId},{oControlName}")
|
|
LOGGER.Error(ex)
|
|
Dim st As New StackTrace(True)
|
|
st = New StackTrace(ex, True)
|
|
MsgBox($"Unvorhergesehener Fehler in Check_UpdateIndexe ControlID,Name: {oControlId},{oControlName}" & vbNewLine & ex.Message & vbNewLine & "Line: " & st.GetFrame(0).GetFileLineNumber().ToString, MsgBoxStyle.Critical, "Error:")
|
|
LOGGER.Info("Unvorhergesehener Fehler in Check_UpdateIndexe:" & ex.Message & " - Line: " & st.GetFrame(0).GetFileLineNumber().ToString, True)
|
|
Return True
|
|
End Try
|
|
|
|
End Function
|
|
Private Function Indexiere_File(_dok As WINDREAMLib.WMObject, idxxname As String, idxvalue 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) = idxxname
|
|
'Das Array der Idnexwerte überprüfen
|
|
If idxvalue Is Nothing = False Then
|
|
If idxvalue.Length() > 1 Then
|
|
LOGGER.Debug("Indexing Index '" & idxxname & "' with Arrayvalue")
|
|
Dim anzahl As Integer = 0
|
|
For Each indexvalue As String In idxvalue
|
|
ReDim Preserve arrValue(anzahl)
|
|
arrValue(anzahl) = indexvalue
|
|
anzahl += 1
|
|
Next
|
|
Else
|
|
LOGGER.Debug("Indexing Index '" & idxxname & "' with value '" & idxvalue(0) & "'")
|
|
ReDim Preserve arrValue(0)
|
|
arrValue(0) = idxvalue(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)
|
|
If File_indexiert = False Then
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler beim Indexieren der Datei: " & _dok.aName & " - ERROR: " & idxerr_message, Environment.UserName)
|
|
End If
|
|
Return File_indexiert
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Unvorhergesehener Fehler beim Indexieren der Datei: " & _dok.aName & " - ERROR: " & ex.Message, Environment.UserName)
|
|
idxerr_message = "unvorhergesehener Fehler in Indexiere_File: " & ex.Message.ToString
|
|
LOGGER.Info(">> Unvorhergesehener Fehler bei Indexiere_File: " & ex.Message.ToString, True)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub btnfinal_Click(sender As System.Object, e As System.EventArgs)
|
|
Abschluss()
|
|
End Sub
|
|
Function GetConnectionString(id As Integer)
|
|
Try
|
|
Dim connectionString As String
|
|
Dim DTConnection As DataTable
|
|
DTConnection = DD_DMSLiteDataSet.TBDD_CONNECTION
|
|
Dim drConnection As DataRow
|
|
For Each drConnection In DTConnection.Rows
|
|
If drConnection.Item("GUID") = id Then
|
|
Select Case drConnection.Item("SQL_PROVIDER")
|
|
Case "SqlClient.SqlConnection"
|
|
connectionString = "%MSData Source=" & drConnection.Item("SERVER") & ";Initial Catalog= " & drConnection.Item("DATENBANK") & ";User Id=" & drConnection.Item("USERNAME") & ";Password=" & drConnection.Item("PASSWORD") & ";"
|
|
|
|
Case "Oracle"
|
|
connectionString = "%ORProvider=OraOLEDB.Oracle;Data Source=" & drConnection.Item("SERVER") & ";User Id=" & drConnection.Item("USERNAME") & ";Password=" & drConnection.Item("PASSWORD") & ";OLEDB.NET=True;"
|
|
' connectionString = "%ORData Source=" & drConnection.Item("SERVER") & ";Persist Security Info=True;User Id=" & drConnection.Item("USERNAME") & ";Password=" & drConnection.Item("PASSWORD") & ";Unicode=True"
|
|
Case Else
|
|
LOGGER.Info(" - ConnectionType '" & drConnection.Item("SQL_PROVIDER") & "' nicht integriert")
|
|
MsgBox("ConnectionType '" & drConnection.Item("SQL_PROVIDER") & "' nicht integriert", MsgBoxStyle.Critical, "Bitte Konfiguration Connection überprüfen!")
|
|
|
|
End Select
|
|
End If
|
|
Next
|
|
Return connectionString
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(" - Unvorhergesehener Fehler bei GetConnectionString - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei GetConnectionString:")
|
|
Return ""
|
|
End Try
|
|
End Function
|
|
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("Dokument überspringen")
|
|
Close_document_viewer()
|
|
LOGGER.Debug("Doc Viewer geschlossen")
|
|
'Das Dokument freigeben
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", CURRENT_DOC_GUID)
|
|
|
|
Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}"
|
|
ClassDatabase.Execute_non_Query(oSQL)
|
|
|
|
LOGGER.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}")
|
|
LOGGER.Info("")
|
|
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 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
|
|
Close_document_viewer()
|
|
'Aus der Tabelle löschen
|
|
TBPM_PROFILE_FILESTableAdapter.CmdDelete(CURRENT_DOC_GUID)
|
|
Dim resul = allgFunk.Delete_xffres(WMDocPathWindows, _windream)
|
|
If resul = Nothing Or resul = True Then
|
|
If Delete_File() = True Then
|
|
'MsgBox("Die Datei wurde erfolgreich aus windream gelöscht!" & vbNewLine & "Es wird nun die nächste Datei angezeigt!", MsgBoxStyle.Information, "Erfolgsmeldung:")
|
|
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_File()
|
|
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()
|
|
End If
|
|
CURRENT_WMFILE.Delete()
|
|
LOGGER.Info(">> Manuelles Löschen: Datei " & CURRENT_WMFILE.aName & " erfolgreich gelöscht")
|
|
Return True
|
|
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", True)
|
|
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
|
|
|
|
Public Sub New()
|
|
MyBase.New
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
_frmValidatorSearch = frmValidatorSearch
|
|
End Sub
|
|
|
|
<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
|
|
Select Case Path.GetExtension(WMDocPathWindows).ToLower
|
|
Case ".pdf"
|
|
Select Case VIEWER_PDF
|
|
Case "internal"
|
|
My.Settings.frmValidation_Size_PDFViewer = Me.Size
|
|
Case "pdfxchange"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
Case "sumatra"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
Case "system"
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
End Select
|
|
Case ".msg"
|
|
My.Settings.frmValidation_Size_Email = Me.Size
|
|
Case Else
|
|
My.Settings.frmValidatorSize = Me.Size
|
|
End Select
|
|
My.Settings.Save()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Splitter1_LocationChanged(sender As Object, e As EventArgs)
|
|
My.Settings.Save()
|
|
End Sub
|
|
Private Sub PdfViewer1_DocumentChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfDocumentChangedEventArgs) Handles PdfViewer1.DocumentChanged
|
|
PDF_Pagenumber()
|
|
End Sub
|
|
|
|
Private Sub PdfViewer1_CurrentPageChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfCurrentPageChangedEventArgs) Handles PdfViewer1.CurrentPageChanged
|
|
PDF_Pagenumber()
|
|
End Sub
|
|
Sub PDF_Pagenumber()
|
|
Try
|
|
pdfstatuslblPageNumber.Text = "Page " & PdfViewer1.CurrentPageNumber & "/" & PdfViewer1.PageCount
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
|
|
End Try
|
|
End Sub
|
|
Private Sub MinimumToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
PdfViewer1.ZoomFactor = 20
|
|
End Sub
|
|
|
|
Private Sub PdfViewer1_ZoomChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfZoomChangedEventArgs) Handles PdfViewer1.ZoomChanged
|
|
'SaveMySettingsValue("PDFViewer_ZoomMode", PdfViewer1.ZoomFactor)
|
|
VIEWER_ZOOM_LEVEL = PdfViewer1.ZoomFactor
|
|
CONFIG.Config.PDFViewerZoomLevel = VIEWER_ZOOM_LEVEL
|
|
CONFIG.Save()
|
|
End Sub
|
|
|
|
Private Sub ToolStripDropDownButton1_Click(sender As Object, e As EventArgs) Handles ToolStripDropDownButton1.Click
|
|
PdfViewer1.ZoomFactor = 20
|
|
End Sub
|
|
|
|
Private Sub frmValidator_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
|
|
If e.KeyCode = Keys.F1 Then
|
|
btnSave.Enabled = False
|
|
Abschluss()
|
|
btnSave.Enabled = True
|
|
ElseIf e.KeyCode = Keys.F4 Then
|
|
Datei_ueberspringen()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButtonJumpFile.Click
|
|
Datei_ueberspringen()
|
|
End Sub
|
|
|
|
Private Sub ToolStripButtonDeleteFile_Click(sender As Object, e As EventArgs) Handles ToolStripButtonDeleteFile.Click
|
|
delete_active_File()
|
|
End Sub
|
|
|
|
Private Sub ToolStripButtonAnnotation_Click(sender As Object, e As EventArgs) Handles ToolStripButtonAnnotation.Click
|
|
PdfViewer1.CloseDocument()
|
|
Close_PDF_Viewer(WMDocPathWindows)
|
|
Application.DoEvents()
|
|
|
|
frmAnnotations.ShowDialog()
|
|
|
|
load_viewer()
|
|
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
|
|
|
|
End Sub
|
|
|
|
Private Sub InfoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InfoToolStripMenuItem.Click
|
|
frmFileInfo.ShowDialog()
|
|
End Sub
|
|
|
|
Private Sub EigenschaftenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EigenschaftenToolStripMenuItem.Click
|
|
If WMDocPathWindows <> "" Then
|
|
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("Fehler in Datei-Eigenschaften öffnen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End If
|
|
End If
|
|
Cursor = Cursors.Default
|
|
|
|
End Sub
|
|
|
|
Private Sub DateiÖffnenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles DateiÖffnenToolStripMenuItem1.Click
|
|
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 ToolStripButtonSearchesReload_Click(sender As Object, e As EventArgs) Handles ToolStripButtonSearchesReload.Click
|
|
Load_Additional_Searches()
|
|
End Sub
|
|
End Class |