2710 lines
143 KiB
VB.net
2710 lines
143 KiB
VB.net
|
|
Imports WINDREAMLib
|
|
Imports System.Threading
|
|
Imports System.Runtime.InteropServices
|
|
Imports System.Management
|
|
Imports System.Globalization
|
|
Imports Oracle.ManagedDataAccess.Client
|
|
Imports Independentsoft
|
|
Imports System.IO
|
|
|
|
Public Class frmValidator
|
|
Dim viewerID
|
|
Dim strFileList()
|
|
Dim PROFIL_sortbynewest As Boolean
|
|
Dim PROFIL_VEKTORINDEX
|
|
Dim PROFIL_LOGINDEX
|
|
Dim Right_Delete As Boolean
|
|
|
|
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
|
|
Dim aktivesDokument As WMObject
|
|
'speichert die DocumentDaten
|
|
Private navStep As String = Nothing
|
|
Public Shared Document_Path 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 errmessage 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
|
|
|
|
<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
|
|
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
|
|
ClassLogger.Add("Error in Load FormLayout: " & ex.Message)
|
|
End Try
|
|
Select Case Path.GetExtension(Document_Path).ToLower
|
|
Case ".pdf"
|
|
Select Case vpdfviewer
|
|
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()
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Try
|
|
TBPM_FILES_USER_NOT_INDEXEDTableAdapter.CmdDelete(Environment.UserName)
|
|
Catch ex As Exception
|
|
MsgBox("Fehler bei Übersprungene Files löschen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
If CURRENT_DOC_ID <> 0 Then
|
|
Try
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", CURRENT_DOC_ID)
|
|
Catch ex As Exception
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler bei Freigabe der Dok-ID: " & CURRENT_DOC_ID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
End Try
|
|
End If
|
|
|
|
If Viewer = "docview" Then
|
|
CloseWDDocview()
|
|
End If
|
|
|
|
If vpdfviewer = "system" Then
|
|
Kill_PDFAcrobat()
|
|
Else
|
|
If pdfxchange = True Or sumatra = True Then
|
|
Close_PDF_Viewer(Document_Path)
|
|
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
|
|
|
|
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
|
|
|
|
End Try
|
|
End Sub
|
|
Private Function process_User_exists(processname As String, Status 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.ToLower = processname.ToLower Then
|
|
Dim s(1) As String
|
|
proc.InvokeMethod("GetOwner", CType(s, Object()))
|
|
If CStr(s(0)).ToLower.Contains(Environment.UserName.ToLower) Then
|
|
Return True
|
|
End If
|
|
End If
|
|
Next
|
|
Return False
|
|
Catch ex As Exception
|
|
If Status = "CLOSE" Then
|
|
Return False
|
|
Else
|
|
'ClassLogger.Add(">> Fehler in process_User_exists " & Status & ": " & ex.Message, True)
|
|
Return True
|
|
End If
|
|
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
|
|
ClassLogger.Add(">> Fehler in process_terminate: " & ex.Message, True)
|
|
End Try
|
|
End Function
|
|
Sub Close_PDF_Viewer(vorherigefile As String)
|
|
Try
|
|
If vpdfviewer = "pdfxchange" Then
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(PDFXChangeViewer, "/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 vpdfviewer = "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
|
|
|
|
End Try
|
|
End If
|
|
If vpdfviewer = "system" Then
|
|
Kill_PDFAcrobat()
|
|
pdfxchange = False
|
|
sumatra = False
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Fehler in Close_PDFXCHANGE")
|
|
ClassLogger.Add(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Function Init_windream()
|
|
Try
|
|
_windream = New ClassWindream_allgemein
|
|
_windream.Init()
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Windream initiiert", False)
|
|
Return True
|
|
Catch ex As Exception
|
|
MsgBox("Error Init_windream:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error Init _windream: " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add(">> 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
|
|
If My.Settings.frmValidatorPosition.IsEmpty = False Then
|
|
If My.Settings.frmValidatorPosition.X > 0 And My.Settings.frmValidatorPosition.Y > 0 Then
|
|
Me.Location = My.Settings.frmValidatorPosition
|
|
End If
|
|
End If
|
|
If My.Settings.frmValidatorSize.IsEmpty = False Then
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
End If
|
|
Try
|
|
TBPM_FILES_USER_NOT_INDEXEDTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_PROFILE_CONTROLSTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_CONNECTIONTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_PROFILE_FILESTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_PROFILETableAdapter.Connection.ConnectionString = MyConnectionString
|
|
Me.TBPM_KONFIGURATIONTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
VWPM_CONTROL_INDEXTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
VWPM_PROFILE_USERTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
Me.TBPM_CONTROL_TABLETableAdapter.Connection.ConnectionString = MyConnectionString
|
|
|
|
Me.VWPM_PROFILE_USERTableAdapter.FillByName(Me.DD_DMSLiteDataSet.VWPM_PROFILE_USER, CURRENT_ProfilName, Environment.UserName)
|
|
Me.VWPM_CONTROL_INDEXTableAdapter.Fill(Me.DD_DMSLiteDataSet.VWPM_CONTROL_INDEX, CURRENT_ProfilName)
|
|
Me.TBPM_CONNECTIONTableAdapter.Fill(Me.DD_DMSLiteDataSet.TBPM_CONNECTION)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Profile Data geladen", False)
|
|
Catch ex As Exception
|
|
MsgBox("Error LOADING profile-data:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error LOADING profile-data: " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add(">> Fehler in LOADING profile-data: " & ex.Message, True)
|
|
Me.Close()
|
|
End Try
|
|
|
|
Try
|
|
Delimiter = TBPM_KONFIGURATIONTableAdapter.cmdGetDelimiter
|
|
|
|
Dim dt As DataTable = Me.DD_DMSLiteDataSet.VWPM_PROFILE_USER
|
|
Dim dr As DataRow
|
|
If dt.Rows.Count = 0 Then
|
|
ClassLogger.Add(">> 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 dt.Rows.Count > 1 Then
|
|
MsgBox("Es wurden mehr als 1 Profil zurückgegeben!!", MsgBoxStyle.Critical, "Achtung:")
|
|
Else
|
|
If dt.Rows.Count <> 0 Then
|
|
For Each dr In dt.Rows
|
|
PROFIL_VEKTORINDEX = dr.Item("PM_VEKTOR_INDEX")
|
|
PROFIL_LOGINDEX = dr.Item("LOG_INDEX")
|
|
Me.Text = "Process Manager - " & dr.Item("TITLE")
|
|
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 = dr.Item("MOVE2Folder")
|
|
Right_Delete = dr.Item("RIGHT_FILE_DELETE")
|
|
Anzahl_ValDoks = TBPM_PROFILE_FILESTableAdapter.cmdGet_Anzahl(CURRENT_ProfilGUID)
|
|
Next
|
|
If LogErrorsOnly = False Then
|
|
ClassLogger.Add(" >> Profildaten gespeichert", False)
|
|
ClassLogger.Add(" >> WD_Search: " & WD_Search, False)
|
|
ClassLogger.Add(" >> finalProfile: " & finalProfile, False)
|
|
ClassLogger.Add(" >> Move2Folder: " & Move2Folder, False)
|
|
ClassLogger.Add(" >> Right_Delete: " & Right_Delete, False)
|
|
End If
|
|
|
|
PROFIL_sortbynewest = TBPM_PROFILETableAdapter.cmdSortMode(CURRENT_ProfilGUID)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> PROFIL_sortbynewest: " & PROFIL_sortbynewest.ToString, False)
|
|
'Delete Button anzeigen ja/nein
|
|
If Right_Delete = True Then
|
|
Me.btnDelete.Visible = True
|
|
Else
|
|
Me.btnDelete.Visible = False
|
|
End If
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Right_Delete: " & Right_Delete.ToString, False)
|
|
Load_Controls()
|
|
End If
|
|
End If
|
|
|
|
Catch ex As System.Exception
|
|
MsgBox("Error SAVING Profile-Data:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error SAVING Profile-Data: " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add(">> Fehler in SAVING Profile-Data: " & ex.Message, True)
|
|
End Try
|
|
'Me.lblerror.Visible = False
|
|
Try
|
|
If finalProfile = True Then
|
|
Dim text As String = TBPM_PROFILETableAdapter.cmdFinalText(CURRENT_ProfilGUID)
|
|
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
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Final profile Text geladen", False)
|
|
Catch ex As Exception
|
|
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)
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error loading final profile text " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add(">> Fehler in loading final profile text: " & ex.Message, True)
|
|
End Try
|
|
End Sub
|
|
|
|
Sub Load_Controls()
|
|
Try
|
|
pnldesigner.Controls.Clear()
|
|
Dim dt As DataTable = DD_DMSLiteDataSet.VWPM_CONTROL_INDEX
|
|
For Each dr As DataRow In dt.Rows
|
|
Select Case dr.Item("CTRL_TYPE").ToString.ToUpper
|
|
Case "TXT"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch TXT zu laden", False)
|
|
add_textbox(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 "LBL"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch LBL zu laden", False)
|
|
add_label(dr.Item("GUID"), dr.Item("CTRL_NAME"), dr.Item("CTRL_TEXT"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")))
|
|
Case "CMB"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch CMB zu laden", False)
|
|
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"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch DTP zu laden", False)
|
|
add_DTP(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 "DGV"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch DGV zu laden", False)
|
|
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"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch Checkbox zu laden", 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"
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch Tabelle zu laden", False)
|
|
add_TABLE(dr.Item("GUID"), dr.Item("CTRL_NAME"), CInt(dr.Item("X_LOC")), CInt(dr.Item("Y_LOC")), dr.Item("WIDTH"), CInt(dr.Item("HEIGHT")), dr.Item("READ_ONLY"))
|
|
End Select
|
|
Next
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Controls geladen", False)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Controls geladen", False)
|
|
ClassLogger.Add("", False)
|
|
|
|
Catch ex As Exception
|
|
If LogErrorsOnly = False Then MsgBox("Error Load_Controls: " & ex.Message, MsgBoxStyle.Critical, "Attention error:")
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Error Load_Controls: " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add("Unvorhergesehener Fehler bei Load_Controls:" & ex.Message)
|
|
ClassLogger.Add("", False)
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Function add_label(CONTROL_ID As Integer, lblname As String, text As String, x As Integer, y As Integer)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_label - lblname: " & lblname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim lbl As New Label
|
|
lbl.Name = lblname
|
|
lbl.Text = text
|
|
lbl.AutoSize = True
|
|
lbl.Tag = CONTROL_ID
|
|
'lbl.Size = New Size(CInt(lbl.Text.Length * 10), 16)
|
|
lbl.Location = New Point(x, y)
|
|
pnldesigner.Controls.Add(lbl)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> LBL: " & lblname & " hinzugefügt", False)
|
|
End Function
|
|
Function add_textbox(CONTROL_ID As Integer, ByVal txtname As String, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal read_only As Boolean, loadindex As Boolean) 'idxName As String,
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_textbox - txtname: " & txtname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim txt As New TextBox
|
|
txt.Name = txtname
|
|
txt.Tag = CONTROL_ID
|
|
If height > 27 Then
|
|
txt.Multiline = True
|
|
txt.AcceptsReturn = True
|
|
Else
|
|
txt.Multiline = False
|
|
txt.AcceptsReturn = False
|
|
End If
|
|
If read_only = True Then
|
|
txt.ReadOnly = True
|
|
txt.TabStop = False
|
|
'txt.Enabled = False
|
|
End If
|
|
txt.Size = New Size(width, height)
|
|
txt.Location = New Point(x, y)
|
|
pnldesigner.Controls.Add(txt)
|
|
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
|
|
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
|
|
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
|
|
If first_control Is Nothing And read_only = False Then
|
|
first_control = txt
|
|
End If
|
|
last_control = txt
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> TXT: " & txtname & " hinzugefügt", False)
|
|
End Function
|
|
Function add_ComboBox(CONTROL_ID As Integer, cmbname As String, x As Integer, y As Integer, width As Integer, height As Integer, read_only As Boolean, loadindex As Boolean) 'idxName As String,
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_ComboBox - cmbname: " & cmbname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim cmb As New ComboBox
|
|
cmb.Name = cmbname
|
|
cmb.Size = New Size(width, height)
|
|
cmb.Location = New Point(x, y)
|
|
cmb.Tag = CONTROL_ID
|
|
If read_only = True Then
|
|
cmb.Enabled = False
|
|
cmb.TabStop = False
|
|
End If
|
|
cmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend
|
|
cmb.AutoCompleteSource = AutoCompleteSource.ListItems
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_ComboBox - Get GUID ", False)
|
|
'Überprüfen ob es eine Auswahllsite gibt
|
|
Dim ControlID = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(CURRENT_ProfilGUID, cmbname)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_ComboBox - GUID: " & ControlID, False)
|
|
If ControlID > 0 Then
|
|
Dim ConID = Me.TBPM_PROFILE_CONTROLSTableAdapter.cmdgetConnectionID(ControlID)
|
|
If ConID Is Nothing = False Then
|
|
If ConID > 0 And TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID) <> "" Then
|
|
Dim connectionString As String
|
|
Me.TBPM_CONNECTIONTableAdapter.FillByID(Me.DD_DMSLiteDataSet.TBPM_CONNECTION, ConID)
|
|
Dim DT As DataTable = Me.DD_DMSLiteDataSet.TBPM_CONNECTION
|
|
Dim drConnection As DataRow
|
|
For Each drConnection In DT.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
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> 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
|
|
ClassLogger.Add(" - ConnectionType nicht integriert", False)
|
|
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)
|
|
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()
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler bei GetValues SQL - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei GetValues SQL:")
|
|
End Try
|
|
End If
|
|
End If
|
|
Else
|
|
Dim AListe As String = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetChoiceListName(ControlID)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_ComboBox - AListe: " & AListe, False)
|
|
If AListe Is Nothing = False Then
|
|
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
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
End If
|
|
'Die BReite der DropDown-Lsit anpassen
|
|
Dim iWidestWidth As Integer = 300
|
|
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 > iWidestWidth Then
|
|
iWidestWidth = g1.MeasureString(Text, cmb.Font).Width + 30
|
|
End If
|
|
g1.Dispose()
|
|
Next oItem
|
|
End Using
|
|
|
|
'If Me.Items.Count > Me.MaxDropDownItems Then 'Wenn die Scrollleiste angezeigt wird...
|
|
' iWidestWidth += 15
|
|
'End If
|
|
|
|
cmb.DropDownWidth = Math.Max(iWidestWidth, cmb.Width)
|
|
pnldesigner.Controls.Add(cmb)
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CMB: " & cmbname & " hinzugefügt", False)
|
|
AddHandler cmb.SelectedIndexChanged, AddressOf OnCmbselectedIndex
|
|
If first_control Is Nothing And read_only = False Then
|
|
first_control = cmb
|
|
End If
|
|
last_control = cmb
|
|
End Function
|
|
Function add_DTP(CONTROL_ID As Integer, dtpname As String, x As Integer, y As Integer, width As Integer, height As Integer, read_only As Boolean, loadindex As Boolean) 'idxName As String,
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DTP - dtpname: " & dtpname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim dtp As New DateTimePicker
|
|
dtp.Name = dtpname
|
|
dtp.Tag = CONTROL_ID
|
|
dtp.Size = New Size(width, height)
|
|
dtp.Location = New Point(x, y)
|
|
dtp.Format = DateTimePickerFormat.Short
|
|
If read_only = True Then
|
|
dtp.Enabled = True
|
|
dtp.TabStop = False
|
|
End If
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DTP - Get GUID ", False)
|
|
'Überprüfen ob es eine Auswahllsite gibt
|
|
Dim guid = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(CURRENT_ProfilGUID, dtpname)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DTP - GUID: " & guid.ToString, False)
|
|
|
|
pnldesigner.Controls.Add(dtp)
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CMB: " & dtpname & " hinzugefügt", False)
|
|
AddHandler dtp.ValueChanged, AddressOf OnDTPValueChanged
|
|
If first_control Is Nothing And read_only = False Then
|
|
first_control = dtp
|
|
End If
|
|
last_control = dtp
|
|
End Function
|
|
Function add_DGV(CONTROL_ID As Integer, dgvname As String, height As Integer, width As Integer, x As Integer, y As Integer, read_only As Boolean, loadindex As Boolean) 'idxName As String,
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DGV - dgvname: " & dgvname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim dgv As New DataGridView
|
|
dgv.AllowUserToOrderColumns = False
|
|
dgv.Name = dgvname
|
|
dgv.Tag = CONTROL_ID
|
|
dgv.Size = New Size(width, height)
|
|
dgv.Location = New Point(x, y)
|
|
dgv.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua
|
|
Dim col As New DataGridViewTextBoxColumn
|
|
col.HeaderText = ""
|
|
col.Name = "column1"
|
|
col.Width = dgv.Width - 30
|
|
dgv.Columns.Add(col)
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DGV - Get GUID ", False)
|
|
'Überprüfen ob es eine Auswahllsite gibt
|
|
Dim guid = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(CURRENT_ProfilGUID, dgvname)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_DGV - GUID: " & guid.ToString, False)
|
|
'jkjjjk
|
|
If guid > 0 Then
|
|
|
|
End If
|
|
pnldesigner.Controls.Add(dgv)
|
|
AddHandler dgv.RowValidating, AddressOf onDGVRowValidating
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> dgv: " & dgvname & " hinzugefügt", False)
|
|
If first_control Is Nothing And read_only = False Then
|
|
first_control = dgv
|
|
End If
|
|
last_control = dgv
|
|
End Function
|
|
|
|
Function add_TABLE(CONTROL_ID As Integer, tableName As String, x As Integer, y As Integer, vwidth As Integer, vheight As Integer, read_only As Boolean)
|
|
Dim table As New DataGridView
|
|
table.Name = tableName
|
|
table.Size = New Size(vwidth, vheight)
|
|
table.Cursor = Cursors.Hand
|
|
table.Tag = CONTROL_ID
|
|
table.Location = New Point(x, y)
|
|
table.AllowUserToAddRows = True
|
|
table.AllowUserToDeleteRows = False
|
|
table.AllowUserToResizeColumns = False
|
|
table.AllowUserToResizeRows = False
|
|
table.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua
|
|
'Columns laden
|
|
Dim guid = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(CURRENT_ProfilGUID, tableName)
|
|
If guid > 0 Then
|
|
TBPM_CONTROL_TABLETableAdapter.Fill(Me.DD_DMSLiteDataSet.TBPM_CONTROL_TABLE, guid)
|
|
Dim DT As DataTable = Me.DD_DMSLiteDataSet.TBPM_CONTROL_TABLE
|
|
If DT.Rows.Count > 0 Then
|
|
For Each Row As DataRow In DT.Rows
|
|
Dim col As New DataGridViewTextBoxColumn
|
|
col.HeaderText = Row.Item("SPALTEN_HEADER")
|
|
col.Name = Row.Item("SPALTENNAME")
|
|
col.Width = Row.Item("SPALTENBREITE")
|
|
table.Columns.Add(col)
|
|
Next
|
|
End If
|
|
End If
|
|
' table.AutoResizeColumns()
|
|
|
|
pnldesigner.Controls.Add(table)
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Tabelle: " & tableName & " hinzugefügt", False)
|
|
If first_control Is Nothing And read_only = False Then
|
|
first_control = table
|
|
End If
|
|
last_control = table
|
|
End Function
|
|
|
|
Function add_Checkbox(CONTROL_ID As Integer, chkname As String, text As String, x As Integer, y As Integer, read_only As Boolean, loadindex As Boolean)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In add_label - lblname: " & chkname & " x/y: " & x.ToString & "/" & y.ToString, False)
|
|
Dim chk As New CheckBox
|
|
chk.Name = chkname
|
|
chk.Text = text
|
|
chk.Tag = CONTROL_ID
|
|
chk.AutoSize = True
|
|
'chk.Size = New Size(CInt(chk.Text.Length * 15), 20)
|
|
chk.Location = New Point(x, y)
|
|
pnldesigner.Controls.Add(chk)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CHK: " & chkname & " hinzugefügt", False)
|
|
End Function
|
|
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 System.Object, e As System.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
|
|
'If box.Text <> String.Empty And me_closing = False And _Indexe_Loaded = True Then
|
|
' If CheckValueExists(box) = False Then
|
|
' box.Text = ""
|
|
' box.Focus()
|
|
' frmError.ShowDialog()
|
|
' End If
|
|
'End If
|
|
'If navStep Is Nothing = False Then
|
|
' Select Case navStep
|
|
' Case "first"
|
|
' MovePosition(0)
|
|
' Case "previous"
|
|
' MovePosition(aktIndex - 1)
|
|
' Case "next"
|
|
' MovePosition(aktIndex + 1)
|
|
' Case "last"
|
|
' MovePosition(Anzahl_ValDoks - 1)
|
|
' End Select
|
|
' first_control.Focus()
|
|
|
|
'End If
|
|
End Sub
|
|
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
|
|
Dim box As TextBox = sender
|
|
If box.Text <> String.Empty And me_closing = False And _Indexe_Loaded = True Then
|
|
'If CheckValueExists(box) = False Then
|
|
' box.Text = ""
|
|
' box.Focus()
|
|
' frmError.ShowDialog()
|
|
'End If
|
|
If e.KeyCode = Keys.Return Or e.KeyCode = Keys.Tab 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)
|
|
' 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 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(sql_Statement)
|
|
'####
|
|
' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
For Each element As System.Text.RegularExpressions.Match In elemente
|
|
Try
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False)
|
|
Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3)
|
|
Dim input_value
|
|
If MyPattern.Contains("txt") Then
|
|
Dim txt As TextBox = CType(Me.pnldesigner.Controls(MyPattern), TextBox)
|
|
input_value = txt.Text
|
|
ElseIf MyPattern.Contains("cmb") Then
|
|
Dim cmb As ComboBox = CType(Me.pnldesigner.Controls(MyPattern), ComboBox)
|
|
input_value = cmb.Text
|
|
End If
|
|
sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value)
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result - ERROR: " & ex.Message)
|
|
End Try
|
|
|
|
Next
|
|
|
|
|
|
|
|
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
|
|
ClassLogger.Add("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
|
|
End Try
|
|
|
|
Next
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
|
|
End Try
|
|
If box.Name = last_control.Name Then
|
|
Abschluss()
|
|
Else
|
|
SendKeys.Send("{TAB}")
|
|
End If
|
|
End If
|
|
End If
|
|
'If navStep Is Nothing = False Then
|
|
' Select Case navStep
|
|
' Case "first"
|
|
' MovePosition(0)
|
|
' Case "previous"
|
|
' MovePosition(aktIndex - 1)
|
|
' Case "next"
|
|
' MovePosition(aktIndex + 1)
|
|
' Case "last"
|
|
' MovePosition(Anzahl_ValDoks - 1)
|
|
' End Select
|
|
' first_control.Focus()
|
|
|
|
'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
|
|
ClassLogger.Add("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
|
|
End Try
|
|
|
|
Next
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
|
|
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
|
|
SendKeys.Send("{TAB}")
|
|
End If
|
|
End If
|
|
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}")
|
|
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
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> SQL Check is not configured!", False)
|
|
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
|
|
My.Settings.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
|
|
ClassLogger.Add("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(UniversalViewer, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
Catch ex As Exception
|
|
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 System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(PDFXChangeViewer, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
psi.UseShellExecute = False
|
|
Proc.StartInfo = psi
|
|
|
|
Proc.Start()
|
|
Do While process_User_exists("PDFXCview.exe", "START") = False
|
|
'Warten bis PDF geladen ist
|
|
System.Threading.Thread.Sleep(500)
|
|
Loop
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler in Open_PDFXCHANGE:")
|
|
ClassLogger.Add("Fehler in Open_PDFXCHANGE")
|
|
ClassLogger.Add(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(SumatraViewer, """" & AktuelleIndexfile & """")
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
psi.UseShellExecute = False
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler in Open_Sumatra:")
|
|
ClassLogger.Add("Fehler in Open_Sumatra")
|
|
ClassLogger.Add(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Sub Open_PDF_withStandard()
|
|
If Document_Path.ToLower.EndsWith(".pdf") = True Then
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(Document_Path)
|
|
psi.WindowStyle = ProcessWindowStyle.Minimized
|
|
Proc.EnableRaisingEvents = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
viewerID = Proc.Id
|
|
End If
|
|
End Sub
|
|
Function Get_Next_GUID() As Integer
|
|
Try
|
|
Dim newGUID As Integer
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Old Document_Path: " & OLD_Document_Path, False)
|
|
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
|
|
|
|
If newGUID > 0 Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> newGUID: " & newGUID.ToString, False)
|
|
Document_Path = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Document_Path: " & Document_Path, False)
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Überprüfen ob File existiert?", False)
|
|
Dim i As Integer = 0
|
|
Do While allgFunk.file_exists(Document_Path, False) = False And newGUID <> 0
|
|
i = i + 1
|
|
If i > 800 Then
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Get_Next_GUID - Datei nicht vorhanden!", Environment.UserName)
|
|
ClassLogger.Add(" >> ACHTUNG: Ausnahme in GetNextGUID - Datei nicht vorhanden", False)
|
|
Dim Del = "DELETE FROM TBPM_PROFILE_FILES where GUID = " & newGUID
|
|
ClassDatabase.Execute_non_Query(Del, True)
|
|
errmessage = "Die windream-Datei existiert nicht!"
|
|
Return 0
|
|
End If
|
|
Loop
|
|
OLD_Document_Path = Document_Path
|
|
'If PROFIL_sortbynewest Then
|
|
' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdgetNextFile_GUID_Newest(PROFIL_ID, Document_Path, Environment.UserName)
|
|
' Document_Path = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID)
|
|
'Else
|
|
' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdGetNextFile_GUID(PROFIL_ID, Document_Path, Environment.UserName)
|
|
' Document_Path = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID)
|
|
'End If
|
|
Else
|
|
ClassLogger.Add(" >> ACHTUNG: Ausnahme in GetNextGUID - Es konnte keine GUID abgerufen werden!", False)
|
|
newGUID = 0
|
|
End If
|
|
|
|
Return newGUID
|
|
Catch ex As Exception
|
|
errmessage = "Unvorhergesehener Fehler in Get_Next_GUID: " & ex.Message
|
|
ClassLogger.Add(">> 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
|
|
|
|
Dim DT As DataTable = DD_DMSLiteDataSet.TBPM_PROFILE_FILES
|
|
|
|
CURRENT_DOC_ID = DT.Rows(0).Item("GUID")
|
|
tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID
|
|
|
|
AnzDoks = DT.Rows.Count
|
|
|
|
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 vpdfviewer = "system" Then
|
|
Close_PDF_Viewer(Document_Path)
|
|
End If
|
|
If aktivesDokument Is Nothing = False Then
|
|
If aktivesDokument.aLocked Then
|
|
aktivesDokument.Save()
|
|
' unlock the windream object
|
|
aktivesDokument.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
|
|
SplitContainer1.Panel2Collapsed = False
|
|
End Sub
|
|
Sub Load_Next_Document(first As Boolean)
|
|
|
|
aktivesDokument = Nothing
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> aktivesDokument nothing gesetzt", False)
|
|
activate_controls(False)
|
|
errmessage = ""
|
|
Document_Path = ""
|
|
CURRENT_HTML_DOC = ""
|
|
|
|
'Me.lblerror.Visible = False
|
|
_Indexe_Loaded = False
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> In Load_Next_Document", False)
|
|
Try
|
|
If first = True Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> First Document", False)
|
|
aktivesDokument = Nothing
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Following Document ", False)
|
|
docCounter += 1
|
|
End If
|
|
Clear_all_Input()
|
|
'Select Case navtype
|
|
' Case "next"
|
|
' Case "previous"
|
|
' Case "first"
|
|
' Case "last"
|
|
'End Select
|
|
CURRENT_DOC_ID = Get_Next_GUID()
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Dokument-GUID: '" & CURRENT_DOC_ID.ToString & "'", False)
|
|
If CURRENT_DOC_ID > 0 Then
|
|
'Beschriftung des Navigators
|
|
'lblNavigator_anzDok.Text = position & " of " & Anzahl_ValDoks & " files"
|
|
If Document_Path <> String.Empty Then
|
|
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(True, Environment.UserName, CURRENT_DOC_ID)
|
|
' ############ Infos eintragen #################
|
|
tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID
|
|
txtDateipfad.Text = Document_Path
|
|
tstrlbl_Info.Text = "Datei " & docCounter.ToString & " von " & Anzahl_ValDoks.ToString
|
|
ClassLogger.Add(">> Validierung für Dokument '" & Document_Path & "' gestartet", False)
|
|
|
|
Try
|
|
aktivesDokument = _windream.oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, Document_Path.Substring(2))
|
|
Catch ex As Exception
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler bei Erzeugen windream-Objekt - DokID: " & CURRENT_DOC_ID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
ClassLogger.Add("Fehler bei Erzeugen windream-Objekt in (LoadNextDokument): " & ex.Message)
|
|
ClassLogger.Add("Error Number: " & Err.Number.ToString)
|
|
Dim _err1 As Boolean = False
|
|
'Nochmaliger Versuch windream zu initialiseren
|
|
If Init_windream() = True Then
|
|
Try
|
|
aktivesDokument = _windream.oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, Document_Path.Substring(2))
|
|
Catch ex1 As Exception
|
|
ClassLogger.Add("Fehler bei 2. Versuch windream-Objekt: " & ex1.Message)
|
|
_err1 = True
|
|
End Try
|
|
Else
|
|
errmessage = "Es besteht ein Problem beim Anmelden an windream - Bitte wenden Sie sich an Digital Data!"
|
|
_err1 = True
|
|
End If
|
|
If _err1 = True Then
|
|
frmError.ShowDialog()
|
|
Exit Sub
|
|
End If
|
|
|
|
End Try
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Windream-Dokument geladen und gelockt", False)
|
|
errmessage = Windream_get_Doc_info()
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Windream-Dok Info geholt", False)
|
|
If errmessage = "" Then
|
|
Me.grpbxMailBody.Visible = False
|
|
Me.grpBetreff.Visible = False
|
|
|
|
If Viewer = "uviewer" Then
|
|
pdfxchange = False
|
|
sumatra = False
|
|
If Document_Path.ToLower.EndsWith(".msg") Then
|
|
Show_Email()
|
|
Else
|
|
ShowFile_UniversalViewer(Document_Path)
|
|
End If
|
|
ElseIf Viewer = "docview" Then
|
|
PdfControls_visible(False)
|
|
If Document_Path.ToLower.EndsWith(".pdf") And vpdfviewer <> "none" Then
|
|
Select Case vpdfviewer
|
|
Case "internal"
|
|
PdfViewer1.LoadDocument(Document_Path)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Internal Viewer Path: " & Document_Path, False)
|
|
PdfControls_visible(True)
|
|
Me.Size = My.Settings.frmValidation_Size_PDFViewer
|
|
PdfViewer1.ZoomMode = PDFViewer_ZoomMode
|
|
pdfxchange = False
|
|
sumatra = False
|
|
Case "pdfxchange"
|
|
Open_PDFXCHANGE(Document_Path)
|
|
pdfxchange = True
|
|
sumatra = False
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
Case "sumatra"
|
|
Open_Sumatra(Document_Path)
|
|
sumatra = True
|
|
pdfxchange = False
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
Case "system"
|
|
sumatra = False
|
|
pdfxchange = False
|
|
Open_PDF_withStandard()
|
|
System.Threading.Thread.Sleep(1000)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
End Select
|
|
ElseIf Document_Path.ToLower.EndsWith(".msg") Then
|
|
Show_Email()
|
|
Else
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
pdfxchange = False
|
|
sumatra = False
|
|
DocView = Nothing
|
|
DocView = CreateObject("WMPViewXNG.Viewer")
|
|
' open the viewer
|
|
viewer_string = aktivesDokument.aPath.ToString
|
|
DocView.ViewFile(viewer_string)
|
|
End If
|
|
Else
|
|
PdfControls_visible(False)
|
|
Me.Size = My.Settings.frmValidatorSize
|
|
pdfxchange = False
|
|
sumatra = False
|
|
DocView = Nothing
|
|
DocView = CreateObject("WMPViewXNG.Viewer")
|
|
' open the viewer
|
|
viewer_string = aktivesDokument.aPath.ToString
|
|
DocView.ViewFile(viewer_string)
|
|
End If
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Viewer geladen", False)
|
|
|
|
FillIndexValues()
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexmaske geladen", False)
|
|
If LogErrorsOnly = False Then ClassLogger.Add("", False)
|
|
|
|
'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 ClassLogger.Add(" >> Profilname erfolgreich in Vektorfeld PM geschrieben", False)
|
|
' 'Else
|
|
' ' My.Settings.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
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Profilname erfolgreich in Vektorfeld LOG geschrieben", False)
|
|
'Else
|
|
' My.Settings.errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
' My.Settings.Save()
|
|
' frmError.ShowDialog()
|
|
' _error = True
|
|
End If
|
|
End If
|
|
activate_controls(True)
|
|
Else
|
|
My.Settings.errormessage = errmessage
|
|
frmError.ShowDialog()
|
|
End If
|
|
Else
|
|
My.Settings.errormessage = errmessage
|
|
frmError.ShowDialog()
|
|
End If
|
|
Else
|
|
If errmessage <> "" Then
|
|
My.Settings.errormessage = errmessage
|
|
frmError.ShowDialog()
|
|
Else
|
|
ClassLogger.Add(" >> Ende des Profils - Kein weiteres Dokument!", False)
|
|
ClassLogger.Add("", False)
|
|
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
|
|
allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Unvorhergesehener Fehler bei Load_Next_Document - DokID: " & CURRENT_DOC_ID & " - ERROR: " & ex.Message, Environment.UserName)
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei Load_Next_Document:" & ex.Message
|
|
My.Settings.Save()
|
|
ClassLogger.Add("Unvorhergesehener Fehler in Load_Next_Document: " & ex.Message)
|
|
frmError.ShowDialog()
|
|
End Try
|
|
End Sub
|
|
Sub Show_Email()
|
|
Try
|
|
Me.grpBetreff.Dock = DockStyle.Top
|
|
Me.grpbxMailBody.Dock = DockStyle.Fill
|
|
Dim msg_email As New Msg.Message(Document_Path)
|
|
'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
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei Show_Email:" & ex.Message
|
|
ClassLogger.Add("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
|
|
Dim DMSErstellt As String
|
|
'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
|
|
DMSErstellt = aktivesDokument.GetVariableValue(IDX_DMS_ERSTELLT)
|
|
Catch ex As Exception
|
|
If ex.Message.Contains("Variable: " & IDX_DMS_ERSTELLT & " not found!") Then
|
|
ClassLogger.Add("1. Ausnahme in Windream_get_Doc_info: Variable: " & IDX_DMS_ERSTELLT & " not found", True)
|
|
ClassLogger.Add("1. Ausnahme-Fehler: " & ex.Message, False)
|
|
If IDX_DMS_ERSTELLT = "DMS Created" Then
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS erstellt")
|
|
IDX_DMS_ERSTELLT = "DMS erstellt"
|
|
IDX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
|
|
Else
|
|
IDX_DMS_ERSTELLT = "DMS Created"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
|
|
IDX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt Time")
|
|
End If
|
|
|
|
DMSErstellt = aktivesDokument.GetVariableValue(IDX_DMS_ERSTELLT)
|
|
Else
|
|
ClassLogger.Add("Fehler in Windream_get_Doc_info 1: " & ex.Message)
|
|
Return "Fehler in Windream_get_Doc_info 1: " & ex.Message
|
|
End If
|
|
End Try
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DMS-Erstellt aus WD: " & DMSErstellt, False)
|
|
Dim DMSErstelltZeit As String
|
|
Try
|
|
DMSErstelltZeit = aktivesDokument.GetVariableValue(IDX_DMS_ERSTELLT_ZEIT)
|
|
Catch ex As Exception
|
|
If ex.Message.Contains("Variable: " & IDX_DMS_ERSTELLT_ZEIT & " not found!") Then
|
|
ClassLogger.Add("1. Ausnahme in Windream_get_Doc_info: Variable: " & IDX_DMS_ERSTELLT_ZEIT & " not found", True)
|
|
If IDX_DMS_ERSTELLT = "DMS Created" Then
|
|
IDX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
|
|
Else
|
|
IDX_DMS_ERSTELLT = "DMS Created"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
|
|
IDX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
|
|
SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS Created Time")
|
|
End If
|
|
|
|
DMSErstelltZeit = aktivesDokument.GetVariableValue(IDX_DMS_ERSTELLT_ZEIT)
|
|
Else
|
|
ClassLogger.Add("Fehler in Windream_get_Doc_info 3: " & ex.Message)
|
|
Return "Fehler in Windream_get_Doc_info 3: " & ex.Message
|
|
End If
|
|
End Try
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DMSErstelltZeit aus WD: " & DMSErstelltZeit, False)
|
|
|
|
If DMSErstelltZeit.Length > 11 Then
|
|
txtErstellt.Text = DMSErstellt & " " & DMSErstelltZeit.Substring(10)
|
|
Else
|
|
txtErstellt.Text = DMSErstellt & " " & DMSErstelltZeit
|
|
End If
|
|
|
|
Return ""
|
|
Catch ex As Exception
|
|
ClassLogger.Add("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 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 = aktivesDokument.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
|
|
MsgBox("Fehler in ReturnVektor_IndexValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
ClassLogger.Add("Fehler in ReturnVektor_IndexValue: " & ex.Message)
|
|
Return ""
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End Function
|
|
Sub FillIndexValues()
|
|
Dim controltype As String
|
|
Dim indexname As String
|
|
Dim resultvalue
|
|
Try
|
|
If DD_DMSLiteDataSet.VWPM_CONTROL_INDEX.Rows.Count > 0 Then
|
|
For Each inctrl As Control In Me.pnldesigner.Controls
|
|
Dim CONTROL_ID = inctrl.Tag
|
|
Dim controlRow = (From form In DD_DMSLiteDataSet.VWPM_CONTROL_INDEX.AsEnumerable()
|
|
Select form
|
|
Where form.Item("GUID") = CONTROL_ID).Single()
|
|
|
|
Dim Type As String = inctrl.GetType.ToString
|
|
Dim Typ As String = controlRow.Item("CTRL_TYPE")
|
|
Dim idxname As String = controlRow.Item("INDEX_NAME")
|
|
indexname = idxname
|
|
Dim LoadIDX As Boolean = controlRow.Item("LOAD_IDX_VALUE")
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> INDEX: " & idxname & " - CONTROLNAME: " & inctrl.Name & " - LOAD IDXVALUES: " & LoadIDX.ToString, False)
|
|
|
|
|
|
Select Case Type
|
|
Case "System.Windows.Forms.TextBox"
|
|
Try
|
|
controltype = "Textbox"
|
|
If idxname = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & inctrl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If idxname Is Nothing = False Then
|
|
If LoadIDX = False Or idxname = "DD PM-ONLY FOR DISPLAY" Then
|
|
inctrl.Text = ""
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexwert soll nicht geladen werden.", False)
|
|
Exit Select
|
|
End If
|
|
Dim wertWD
|
|
|
|
If idxname.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(idxname)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(idxname)
|
|
If wertWD Is Nothing Then
|
|
wertWD = ""
|
|
Else
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> TextBox with VektorField: " & idxname, False)
|
|
If wertWD.length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
ClassLogger.Add(" >> Vectorfield " & idxname & "' contains more then one value - First value will be used", False)
|
|
wertWD = wertWD(0)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
If wertWD Is Nothing = False Then
|
|
inctrl.Text = wertWD.ToString
|
|
Else
|
|
inctrl.Text = ""
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei FillIndexValues TextBox:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei FillIndexValuesTextBox: " & ex.Message, True)
|
|
ClassLogger.Add(">> Controltype: " & controltype, False)
|
|
ClassLogger.Add(">> Indexname windream: " & indexname, False)
|
|
Exit Sub
|
|
End Try
|
|
|
|
Case "System.Windows.Forms.ComboBox"
|
|
controltype = "ComboBox"
|
|
Dim cmb As ComboBox = inctrl
|
|
If idxname = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & inctrl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If idxname Is Nothing = False Then
|
|
If LoadIDX = False Then
|
|
cmb.SelectedIndex = -1
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexwert soll nicht geladen werden.", False)
|
|
Exit Select
|
|
End If
|
|
Dim wertWD
|
|
If idxname.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(idxname)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(idxname)
|
|
End If
|
|
If wertWD Is Nothing Then
|
|
cmb.SelectedIndex = -1
|
|
Else
|
|
cmb.SelectedIndex = cmb.FindStringExact(wertWD)
|
|
End If
|
|
End If
|
|
Case "System.Windows.Forms.DataGridView"
|
|
controltype = "DataGridView"
|
|
Dim dgv As DataGridView = inctrl
|
|
If idxname = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & inctrl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If idxname Is Nothing = False Then
|
|
If LoadIDX = False Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexwert soll nicht geladen werden.", False)
|
|
Exit Select
|
|
End If
|
|
|
|
Dim wertWD = aktivesDokument.GetVariableValue(idxname)
|
|
|
|
If wertWD Is Nothing = False Then
|
|
'Es wird gegen ein Vektorfeld nachindexiert
|
|
If wertWD.GetType.ToString.Contains("System.Object") Then
|
|
Select Case Typ
|
|
'Tabellendarstellung
|
|
Case "TABLE"
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPM_CONTROL_TABLE WHERE CONTROL_ID = " & CONTROL_ID)
|
|
Dim SpaltenWerte As String()
|
|
If dt.Rows.Count > 1 Then
|
|
For Each Zeile As Object In wertWD
|
|
SpaltenWerte = Split(Zeile, Delimiter)
|
|
Select Case dt.Rows.Count
|
|
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 "System.Windows.Forms.CheckBox"
|
|
controltype = "CheckBox"
|
|
If idxname = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & inctrl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If idxname Is Nothing = False Then
|
|
|
|
If LoadIDX = False Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexwert soll nicht geladen werden.", False)
|
|
Exit Select
|
|
End If
|
|
|
|
Dim chk As CheckBox = inctrl
|
|
|
|
Dim wertWD
|
|
If idxname.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
wertWD = ReturnVektor_IndexValue(idxname)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(idxname)
|
|
End If
|
|
|
|
If wertWD Is Nothing Then
|
|
ClassLogger.Add(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & indexname & "' ist nothing. Check defaultvalue", False)
|
|
chk.Checked = False
|
|
Else
|
|
If wertWD.ToString = "" Then
|
|
chk.Checked = False
|
|
Else
|
|
Dim _value
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CheckBoxValue with VektorField: " & idxname, False)
|
|
If wertWD.length = 1 Then
|
|
_value = wertWD(0)
|
|
Else '
|
|
ClassLogger.Add(" >> Vectorfield " & idxname & "' contains more then one value - First value will be used", False)
|
|
_value = wertWD(0)
|
|
End If
|
|
Else
|
|
_value = wertWD
|
|
End If
|
|
Try
|
|
Select Case CBool(_value)
|
|
Case True
|
|
chk.Checked = True
|
|
Case False
|
|
chk.Checked = False
|
|
Case Else
|
|
chk.Checked = False
|
|
End Select
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> 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 "System.Windows.Forms.DateTimePicker"
|
|
controltype = "DateTimePicker"
|
|
Dim DTP As DateTimePicker = inctrl
|
|
If idxname = "" Then
|
|
MsgBox("Achtung fehlerhafte Konfiguration:" & vbNewLine & "Für das Control " & inctrl.Name & " wurde KEIN INDEX hinterlegt!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
|
|
Exit For
|
|
End If
|
|
If idxname Is Nothing = False Then
|
|
Dim wertWD
|
|
Try
|
|
If idxname.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DATE über PM-Vektor holen", False)
|
|
wertWD = ReturnVektor_IndexValue(idxname)
|
|
ClassLogger.Add(">> DTP is """, False)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(idxname)
|
|
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)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DATE konnte umgewandelt werden", False)
|
|
Catch ex As Exception
|
|
ValueDTP = tempdate
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DATE wurde auf heute gesetzt", False)
|
|
End Try
|
|
DTP.Text = tempdate
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DATE ist leer", False)
|
|
ValueDTP = tempdate
|
|
DTP.Text = tempdate
|
|
End If
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei DTP: " & vbNewLine & ex.Message
|
|
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei FillIndex DTP: " & ex.Message & vbNewLine & "Wert WD: " & wertWD.ToString & vbNewLine & "Indexname: " & idxname, True)
|
|
frmError.ShowDialog()
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei FillIndex DTP: " & ex.Message, True)
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End If
|
|
'Case Else
|
|
' MsgBox(Type)
|
|
End Select
|
|
Next
|
|
set_foreground()
|
|
If first_control Is Nothing = False Then first_control.Focus()
|
|
'Flag setzen das Indexe geladen sind
|
|
_Indexe_Loaded = True
|
|
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
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei FillIndexValues:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei FillIndexValues: " & ex.Message, True)
|
|
ClassLogger.Add(">> Controltype: " & controltype, False)
|
|
ClassLogger.Add(">> Indexname windream: " & indexname, False)
|
|
|
|
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
Private Sub frmValidation_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
|
|
Refresh_FileList()
|
|
Load_Next_Document(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
|
|
If Viewer = "docview" Then
|
|
If aktivesDokument.aPath.EndsWith("pdf") = False Or vpdfviewer = "none" Then
|
|
If DocView Is Nothing = False Then
|
|
DocView.CloseView(aktivesDokument.aPath, 0)
|
|
End If
|
|
Else
|
|
If DocView Is Nothing = False Then
|
|
DocView.CloseView(aktivesDokument.aPath, 0)
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" ### FEHLER in CloseDocView")
|
|
ClassLogger.Add("### " & ex.Message & " ###")
|
|
End Try
|
|
|
|
End Sub
|
|
Sub Abschluss()
|
|
btnSave.Enabled = False
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Abschluss für Dok: " & aktivesDokument.aName & " gestartet", False)
|
|
'Eingaben auf Form überprüfen
|
|
If Check_UpdateIndexe() = False Then
|
|
'lblerror.Visible = False
|
|
Try
|
|
Dim _error As Boolean = False
|
|
Me.TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Fill(Me.DD_DMSLiteDataSet.TBPM_PROFILE_FINAL_INDEXING, CURRENT_ProfilName)
|
|
Dim dtfinal As DataTable = DD_DMSLiteDataSet.TBPM_PROFILE_FINAL_INDEXING
|
|
If dtfinal.Rows.Count > 0 Then
|
|
'Jetzt finale Indexe setzen
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Finale(r) Index(e) für Dok: " & aktivesDokument.aName & " soll gesetzt werden", False)
|
|
For Each dr As DataRow In dtfinal.Rows
|
|
Dim value As String = dr.Item("VALUE").ToString
|
|
If value.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ###
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexierung mit dynamischem SQL!", False)
|
|
Dim SQL_COMMAND = dr.Item("SQL_COMMAND")
|
|
' 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 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(SQL_COMMAND)
|
|
'####
|
|
' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
For Each element As System.Text.RegularExpressions.Match In elemente
|
|
Try
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False)
|
|
Dim WDINDEXNAME = element.Value.Substring(2, element.Value.Length - 3)
|
|
Dim wertWD = aktivesDokument.GetVariableValue(WDINDEXNAME)
|
|
If Not IsNothing(wertWD) Then
|
|
SQL_COMMAND = SQL_COMMAND.ToString.Replace(element.Value, wertWD)
|
|
Else
|
|
ClassLogger.Add(">> Achtung Indexwert ist nothing!", False)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result - ERROR: " & ex.Message)
|
|
End Try
|
|
Next
|
|
Dim dynamic_value = ClassDatabase.Execute_Scalar(SQL_COMMAND, MyConnectionString, True)
|
|
If Not IsNothing(dynamic_value) Then
|
|
value = dynamic_value
|
|
End If
|
|
Else
|
|
If value.StartsWith("v") Then
|
|
Select Case dr.Item("VALUE").ToString
|
|
Case "vDate"
|
|
value = Now.ToShortDateString
|
|
Case "vUserName"
|
|
value = Environment.UserName
|
|
Case Else
|
|
value = dr.Item("VALUE")
|
|
End Select
|
|
End If
|
|
End If
|
|
|
|
Dim result() As String
|
|
ReDim Preserve result(0)
|
|
result(0) = value
|
|
|
|
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(PM_String, PROFIL_VEKTORINDEX) = False Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> FINALER INDEX '" & dr.Item("INDEXNAME").ToString.Replace("[%VKT", "") & "' WURDE ERFOLGREICH GESETZT", False)
|
|
Else
|
|
My.Settings.errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
_error = True
|
|
End If
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Jetzt das indexieren", False)
|
|
If Indexiere_File(aktivesDokument, dr.Item("INDEXNAME"), result) = True Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> FINALER INDEX '" & dr.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT", False)
|
|
If LogErrorsOnly = False Then ClassLogger.Add("")
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
Dim logstr = Return_LOGString(value, "DDFINALINDEX", dr.Item("INDEXNAME"))
|
|
Indexiere_VektorfeldPM(logstr, PROFIL_LOGINDEX)
|
|
End If
|
|
|
|
Else
|
|
My.Settings.errormessage = "Fehler beim finalen Indexieren:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
_error = True
|
|
End If
|
|
End If
|
|
If _error = True Then
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
'Wenn kein Fehler nach der finalen Indexierung gesetzt wurde
|
|
If _error = False Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Tabelle updaten und co", False)
|
|
'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_ID)
|
|
ClassDatabase.Execute_non_Query(sql)
|
|
'TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", Document_ID)
|
|
''Das Dokument
|
|
'TBPM_PROFILE_FILESTableAdapter.CmdSetEdit(Document_ID)
|
|
|
|
Close_document_viewer()
|
|
|
|
|
|
'wenn Move2Folder aktiviert wurde
|
|
If Move2Folder <> "" Then
|
|
idxerr_message = allgFunk.Move2Folder(Document_Path, Move2Folder, CURRENT_ProfilGUID)
|
|
If idxerr_message <> "" Then
|
|
My.Settings.errormessage = "Fehler bei Move2Folder:" & vbNewLine & idxerr_message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
_error = True
|
|
End If
|
|
End If
|
|
'Validierungsfile löschen wenn vorhanden
|
|
allgFunk.Delete_xffres(Document_Path)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Delete_xffres ausgeführt", False)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> All Input clear", False)
|
|
Anzahl_validierte_Dok += 1
|
|
'tstrlbl_Info.Text = "Anzahl Dateien: " & TBPM_PROFILE_FILESTableAdapter.cmdGet_Anzahl(PROFIL_ID)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Anzahl hochgesetzt", False)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Validierung erfolgreich abgeschlossen", False)
|
|
ClassLogger.Add("", False)
|
|
|
|
'Das nächste Dokument laden
|
|
Load_Next_Document(False)
|
|
|
|
set_foreground()
|
|
If first_control Is Nothing = False Then first_control.Focus()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
My.Settings.errormessage = "Unvorhergesehener Fehler bei Abschluss:" & ex.Message
|
|
My.Settings.Save()
|
|
frmError.ShowDialog()
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei Abschluss: " & ex.Message, True)
|
|
End Try
|
|
Else
|
|
'lblerror.Visible = True
|
|
'lblerror.Text = errmessage
|
|
My.Settings.errormessage = errmessage
|
|
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
|
|
ClassLogger.Add(">> 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
|
|
ClassLogger.Add(">> 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)
|
|
|
|
Dim missing As Boolean = False
|
|
Dim Anzahl As Integer = 0
|
|
Dim myInputArr As String()
|
|
'Jeden Wert des Vektorfeldes durchlaufen
|
|
Dim wertWD = aktivesDokument.GetVariableValue(NameVKTIndex)
|
|
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
|
|
'Das Array anpassen
|
|
ReDim Preserve myInputArr(Anzahl)
|
|
'Den Wert im Array speichern
|
|
myInputArr(Anzahl) = obj.ToString
|
|
Anzahl += 1
|
|
End If
|
|
Next
|
|
End If
|
|
'Das Array anpassen
|
|
ReDim Preserve myInputArr(Anzahl)
|
|
'und den letzten Wert übergeben
|
|
myInputArr(Anzahl) = input
|
|
Else
|
|
'Das Array anpassen
|
|
ReDim Preserve myInputArr(Anzahl)
|
|
'und den letzten Wert übergeben
|
|
myInputArr(Anzahl) = input
|
|
End If
|
|
|
|
If myInputArr.Length > 0 Then
|
|
'Jetzt die Datei indexieren
|
|
If Indexiere_File(aktivesDokument, NameVKTIndex, myInputArr) = False Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message
|
|
End If
|
|
End If
|
|
|
|
Return missing
|
|
End Function
|
|
Function Check_UpdateIndexe()
|
|
Try
|
|
Dim dt As DataTable = DD_DMSLiteDataSet.VWPM_CONTROL_INDEX
|
|
Dim missing As Boolean = False
|
|
'Jedes Control auf panel durchlaufen
|
|
For Each inctrl 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" Then
|
|
Continue For
|
|
End If
|
|
'Den Indexnamen auslesen
|
|
Dim _IDXName As String = dr.Item("INDEX_NAME")
|
|
Dim _MUSSEINGABE As Boolean = CBool(dr.Item("VALIDATION"))
|
|
Dim _READ_ONLY As Boolean = CBool(dr.Item("READ_ONLY"))
|
|
Dim Typ As String = dr.Item("CTRL_TYPE")
|
|
Dim CONTROL_ID As String = dr.Item("GUID")
|
|
Dim ctrl = dr.Item("CTRL_NAME")
|
|
'Nur wenn der Name der Zeile entspricht und der Index READ_ONLY FALSE ist
|
|
If dr.Item("CTRL_NAME") = inctrl.Name And (_READ_ONLY = False Or dr.Item("SQL_UEBERPRUEFUNG") <> "") And _IDXName <> "DD PM-ONLY FOR DISPLAY" Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexierung für Control (" & CONTROL_ID & ") '" & ctrl & "' gestartet. Indexname '" & _IDXName & "'", False)
|
|
If _IDXName = "" Then
|
|
ClassLogger.Add(" >> Indexname is unexpected empty.", False)
|
|
Continue For
|
|
End If
|
|
Dim Type As String = inctrl.GetType.ToString
|
|
Select Case Type
|
|
Case "System.Windows.Forms.TextBox"
|
|
Try
|
|
'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist
|
|
If Check_Missing(inctrl, "txt") = True And _MUSSEINGABE = True Then 'NICHTS EINGETRAGEN
|
|
missing = True
|
|
errmessage = "Missing input in textbox '" & inctrl.Name & "'"
|
|
inctrl.BackColor = Color.Red
|
|
Exit For
|
|
Else
|
|
input = inctrl.Text
|
|
'den aktuellen Wert in windream auslesen
|
|
Dim wertWD
|
|
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(_IDXName)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(_IDXName)
|
|
If Not IsNothing(wertWD) Then
|
|
If wertWD.ToString = "System.Object[]" Then
|
|
If wertWD.Length = 1 Then
|
|
wertWD = wertWD(0)
|
|
Else '
|
|
ClassLogger.Add(" >> Vectorfield " & _IDXName & "' contains more then one value - First value will be used", False)
|
|
wertWD = wertWD(0)
|
|
End If
|
|
End If
|
|
Else
|
|
wertWD = ""
|
|
End If
|
|
End If
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If IsNothing(wertWD) Or wertWD <> input Then
|
|
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
input = Return_PM_VEKTOR(input, _IDXName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Textbox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
Dim result() As String
|
|
ReDim Preserve result(0)
|
|
result(0) = input
|
|
If Indexiere_File(aktivesDokument, _IDXName, result) = False Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Textbox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, _IDXName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
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:")
|
|
ClassLogger.Add("Unvorhergesehener Fehler in Check_UpdateIndexe:" & ex.Message & " - Line: " & st.GetFrame(0).GetFileLineNumber().ToString, True)
|
|
Return True
|
|
End Try
|
|
|
|
Case "System.Windows.Forms.ComboBox"
|
|
Dim cmb As ComboBox = inctrl
|
|
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
|
If cmb.SelectedIndex = -1 And _MUSSEINGABE = True Then
|
|
missing = True
|
|
errmessage = "Please Choose an entry out of ComboBox '" & cmb.Name & "'"
|
|
Exit For
|
|
ElseIf cmb.SelectedIndex <> -1 Then
|
|
input = cmb.Text
|
|
Dim wertWD As String
|
|
'den aktuellen Wert in windream auslesen
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(_IDXName)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(_IDXName)
|
|
End If
|
|
|
|
'wenn Wert in Windream <> der Eingabe darf indexiert werden
|
|
If wertWD <> input Then
|
|
'Wenn der Wert in ein Vektorfeld geschrieben wird
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
input = Return_PM_VEKTOR(input, _IDXName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren 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(aktivesDokument, _IDXName, result) = False Then
|
|
cmb.DroppedDown = True
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Combobox - ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, _IDXName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Case "System.Windows.Forms.DateTimePicker"
|
|
Dim dtp As DateTimePicker = inctrl
|
|
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
|
|
If _MUSSEINGABE = True And dtp.Value.ToString = String.Empty Then
|
|
missing = True
|
|
errmessage = "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 = aktivesDokument.GetVariableValue(_IDXName)
|
|
Dim wertWD As String
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
wertWD = ReturnVektor_IndexValue(_IDXName)
|
|
Else
|
|
wertWD = aktivesDokument.GetVariableValue(_IDXName)
|
|
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 _IDXName.StartsWith("[%VKT") Then
|
|
'Input = die String komponente als String
|
|
input = Return_PM_VEKTOR(input, _IDXName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren 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(aktivesDokument, _IDXName, result) = False Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren DatePicker- ERROR: " & idxerr_message
|
|
Exit For
|
|
Else
|
|
'Nun das Logging
|
|
If PROFIL_LOGINDEX <> "" Then
|
|
input = Return_LOGString(input, wertWD, _IDXName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Value WD ('" & wertWD.ToString & "') = Input-value ('" & input.ToString & "')", False)
|
|
|
|
End If
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> DateValue is 01.01.0001 00:00:00", False)
|
|
End If
|
|
Case "System.Windows.Forms.CheckBox"
|
|
Dim chk As CheckBox = inctrl
|
|
input = chk.Checked.ToString
|
|
'den aktuellen Wert in windream auslesen
|
|
Dim WertWD As String
|
|
Dim Bool_WD As Boolean
|
|
If _IDXName.StartsWith("[%VKT") Then
|
|
WertWD = ReturnVektor_IndexValue(_IDXName)
|
|
If WertWD = "" Then
|
|
Bool_WD = False
|
|
Else
|
|
Bool_WD = CBool(WertWD)
|
|
End If
|
|
Else
|
|
Dim _Value
|
|
Dim ValueWD = aktivesDokument.GetVariableValue(_IDXName)
|
|
If IsNothing(ValueWD) Then
|
|
Bool_WD = False
|
|
Else
|
|
If ValueWD.ToString = "System.Object[]" Then
|
|
If ValueWD.Length = 1 Then
|
|
_Value = ValueWD(0)
|
|
Else '
|
|
ClassLogger.Add(" >> Vectorfield " & _IDXName & "' contains more then one value - First value will be used", False)
|
|
_Value = ValueWD(0)
|
|
End If
|
|
Else
|
|
_Value = ValueWD
|
|
End If
|
|
Bool_WD = CBool(_Value)
|
|
End If
|
|
|
|
End If
|
|
|
|
' Dim Bool_WD = CBool(aktivesDokument.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 _IDXName.StartsWith("[%VKT") Then
|
|
'Input = die String komponente mit Boolean als String
|
|
input = Return_PM_VEKTOR(chk.Checked.ToString, _IDXName)
|
|
'Hier muss nun separat als Vektorfeld indexiert werden
|
|
If Indexiere_VektorfeldPM(input, PROFIL_VEKTORINDEX) = True Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Checkbox als VEKTOR - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
Else
|
|
If Indexiere_File(aktivesDokument, _IDXName, result) = False Then
|
|
missing = True
|
|
errmessage = "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, _IDXName)
|
|
Indexiere_VektorfeldPM(input, PROFIL_LOGINDEX)
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
Case "System.Windows.Forms.DataGridView"
|
|
Dim dgv As DataGridView = inctrl
|
|
|
|
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 _MUSSEINGABE = True And Zeilen = 0 Then
|
|
missing = True
|
|
errmessage = "Missing input in vectorfield'" & 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 Typ
|
|
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(aktivesDokument, _IDXName, myVektorArr) = False Then
|
|
missing = True
|
|
errmessage = "Fehler beim Indexieren Vektorfeld - ERROR: " & idxerr_message
|
|
Exit For
|
|
End If
|
|
End If
|
|
End Select
|
|
End If 'End If für Control und ReadOnly = False
|
|
Next
|
|
Next
|
|
|
|
Return missing
|
|
|
|
Catch ex As Exception
|
|
Dim st As New StackTrace(True)
|
|
st = New StackTrace(ex, True)
|
|
MsgBox("Unvorhergesehener Fehler in Check_UpdateIndexe: " & vbNewLine & ex.Message & vbNewLine & "Line: " & st.GetFrame(0).GetFileLineNumber().ToString, MsgBoxStyle.Critical, "Error:")
|
|
ClassLogger.Add("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)
|
|
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
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexing Index '" & idxxname & "' with Arrayvalue", False)
|
|
Dim anzahl As Integer = 0
|
|
For Each indexvalue As String In idxvalue
|
|
ReDim Preserve arrValue(anzahl)
|
|
arrValue(anzahl) = indexvalue
|
|
anzahl += 1
|
|
Next
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexing Index '" & idxxname & "' with value '" & idxvalue(0) & "'", False)
|
|
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)
|
|
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
|
|
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
|
|
ClassLogger.Add(">> Unvorhergesehener Fehler bei Indexiere_File: " & ex.Message.ToString, True)
|
|
Return Err()
|
|
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.TBPM_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
|
|
ClassLogger.Add(" - ConnectionType '" & drConnection.Item("SQL_PROVIDER") & "' nicht integriert", False)
|
|
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
|
|
ClassLogger.Add(" - 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) Handles btnNavigatornext.MouseDown
|
|
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
|
|
|
|
Private Sub DateiÖffnenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles DateiÖffnenToolStripMenuItem.Click
|
|
Try
|
|
Dim Proc As New System.Diagnostics.Process
|
|
Dim psi As New ProcessStartInfo(Document_Path)
|
|
Proc.EnableRaisingEvents = True
|
|
Proc.StartInfo = psi
|
|
Proc.Start()
|
|
ClassLogger.Add(" - Datei wurde geöffnet!", False)
|
|
Catch ex As Exception
|
|
MsgBox("Fehler bei Datei öffnen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
ClassLogger.Add("Fehler bei Datei öffnen: " & ex.Message, True)
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub btnNavigatornext_Click(sender As System.Object, e As System.EventArgs) Handles btnNavigatornext.Click
|
|
Try
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Dokument überspringen", False)
|
|
Close_document_viewer()
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Doc Viewer geschlossen", False)
|
|
'Das Dokument freigeben
|
|
TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", CURRENT_DOC_ID)
|
|
TBPM_FILES_USER_NOT_INDEXEDTableAdapter.cmdInsert(Environment.UserName, CURRENT_ProfilGUID, Document_Path)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Dokument freigegeben", False)
|
|
ClassLogger.Add("", False)
|
|
Load_Next_Document(False)
|
|
Catch ex As Exception
|
|
MsgBox("Fehler bei Überspringen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click
|
|
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_ID)
|
|
Dim resul = allgFunk.Delete_xffres(Document_Path)
|
|
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
|
|
MsgBox("Fehler bei Löschen windream-Datei:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
Private Function Delete_File()
|
|
Try
|
|
If aktivesDokument Is Nothing = False Then
|
|
Close_document_viewer()
|
|
Me.PdfViewer1.DocumentFilePath = ""
|
|
Try
|
|
If aktivesDokument.aLocked Then
|
|
' unlock the windream object
|
|
aktivesDokument.unlock()
|
|
End If
|
|
aktivesDokument.Delete()
|
|
ClassLogger.Add(">> Manuelles Löschen: Datei " & aktivesDokument.aName & " erfolgreich gelöscht", False)
|
|
Return True
|
|
Catch ex As Exception
|
|
MsgBox("Das windream-Objekt konnte nicht gelöscht werden!" & vbNewLine & vbNewLine & "Fehlermeldung:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
ClassLogger.Add(" windream-Objekt konnte nicht gelöscht werden - Fehlermeldung: " & ex.Message, True)
|
|
Return False
|
|
End Try
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" Fehler bei Delete_File", True)
|
|
ClassLogger.Add(">> Fehlermeldung: " & ex.Message, False)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Private Const SEE_MASK_INVOKEIDLIST = &HC
|
|
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
|
|
Private Const SEE_MASK_FLAG_NO_UI = &H400
|
|
Public Const SW_SHOW As Short = 5
|
|
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)> _
|
|
Public Shared Function ShellExecuteEx(ByRef lpExecInfo As SHELLEXECUTEINFO) As Boolean
|
|
End Function
|
|
Public Structure SHELLEXECUTEINFO
|
|
Public cbSize As Integer
|
|
Public fMask As Integer
|
|
Public hwnd As IntPtr
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpVerb As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpFile As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpParameters As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpDirectory As String
|
|
Dim nShow As Integer
|
|
Dim hInstApp As IntPtr
|
|
Dim lpIDList As IntPtr
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpClass As String
|
|
Public hkeyClass As IntPtr
|
|
Public dwHotKey As Integer
|
|
Public hIcon As IntPtr
|
|
Public hProcess As IntPtr
|
|
End Structure
|
|
|
|
Private Sub DateieigenschaftenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateieigenschaftenToolStripMenuItem.Click
|
|
If Document_Path <> "" Then
|
|
Cursor = Cursors.WaitCursor
|
|
Dim sei As New SHELLEXECUTEINFO
|
|
sei.cbSize = Marshal.SizeOf(sei)
|
|
sei.lpVerb = "properties"
|
|
sei.lpFile = Document_Path
|
|
sei.nShow = SW_SHOW
|
|
sei.fMask = SEE_MASK_INVOKEIDLIST
|
|
If Not ShellExecuteEx(sei) 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 frmValidation_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd
|
|
If Document_Path Is Nothing = False Then
|
|
Select Case Path.GetExtension(Document_Path).ToLower
|
|
Case ".pdf"
|
|
Select Case vpdfviewer
|
|
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
|
|
|
|
End Try
|
|
End Sub
|
|
Private Sub MinimumToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
PdfViewer1.ZoomFactor = 20
|
|
End Sub
|
|
|
|
Private Sub PdfViewer1_ZoomChanged_1(sender As Object, e As DevExpress.XtraPdfViewer.PdfZoomChangedEventArgs) Handles PdfViewer1.ZoomChanged
|
|
If Not PdfViewer1.ZoomMode = DevExpress.XtraPdfViewer.PdfZoomMode.Custom Then
|
|
SaveMySettingsValue("PDFViewer_ZoomMode", PdfViewer1.ZoomMode)
|
|
PDFViewer_ZoomMode = PdfViewer1.ZoomMode
|
|
End If
|
|
|
|
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
|
|
End If
|
|
End Sub
|
|
End Class |