From 603ff5cd68996f7181cb0e8deff1530e42e33104 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 30 May 2018 16:31:03 +0200 Subject: [PATCH] jj: Add & Use ClassPatterns --- .../ClassAllgemeineFunktionen.vb | 4 +- app/DD_PM_WINDREAM/ClassInit.vb | 48 +- app/DD_PM_WINDREAM/ClassPatterns.vb | 262 +++++++ app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj | 1 + app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb | 7 +- .../frmSQL_DESIGNER.Designer.vb | 120 ++- app/DD_PM_WINDREAM/frmSQL_DESIGNER.resx | 16 + app/DD_PM_WINDREAM/frmSQL_DESIGNER.vb | 104 ++- app/DD_PM_WINDREAM/frmValidator.vb | 719 ++++++------------ 9 files changed, 715 insertions(+), 566 deletions(-) create mode 100644 app/DD_PM_WINDREAM/ClassPatterns.vb diff --git a/app/DD_PM_WINDREAM/ClassAllgemeineFunktionen.vb b/app/DD_PM_WINDREAM/ClassAllgemeineFunktionen.vb index 7655929..2406aea 100644 --- a/app/DD_PM_WINDREAM/ClassAllgemeineFunktionen.vb +++ b/app/DD_PM_WINDREAM/ClassAllgemeineFunktionen.vb @@ -8,9 +8,9 @@ Public Class ClassAllgemeineFunktionen Try Dim Sql As String If LoginOut = "LOGIN" Then - Sql = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME) VALUES ({0},{1},'Process-Manager','{2}','{3}')", CURRENT_USERID, 1, My.Application.Info.Version.ToString, Environment.MachineName) + Sql = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME) VALUES ({0},{1},'Process-Manager','{2}','{3}')", CURRENT_USER_ID, 1, My.Application.Info.Version.ToString, Environment.MachineName) Else - Sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & CURRENT_USERID & " AND UPPER(MODULE) = UPPER('Process-Manager')" + Sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & CURRENT_USER_ID & " AND UPPER(MODULE) = UPPER('Process-Manager')" End If If ClassDatabase.Execute_non_Query(Sql, True) = True Then If LogErrorsOnly = False Then ClassLogger.Add(" >> User logged in....", False) diff --git a/app/DD_PM_WINDREAM/ClassInit.vb b/app/DD_PM_WINDREAM/ClassInit.vb index f9965d6..4ea9370 100644 --- a/app/DD_PM_WINDREAM/ClassInit.vb +++ b/app/DD_PM_WINDREAM/ClassInit.vb @@ -80,13 +80,17 @@ Public Class ClassInit Public Sub InitUserLogin() Try USER_USERNAME = Environment.UserName - Dim sql = String.Format("SELECT MAX(GUID) FROM TBDD_USER WHERE LOWER(USERNAME) = LOWER('{0}')", Environment.UserName) + Dim sql = String.Format("SELECT * FROM TBDD_USER WHERE LOWER(USERNAME) = LOWER('{0}')", Environment.UserName) ClassLogger.Add(">> Username: " & USER_USERNAME, False) - CURRENT_USERID = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) + Dim dt As DataTable = ClassDatabase.Return_Datatable(sql) + CURRENT_USER_ID = dt.Rows(0).Item("GUID") + CURRENT_USER_SURNAME = dt.Rows(0).Item("NAME") + CURRENT_USER_PRENAME = dt.Rows(0).Item("PRENAME") + CURRENT_USER_SHORTNAME = dt.Rows(0).Item("SHORTNAME") + CURRENT_USER_EMAIL = dt.Rows(0).Item("EMAIL") - - If IsDBNull(CURRENT_USERID) Or IsNothing(CURRENT_USERID) Then + If IsDBNull(CURRENT_USER_ID) Or IsNothing(CURRENT_USER_ID) Then USER_EXISTS = False Else USER_EXISTS = True @@ -105,21 +109,21 @@ Public Class ClassInit Check_User_Exists_in_PMGroups() ClassAllgemeineFunktionen.LoginOut("LOGIN") - sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Process-Manager') AND CLIENT_ID = {0}", 1) - USERCOUNT_LOGGED_IN = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) - - If LogErrorsOnly = False Then ClassLogger.Add(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False) - If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then - MsgBox("Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") - ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Process Manager!", False) - If USER_IS_ADMIN = False Then - ClassAllgemeineFunktionen.LoginOut("LOGOUT") - ClassLogger.Add(" - Wieder abgemeldet - START INCOMPLETE", False) - ERROR_STATE = "START INCOMPLETE" - End If + sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Process-Manager') AND CLIENT_ID = {0}", 1) + USERCOUNT_LOGGED_IN = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) + + If LogErrorsOnly = False Then ClassLogger.Add(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False) + If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then + MsgBox("Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") + ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Process Manager!", False) + If USER_IS_ADMIN = False Then + ClassAllgemeineFunktionen.LoginOut("LOGOUT") + ClassLogger.Add(" - Wieder abgemeldet - START INCOMPLETE", False) + ERROR_STATE = "START INCOMPLETE" End If - 'Alles OK bis hierhin...nun die FolderwatchKonfig laden - If LogErrorsOnly = False Then ClassLogger.Add(" >> Init Userlogin successfull completed....", False) + End If + 'Alles OK bis hierhin...nun die FolderwatchKonfig laden + If LogErrorsOnly = False Then ClassLogger.Add(" >> Init Userlogin successfull completed....", False) End If @@ -142,7 +146,7 @@ Public Class ClassInit End Sub Private Function Check_User_Exists_in_Group(ByVal Groupname As String) Try - Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = '{1}'", CURRENT_USERID, Groupname) + Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = '{1}'", CURRENT_USER_ID, Groupname) Dim DT As DataTable = ClassDatabase.Return_Datatable(sel) If Not IsNothing(DT) Then If DT.Rows.Count = 1 Then @@ -160,14 +164,14 @@ Public Class ClassInit End Function Private Function Check_User_Exists_in_PMGroups() Try - Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_USER'", CURRENT_USERID) + Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_USER'", CURRENT_USER_ID) Dim DT As DataTable = ClassDatabase.Return_Datatable(sel) If Not IsNothing(DT) Then If DT.Rows.Count = 1 Then If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_USER-Group....", False) USER_IN_MODULE = True Else - sel = String.Format("select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = {0} AND T.MODULE_ID = 3", CURRENT_USERID) + sel = String.Format("select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = {0} AND T.MODULE_ID = 3", CURRENT_USER_ID) DT = ClassDatabase.Return_Datatable(sel) If Not IsNothing(DT) Then If DT.Rows.Count = 1 Then @@ -177,7 +181,7 @@ Public Class ClassInit End If End If End If - sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_ADMINS'", CURRENT_USERID) + sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_ADMINS'", CURRENT_USER_ID) DT = ClassDatabase.Return_Datatable(sel) If Not IsNothing(DT) Then diff --git a/app/DD_PM_WINDREAM/ClassPatterns.vb b/app/DD_PM_WINDREAM/ClassPatterns.vb new file mode 100644 index 0000000..c85457d --- /dev/null +++ b/app/DD_PM_WINDREAM/ClassPatterns.vb @@ -0,0 +1,262 @@ +Imports System.Text.RegularExpressions +Imports WINDREAMLib + +''' +''' Defines common Functions for Checking for and replacing placeholders. +''' This Class also includes a child class `Pattern` for passing around Patterns. +''' +''' The format of all placeholders is: +''' {#TYPE#VALUE} +''' +''' Some Examples: +''' {#INT#USERNAME} +''' {#CTRL#CMB_2} +''' {#WMI#String 39} +''' +Public Class ClassPatterns + ' Complex patterns that rely on a datasource like a Database or Windream + Public Const PATTERN_WMI = "WMI" + Public Const PATTERN_CTRL = "CTRL" + ' Simple patterns that only rely on .NET functions + Public Const PATTERN_INT = "INT" + ' Simple patterns that rely on Data from the TBDD_USER table + Public Const PATTERN_USER = "USER" + + Public Const USER_VALUE_PRENAME = "PRENAME" + Public Const USER_VALUE_SURNAME = "SURNAME" + Public Const USER_VALUE_EMAIL = "EMAIL" + Public Const USER_VALUE_SHORTNAME = "SHORTNAME" + + Public Const INT_VALUE_USERNAME = "USERNAME" + Public Const INT_VALUE_MACHINE = "MACHINE" + Public Const INT_VALUE_DOMAIN = "DOMAIN" + + Private Shared regex As Regex = New Regex("{#(\w+)#([\w\s_]+)}+") + Private Shared allPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_USER, PATTERN_INT} + Private Shared complexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL} + Private Shared simplePatterns As New List(Of String) From {PATTERN_USER, PATTERN_INT} + + ''' + ''' Wraps a pattern-type and -value in the common format: {#type#value} + ''' + Public Shared Function WrapPatternValue(type As String, value As String) As String + Return New Pattern(type, value).ToString + End Function + + + Public Shared Function ReplaceAllValues(input As String, panel As Panel, document As WMObject, prename As String, surname As String, shortname As String, email As String) As String + Dim result = input + + result = ReplaceInternalValues(result) + result = ReplaceControlValues(result, panel) + result = ReplaceWindreamIndicies(result, document) + result = ReplaceUserValues(result, prename, surname, shortname, email) + + Return result + End Function + + Public Shared Function ReplaceInternalValues(input As String) As String + Dim result = input + + ' Replace Username(s) + While ContainsPatternAndValue(result, PATTERN_INT, INT_VALUE_USERNAME) + result = ReplacePattern(result, PATTERN_INT, Environment.UserName) + End While + + ' Replace Machinename(s) + While ContainsPatternAndValue(result, PATTERN_INT, INT_VALUE_MACHINE) + result = ReplacePattern(result, PATTERN_INT, Environment.MachineName) + End While + + ' Replace Domainname(s) + While ContainsPatternAndValue(result, PATTERN_INT, INT_VALUE_DOMAIN) + result = ReplacePattern(result, PATTERN_INT, Environment.UserDomainName) + End While + + Return result + End Function + + Public Shared Function ReplaceUserValues(input As String, prename As String, surname As String, shortname As String, email As String) As String + Dim result = input + + While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_PRENAME) + result = ReplacePattern(input, PATTERN_USER, prename) + End While + + While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_SURNAME) + result = ReplacePattern(input, PATTERN_USER, surname) + End While + + While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_SHORTNAME) + result = ReplacePattern(input, PATTERN_USER, shortname) + End While + + While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_EMAIL) + result = ReplacePattern(input, PATTERN_USER, email) + End While + + Return result + End Function + + + Public Shared Function ReplaceControlValues(input As String, panel As Panel) As String + Dim result = input + + While ContainsPattern(result, PATTERN_CTRL) + Dim controlName As String = GetNextPattern(result, PATTERN_CTRL).Value + Dim control As Control = panel.Controls.Find(controlName, False).FirstOrDefault() + + If control IsNot Nothing Then + Dim value As String = control.Text + result = ReplacePattern(result, PATTERN_CTRL, value) + End If + End While + + Return result + End Function + + Public Shared Function ReplaceWindreamIndicies(input As String, document As WMObject) As String + Dim result = input + + While ContainsPattern(result, PATTERN_WMI) + Dim indexName As String = GetNextPattern(result, PATTERN_WMI).Value + Dim value = document.GetVariableValue(indexName) + + If value IsNot Nothing Then + result = ReplacePattern(result, PATTERN_WMI, value) + End If + End While + + Return result + End Function + + Private Shared Function ContainsPattern(input As String, type As String) As String + Dim elements As MatchCollection = regex.Matches(input) + + For Each element As Match In elements + Dim t As String = element.Groups(1).Value + + If t = type Then + Return True + End If + Next + + Return False + End Function + + Public Shared Function GetNextPattern(input As String, type As String) As Pattern + Dim elements As MatchCollection = regex.Matches(input) + + For Each element As Match In elements + ' Pattern in input + Dim t As String = element.Groups(1).Value + Dim v As String = element.Groups(2).Value + + If t = type Then + Return New Pattern(t, v) + End If + Next + + Return Nothing + End Function + + Public Shared Function GetAllPatterns(input As String) As List(Of Pattern) + Dim elements As MatchCollection = regex.Matches(input) + Dim results As New List(Of Pattern) + + For Each element As Match In elements + ' Pattern in input + Dim t As String = element.Groups(1).Value + Dim v As String = element.Groups(2).Value + + results.Add(New Pattern(t, v)) + Next + + Return results + End Function + + Public Shared Function ReplacePattern(input As String, type As String, replacement As String) As String + Dim elements As MatchCollection = regex.Matches(input) + + If IsNothing(replacement) Or replacement = String.Empty Then + Return input + End If + + For Each element As Match In elements + ' if group 1 contains the 'pattern' the replace whole group with 'replacement' + ' and return it + If element.Groups(1).Value = type Then + Return Regex.Replace(input, element.Groups(0).Value, replacement) + End If + Next + + ' no replacement made + Return input + End Function + + Private Shared Function ContainsPatternAndValue(input As String, type As String, value As String) As Boolean + Dim elements As MatchCollection = regex.Matches(input) + + For Each element As Match In elements + ' Pattern in input + Dim t As String = element.Groups(1).Value + Dim v As String = element.Groups(2).Value + + If t = type And v = value Then + Return True + End If + Next + + Return False + End Function + + Public Shared Function HasAnyPatterns(input) As Boolean + Return allPatterns.Any(Function(p) + Return HasPattern(input, p) + End Function) + End Function + + Public Shared Function HasOnlySimplePatterns(input As String) As Boolean + Return Not HasComplexPatterns(input) + End Function + + Public Shared Function HasComplexPatterns(input As String) As Boolean + Return complexPatterns.Any(Function(p) + Return HasPattern(input, p) + End Function) + End Function + + Public Shared Function HasPattern(input As String, type As String) As Boolean + Dim matches = regex.Matches(input) + + For Each match As Match In matches + For Each group As Group In match.Groups + If group.Value = type Then + Return True + End If + Next + Next + + Return False + End Function + + Public Class Pattern + Public ReadOnly Property Type As String + Public ReadOnly Property Value As String + + Public Sub New(type As String, value As String) + Me.Type = type + Me.Value = value + End Sub + + Public Sub New(stringRepresentation As String) + Dim array = stringRepresentation.Split("#") + Me.Type = array(0) + Me.Value = array(1) + End Sub + + Public Overrides Function ToString() As String + Return $"{Type}#{Value}" + End Function + End Class +End Class \ No newline at end of file diff --git a/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj b/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj index 0bbc33e..33a2271 100644 --- a/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj +++ b/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj @@ -157,6 +157,7 @@ + frmAbout.vb diff --git a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb index fd42427..d96bcf5 100644 --- a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb +++ b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb @@ -15,7 +15,12 @@ Public USER_USERNAME As String Public DT_USER2MODULE As DataTable - Public CURRENT_USERID + Public CURRENT_USER_ID + Public CURRENT_USER_PRENAME + Public CURRENT_USER_SURNAME + Public CURRENT_USER_SHORTNAME + Public CURRENT_USER_EMAIL + Public USER_EXISTS = False Public USER_IN_MODULE = False Public LICENSE_COUNT As Integer = 0 diff --git a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.Designer.vb b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.Designer.vb index 11290a8..5e6779d 100644 --- a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.Designer.vb +++ b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.Designer.vb @@ -52,6 +52,12 @@ Partial Class frmSQL_DESIGNER Me.btnAddControl = New System.Windows.Forms.Button() Me.lblControls = New System.Windows.Forms.Label() Me.cmbControls = New System.Windows.Forms.ComboBox() + Me.cmbStatic = New System.Windows.Forms.ComboBox() + Me.btnAddStatic = New System.Windows.Forms.Button() + Me.Label2 = New System.Windows.Forms.Label() + Me.cmbUser = New System.Windows.Forms.ComboBox() + Me.Label3 = New System.Windows.Forms.Label() + Me.btnAddUser = New System.Windows.Forms.Button() CType(Me.DD_DMSLiteDataSet, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TBPM_PROFILE_FINAL_INDEXINGBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TBDD_CONNECTIONBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() @@ -103,7 +109,7 @@ Partial Class frmSQL_DESIGNER Me.btnShowConnections.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnShowConnections.Image = Global.DD_PM_WINDREAM.My.Resources.Resources.database_go1 Me.btnShowConnections.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnShowConnections.Location = New System.Drawing.Point(220, 28) + Me.btnShowConnections.Location = New System.Drawing.Point(220, 31) Me.btnShowConnections.Name = "btnShowConnections" Me.btnShowConnections.Size = New System.Drawing.Size(111, 24) Me.btnShowConnections.TabIndex = 82 @@ -128,7 +134,7 @@ Partial Class frmSQL_DESIGNER Me.cmbConnection.DisplayMember = "BEZEICHNUNG" Me.cmbConnection.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cmbConnection.FormattingEnabled = True - Me.cmbConnection.Location = New System.Drawing.Point(14, 28) + Me.cmbConnection.Location = New System.Drawing.Point(12, 31) Me.cmbConnection.Name = "cmbConnection" Me.cmbConnection.Size = New System.Drawing.Size(200, 24) Me.cmbConnection.TabIndex = 80 @@ -141,17 +147,17 @@ Partial Class frmSQL_DESIGNER Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.SQL_COMMANDTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.TBPM_PROFILE_FINAL_INDEXINGBindingSource, "SQL_COMMAND", True)) Me.SQL_COMMANDTextBox.Font = New System.Drawing.Font("Courier New", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.SQL_COMMANDTextBox.Location = New System.Drawing.Point(15, 76) + Me.SQL_COMMANDTextBox.Location = New System.Drawing.Point(15, 125) Me.SQL_COMMANDTextBox.Multiline = True Me.SQL_COMMANDTextBox.Name = "SQL_COMMANDTextBox" Me.SQL_COMMANDTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.SQL_COMMANDTextBox.Size = New System.Drawing.Size(896, 237) + Me.SQL_COMMANDTextBox.Size = New System.Drawing.Size(905, 186) Me.SQL_COMMANDTextBox.TabIndex = 86 ' 'Label4 ' Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(11, 57) + Me.Label4.Location = New System.Drawing.Point(9, 109) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(81, 13) Me.Label4.TabIndex = 85 @@ -163,7 +169,7 @@ Partial Class frmSQL_DESIGNER Me.Label1.AutoSize = True Me.Label1.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.Label1.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label1.Location = New System.Drawing.Point(15, 316) + Me.Label1.Location = New System.Drawing.Point(13, 331) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(65, 15) Me.Label1.TabIndex = 91 @@ -175,7 +181,7 @@ Partial Class frmSQL_DESIGNER Me.Label5.AutoSize = True Me.Label5.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.Label5.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label5.Location = New System.Drawing.Point(366, 335) + Me.Label5.Location = New System.Drawing.Point(365, 331) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(55, 15) Me.Label5.TabIndex = 90 @@ -190,10 +196,10 @@ Partial Class frmSQL_DESIGNER Me.dgvResult.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.dgvResult.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - Me.dgvResult.Location = New System.Drawing.Point(368, 351) + Me.dgvResult.Location = New System.Drawing.Point(368, 349) Me.dgvResult.Name = "dgvResult" Me.dgvResult.ReadOnly = True - Me.dgvResult.Size = New System.Drawing.Size(543, 134) + Me.dgvResult.Size = New System.Drawing.Size(552, 134) Me.dgvResult.TabIndex = 89 ' 'dgvPlaceholders @@ -206,9 +212,9 @@ Partial Class frmSQL_DESIGNER Me.dgvPlaceholders.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.dgvPlaceholders.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.colPlaceholder, Me.colReplace}) Me.dgvPlaceholders.Enabled = False - Me.dgvPlaceholders.Location = New System.Drawing.Point(16, 334) + Me.dgvPlaceholders.Location = New System.Drawing.Point(16, 349) Me.dgvPlaceholders.Name = "dgvPlaceholders" - Me.dgvPlaceholders.Size = New System.Drawing.Size(338, 150) + Me.dgvPlaceholders.Size = New System.Drawing.Size(338, 133) Me.dgvPlaceholders.TabIndex = 88 ' 'colPlaceholder @@ -229,7 +235,7 @@ Partial Class frmSQL_DESIGNER Me.btnTestSQL.Image = CType(resources.GetObject("btnTestSQL.Image"), System.Drawing.Image) Me.btnTestSQL.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnTestSQL.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnTestSQL.Location = New System.Drawing.Point(743, 316) + Me.btnTestSQL.Location = New System.Drawing.Point(752, 314) Me.btnTestSQL.Name = "btnTestSQL" Me.btnTestSQL.Size = New System.Drawing.Size(168, 29) Me.btnTestSQL.TabIndex = 87 @@ -241,16 +247,16 @@ Partial Class frmSQL_DESIGNER ' Me.Label15.AutoSize = True Me.Label15.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label15.Location = New System.Drawing.Point(678, 9) + Me.Label15.Location = New System.Drawing.Point(678, 13) Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(44, 16) + Me.Label15.Size = New System.Drawing.Size(203, 16) Me.Label15.TabIndex = 93 - Me.Label15.Text = "Index:" + Me.Label15.Text = "Index (zur Laufzeit ausgewertet):" ' 'cmbIndexe ' Me.cmbIndexe.FormattingEnabled = True - Me.cmbIndexe.Location = New System.Drawing.Point(681, 28) + Me.cmbIndexe.Location = New System.Drawing.Point(681, 32) Me.cmbIndexe.Name = "cmbIndexe" Me.cmbIndexe.Size = New System.Drawing.Size(194, 21) Me.cmbIndexe.TabIndex = 92 @@ -258,7 +264,7 @@ Partial Class frmSQL_DESIGNER 'btnAddIndex ' Me.btnAddIndex.Image = CType(resources.GetObject("btnAddIndex.Image"), System.Drawing.Image) - Me.btnAddIndex.Location = New System.Drawing.Point(881, 28) + Me.btnAddIndex.Location = New System.Drawing.Point(881, 32) Me.btnAddIndex.Name = "btnAddIndex" Me.btnAddIndex.Size = New System.Drawing.Size(32, 23) Me.btnAddIndex.TabIndex = 94 @@ -270,7 +276,7 @@ Partial Class frmSQL_DESIGNER Me.btnSaveSQLCommand.DialogResult = System.Windows.Forms.DialogResult.OK Me.btnSaveSQLCommand.Image = CType(resources.GetObject("btnSaveSQLCommand.Image"), System.Drawing.Image) Me.btnSaveSQLCommand.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnSaveSQLCommand.Location = New System.Drawing.Point(816, 491) + Me.btnSaveSQLCommand.Location = New System.Drawing.Point(825, 489) Me.btnSaveSQLCommand.Name = "btnSaveSQLCommand" Me.btnSaveSQLCommand.Size = New System.Drawing.Size(95, 30) Me.btnSaveSQLCommand.TabIndex = 95 @@ -283,7 +289,7 @@ Partial Class frmSQL_DESIGNER Me.lblSaveFinalIndex.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lblSaveFinalIndex.AutoSize = True Me.lblSaveFinalIndex.BackColor = System.Drawing.Color.Yellow - Me.lblSaveFinalIndex.Location = New System.Drawing.Point(367, 491) + Me.lblSaveFinalIndex.Location = New System.Drawing.Point(367, 489) Me.lblSaveFinalIndex.Name = "lblSaveFinalIndex" Me.lblSaveFinalIndex.Size = New System.Drawing.Size(38, 13) Me.lblSaveFinalIndex.TabIndex = 96 @@ -293,7 +299,7 @@ Partial Class frmSQL_DESIGNER 'btnAddControl ' Me.btnAddControl.Image = CType(resources.GetObject("btnAddControl.Image"), System.Drawing.Image) - Me.btnAddControl.Location = New System.Drawing.Point(645, 28) + Me.btnAddControl.Location = New System.Drawing.Point(643, 32) Me.btnAddControl.Name = "btnAddControl" Me.btnAddControl.Size = New System.Drawing.Size(32, 23) Me.btnAddControl.TabIndex = 99 @@ -303,7 +309,7 @@ Partial Class frmSQL_DESIGNER ' Me.lblControls.AutoSize = True Me.lblControls.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblControls.Location = New System.Drawing.Point(442, 9) + Me.lblControls.Location = New System.Drawing.Point(442, 13) Me.lblControls.Name = "lblControls" Me.lblControls.Size = New System.Drawing.Size(215, 16) Me.lblControls.TabIndex = 98 @@ -312,18 +318,80 @@ Partial Class frmSQL_DESIGNER 'cmbControls ' Me.cmbControls.FormattingEnabled = True - Me.cmbControls.Location = New System.Drawing.Point(445, 28) + Me.cmbControls.Location = New System.Drawing.Point(445, 31) Me.cmbControls.Name = "cmbControls" Me.cmbControls.Size = New System.Drawing.Size(194, 21) Me.cmbControls.TabIndex = 97 ' + 'cmbStatic + ' + Me.cmbStatic.FormattingEnabled = True + Me.cmbStatic.Items.AddRange(New Object() {"USERNAME", "MACHINE", "DOMAIN"}) + Me.cmbStatic.Location = New System.Drawing.Point(445, 86) + Me.cmbStatic.Name = "cmbStatic" + Me.cmbStatic.Size = New System.Drawing.Size(194, 21) + Me.cmbStatic.TabIndex = 97 + ' + 'btnAddStatic + ' + Me.btnAddStatic.Image = CType(resources.GetObject("btnAddStatic.Image"), System.Drawing.Image) + Me.btnAddStatic.Location = New System.Drawing.Point(643, 86) + Me.btnAddStatic.Name = "btnAddStatic" + Me.btnAddStatic.Size = New System.Drawing.Size(32, 23) + Me.btnAddStatic.TabIndex = 99 + Me.btnAddStatic.UseVisualStyleBackColor = True + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label2.Location = New System.Drawing.Point(442, 67) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(97, 16) + Me.Label2.TabIndex = 98 + Me.Label2.Text = "Windowsdaten:" + ' + 'cmbUser + ' + Me.cmbUser.FormattingEnabled = True + Me.cmbUser.Items.AddRange(New Object() {"PRENAME", "SURNAME", "SHORTNAME", "EMAIL"}) + Me.cmbUser.Location = New System.Drawing.Point(681, 86) + Me.cmbUser.Name = "cmbUser" + Me.cmbUser.Size = New System.Drawing.Size(194, 21) + Me.cmbUser.TabIndex = 97 + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label3.Location = New System.Drawing.Point(678, 67) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(95, 16) + Me.Label3.TabIndex = 98 + Me.Label3.Text = "Benutzerdaten:" + ' + 'btnAddUser + ' + Me.btnAddUser.Image = CType(resources.GetObject("btnAddUser.Image"), System.Drawing.Image) + Me.btnAddUser.Location = New System.Drawing.Point(881, 84) + Me.btnAddUser.Name = "btnAddUser" + Me.btnAddUser.Size = New System.Drawing.Size(32, 23) + Me.btnAddUser.TabIndex = 99 + Me.btnAddUser.UseVisualStyleBackColor = True + ' 'frmSQL_DESIGNER ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(921, 525) + Me.ClientSize = New System.Drawing.Size(930, 523) + Me.Controls.Add(Me.btnAddUser) + Me.Controls.Add(Me.btnAddStatic) Me.Controls.Add(Me.btnAddControl) + Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.lblControls) + Me.Controls.Add(Me.cmbUser) + Me.Controls.Add(Me.cmbStatic) Me.Controls.Add(Me.cmbControls) Me.Controls.Add(Me.lblSaveFinalIndex) Me.Controls.Add(Me.btnSaveSQLCommand) @@ -383,4 +451,10 @@ Partial Class frmSQL_DESIGNER Friend WithEvents btnAddControl As Button Friend WithEvents lblControls As Label Friend WithEvents cmbControls As ComboBox + Friend WithEvents cmbStatic As ComboBox + Friend WithEvents btnAddStatic As Button + Friend WithEvents Label2 As Label + Friend WithEvents cmbUser As ComboBox + Friend WithEvents Label3 As Label + Friend WithEvents btnAddUser As Button End Class diff --git a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.resx b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.resx index 59da713..9259dee 100644 --- a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.resx +++ b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.resx @@ -172,6 +172,22 @@ xAAADsQBlSsOGwAAAFxJREFUOE/NjFEKgDAMQ3e23v88/Y1YOslqhE1hGHgfS5fXAHxCliuMD4q7o5Kn yJTAzC72CM5PTBUwfXMT8OiJnwuYOmL6ZhBwlCBPkT2CSp4iUvAGWa4gy3nQDiNEflNl/3oXAAAAAElF TkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAFxJREFUOE/NjFEKgDAMQ3e23v88/Y1YOslqhE1hGHgfS5fXAHxCliuMD4q7o5Kn + yJTAzC72CM5PTBUwfXMT8OiJnwuYOmL6ZhBwlCBPkT2CSp4iUvAGWa4gy3nQDiNEflNl/3oXAAAAAElF + TkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAFxJREFUOE/NjFEKgDAMQ3e23v88/Y1YOslqhE1hGHgfS5fXAHxCliuMD4q7o5Kn + yJTAzC72CM5PTBUwfXMT8OiJnwuYOmL6ZhBwlCBPkT2CSp4iUvAGWa4gy3nQDiNEflNl/3oXAAAAAElF + TkSuQmCC diff --git a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.vb b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.vb index 00033da..1817a4d 100644 --- a/app/DD_PM_WINDREAM/frmSQL_DESIGNER.vb +++ b/app/DD_PM_WINDREAM/frmSQL_DESIGNER.vb @@ -4,6 +4,25 @@ Imports Oracle.ManagedDataAccess.Client Public Class frmSQL_DESIGNER Private _windreamPM As ClassPMWindream + Dim CurrentPosition As Integer = 0 + Dim CurrentPlaceholders As New Placeholders() + Dim CurrentTableType As String + Dim AtPlaceholderPattern As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" '"\[%[0-9A-Za-z_-]{1,}\]" + Public Class Placeholders + Public Property RecordId As Integer + Public Property ParentRecordId As Integer + Public Property FormId As Integer + End Class + + Public Property Value() As String + Get + Return SQL_COMMANDTextBox.Text + End Get + Set(value As String) + SQL_COMMANDTextBox.Text = value + End Set + End Property + Private Sub TBPM_PROFILE_FINAL_INDEXINGBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Validate() TBPM_PROFILE_FINAL_INDEXINGBindingSource.EndEdit() @@ -60,24 +79,7 @@ Public Class frmSQL_DESIGNER End Try End Sub - Dim CurrentPosition As Integer = 0 - Dim CurrentPlaceholders As New Placeholders() - Dim CurrentTableType As String - Dim AtPlaceholderPattern As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" '"\[%[0-9A-Za-z_-]{1,}\]" - Public Class Placeholders - Public Property RecordId As Integer - Public Property ParentRecordId As Integer - Public Property FormId As Integer - End Class - Public Property Value() As String - Get - Return SQL_COMMANDTextBox.Text - End Get - Set(value As String) - SQL_COMMANDTextBox.Text = value - End Set - End Property Private Sub SQL_COMMANDTextBox_TextChanged(sender As Object, e As EventArgs) Handles SQL_COMMANDTextBox.TextChanged, SQL_COMMANDTextBox.Click CurrentPosition = SQL_COMMANDTextBox.SelectionStart @@ -90,16 +92,23 @@ Public Class frmSQL_DESIGNER CheckForPlaceholders() End Sub Private Sub CheckForPlaceholders() - Dim count As Integer = 0 - Dim text As String = Me.Value - Dim atPlaceholderRegex = New Regex(AtPlaceholderPattern, RegexOptions.IgnoreCase) - Dim matches As MatchCollection = atPlaceholderRegex.Matches(text) - + Dim text As String = SQL_COMMANDTextBox.Text dgvPlaceholders.Rows.Clear() - For Each match As Match In matches - dgvPlaceholders.Rows.Add({match.Value, ""}) + Dim patterns As List(Of ClassPatterns.Pattern) = ClassPatterns.GetAllPatterns(text) + + For Each pattern In patterns + dgvPlaceholders.Rows.Add({pattern.ToString, ""}) Next + + 'Dim count As Integer = 0 + 'Dim text As String = Me.Value + 'Dim atPlaceholderRegex = New Regex(AtPlaceholderPattern, RegexOptions.IgnoreCase) + 'Dim matches As MatchCollection = atPlaceholderRegex.Matches(text) + 'dgvPlaceholders.Rows.Clear() + 'For Each match As Match In matches + ' dgvPlaceholders.Rows.Add({match.Value, ""}) + 'Next End Sub Private Sub btnTestSQL_Click(sender As Object, e As EventArgs) Handles btnTestSQL.Click @@ -111,7 +120,11 @@ Public Class frmSQL_DESIGNER ' Wenn Ersetzung ausgefüllt wurde, Platzhalter damit ersetzen If Not String.IsNullOrEmpty(replacement) Then - query = query.Replace(placeholder, replacement) + Dim pattern As New ClassPatterns.Pattern(placeholder) + + query = ClassPatterns.ReplacePattern(query, pattern.Type, replacement) + + 'query = query.Replace(placeholder, replacement) Else MsgBox("Bitte geben Sie für den Platzhalter " & placeholder & " einen Wert an!", MsgBoxStyle.Exclamation, "Fehlende Platzhalter Ersetzung") Exit Sub @@ -192,15 +205,7 @@ Public Class frmSQL_DESIGNER End Try End Function - Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAddIndex.Click - If cmbIndexe.SelectedIndex <> -1 Then - Dim val As String = "[%" & cmbIndexe.Text & "]" - Dim altePosition As Integer = Me.SQL_COMMANDTextBox.SelectionStart() - Me.SQL_COMMANDTextBox.Text = Me.SQL_COMMANDTextBox.Text.Insert(altePosition, val) - Me.SQL_COMMANDTextBox.SelectionStart = altePosition + val.Length - End If - End Sub Private Sub btnSaveSQLCommand_Click(sender As Object, e As EventArgs) Handles btnSaveSQLCommand.Click If CURRENT_DESIGN_TYPE = "FINAL_INDEX" Then @@ -223,14 +228,39 @@ Public Class frmSQL_DESIGNER Private Sub btnAddControl_Click(sender As Object, e As EventArgs) Handles btnAddControl.Click If cmbControls.SelectedIndex <> -1 Then - Dim val As String = "[%" & cmbControls.Text & "]" - Dim altePosition As Integer = Me.SQL_COMMANDTextBox.SelectionStart() - Me.SQL_COMMANDTextBox.Text = Me.SQL_COMMANDTextBox.Text.Insert(altePosition, val) - Me.SQL_COMMANDTextBox.SelectionStart = altePosition + val.Length + Dim value As String = ClassPatterns.WrapPatternValue("CTRL", cmbControls.Text) + InsertAtSelection(value) + End If + End Sub + + Private Sub btnAddStatic_Click(sender As Object, e As EventArgs) Handles btnAddStatic.Click + If cmbStatic.SelectedIndex <> -1 Then + Dim value As String = ClassPatterns.WrapPatternValue("INT", cmbStatic.Text) + InsertAtSelection(value) + End If + End Sub + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAddIndex.Click + If cmbIndexe.SelectedIndex <> -1 Then + Dim value As String = ClassPatterns.WrapPatternValue("WMI", cmbIndexe.Text) + InsertAtSelection(value) End If End Sub + Private Sub InsertAtSelection(str As String) + Dim altePosition As Integer = SQL_COMMANDTextBox.SelectionStart() + SQL_COMMANDTextBox.Text = SQL_COMMANDTextBox.Text.Insert(altePosition, str) + SQL_COMMANDTextBox.SelectionStart = altePosition + str.Length + End Sub + Private Sub btnShowConnections_Click(sender As Object, e As EventArgs) Handles btnShowConnections.Click frmConnection.ShowDialog() End Sub + + Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click + If cmbUser.SelectedIndex <> -1 Then + Dim value As String = ClassPatterns.WrapPatternValue("USER", cmbUser.Text) + InsertAtSelection(value) + End If + End Sub End Class \ No newline at end of file diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 37fd777..60d7179 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -9,6 +9,7 @@ Imports Independentsoft Imports System.IO Imports DevExpress.Pdf.pdfdo Imports DevExpress.Pdf +Imports System.Text.RegularExpressions Public Class frmValidator Dim viewerID @@ -196,24 +197,24 @@ Public Class frmValidator Return False End Try End Function - Private Function process_terminate(processname As String) - Try - Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process") - Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(selectQuery) - For Each proc As ManagementObject In searcher.Get - If proc("Name").ToString = processname Then - Dim s(1) As String - proc.InvokeMethod("GetOwner", CType(s, Object())) - If CStr(s(0)).ToLower.Contains(Environment.UserName.ToLower) Then - proc.InvokeMethod("Terminate", Nothing) - End If - End If - Next - Return False - Catch ex As Exception - ClassLogger.Add(">> Fehler in process_terminate: " & ex.Message, True) - 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 @@ -342,7 +343,7 @@ Public Class frmValidator WD_Search = dr.Item("WD_SEARCH") finalProfile = dr.Item("FINAL_PROFILE") Move2Folder = dr.Item("MOVE2Folder") - Dim sql = String.Format("SELECT RIGHT1 FROM TBDD_USER_MODULES WHERE USER_ID = {0} AND MODULE_ID = (SELECT GUID FROM TBDD_MODULES WHERE SHORT_NAME = 'PM')", CURRENT_USERID) + Dim sql = String.Format("SELECT RIGHT1 FROM TBDD_USER_MODULES WHERE USER_ID = {0} AND MODULE_ID = (SELECT GUID FROM TBDD_MODULES WHERE SHORT_NAME = 'PM')", CURRENT_USER_ID) Right_Delete = CBool(ClassDatabase.Execute_Scalar(sql, MyConnectionString)) If CURRENT_JUMP_DOC_GUID <> 0 Then @@ -371,10 +372,12 @@ Public Class frmValidator If LogErrorsOnly = False Then ClassLogger.Add(" >> Right_Delete: " & Right_Delete.ToString, False) Load_Controls() + + End If End If - Catch ex As System.Exception + Catch ex As 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) @@ -401,101 +404,149 @@ Public Class frmValidator End Try End Sub - Sub ComboBoxData(profileId As Integer, controlName As String) - ' Informationen über Profil und Control holen - Dim ControlId As Integer = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(profileId, controlName) - Dim ConnectionId As Integer - Dim SQLCommand As String - - If ControlId = 0 Then - Exit Sub - End If - - ConnectionId = TBPM_PROFILE_CONTROLSTableAdapter.cmdgetConnectionID(ControlId) - - If ConnectionId = 0 Then - Exit Sub - End If - - SQLCommand = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlId) - - If SQLCommand = String.Empty Then - Exit Sub - End If - - TBDD_CONNECTIONTableAdapter.FillByID(DD_DMSLiteDataSet.TBDD_CONNECTION, ConnectionId) + Sub LoadSimpleData(control As Control, controlId As Integer) + If TypeOf control Is Label Then Exit Sub - Dim connectionString As String + Dim sql As String = $"SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE GUID = {controlId} AND PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(ISNULL(SQL_UEBERPRUEFUNG,'')) > 0 AND SQL_UEBERPRUEFUNG NOT LIKE '%#WMI#%' AND SQL_UEBERPRUEFUNG NOT LIKE '%#CTRL#%'" + Dim dt As DataTable = ClassDatabase.Return_Datatable(sql) - For Each row As DataRow In DD_DMSLiteDataSet.TBDD_CONNECTION.Rows - Select Case row.Item("SQL_PROVIDER").ToString().ToLower() - Case "ms-sql" - If row.Item("USERNAME") = "WINAUTH" Then - connectionString = $"Data Source={row.Item("SERVER")};Initial Catalog=${row.Item("DATENBANK")};Trusted_Connection=True;" - Else - connectionString = $"Data Source={row.Item("SERVER")};Initial Catalog=${row.Item("DATENBANK")};User Id={row.Item("USERNAME")};Password={row.Item("PASSWORD")}" - End If - Case "oracle" - Dim csBuilder As New OracleConnectionStringBuilder() - - If row.Item("SERVER") <> String.Empty And Not IsDBNull(row.Item("SERVER")) Then - connectionString = $""" - Data Source=( - DESCRIPTION= - ADDRESS_LIST= - (ADDRESS= - (PROTOCOL=TCP) - (HOST={row.Item("SERVER")}) - (PORT=1521) - ) - ) - (CONNECT_DATA= - (SERVER=DEDICATED) - (SERVICE_NAME={row.Item("DATENBANK")}) - ) - ) - );User Id={row.Item("USERNAME")};Password={row.Item("PASSWORD")} - """ - Else - csBuilder.DataSource = row.Item("SERVER") - csBuilder.UserID = row.Item("USERNAME") - csBuilder.Password = row.Item("PASSWORD") - csBuilder.PersistSecurityInfo = True - csBuilder.ConnectionTimeout = 120 + If IsNothing(dt) Then Exit Sub + If dt.Rows.Count = 0 Then Exit Sub - connectionString = csBuilder.ConnectionString - End If - Case Else - Exit Sub - End Select - Next + For Each row As DataRow In dt.Rows + Dim name As String = row.Item("NAME") - Dim items As New List(Of String) + If IsDBNull(row.Item("CONNECTION_ID")) Then Continue For + If IsDBNull(row.Item("SQL_UEBERPRUEFUNG")) Then Continue For - Using adapter As New SqlClient.SqlDataAdapter() - Using conn As New SqlClient.SqlConnection(connectionString) - conn.Open() + Dim sqlStatement As String = row.Item("SQL_UEBERPRUEFUNG") + Dim connectionId As Integer = row.Item("CONNECTION_ID") - Using cmd As New SqlClient.SqlCommand(SQLCommand, conn) + sql = ClassPatterns.ReplaceInternalValues(sqlStatement) + dt = ClassDatabase.Return_Datatable(sqlStatement) - Dim dataSet As New DataSet() - - adapter.SelectCommand = cmd - adapter.Fill(dataSet) + If IsNothing(dt) Then + MsgBox($"SQL-Query for control {control.Name} is invalid.") + Exit Sub + End If - Dim table = dataSet.Tables(0) + If TypeOf control Is TextBox Then + Dim firstRow As DataRow = dt.Rows(0) + Dim value = firstRow.Item(0) - For Each row As DataRow In table.Rows - items.Add(row.Item(0)) - Next - End Using - End Using - End Using + control.Text = value + ElseIf TypeOf control Is ComboBox Then + Dim comboxBox As ComboBox = control + Dim list As New List(Of String) + For Each _row As DataRow In dt.Rows + list.Add(_row.Item(0)) + Next + comboxBox.DataSource = list + ElseIf TypeOf control Is DataGridView Then + Dim dataGridView As DataGridView = control + dataGridView.DataSource = dt + End If + Next End Sub + 'Sub ComboBoxData(profileId As Integer, controlName As String) + ' ' Informationen über Profil und Control holen + ' Dim ControlId As Integer = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetGUID(profileId, controlName) + ' Dim ConnectionId As Integer + ' Dim SQLCommand As String + + ' If ControlId = 0 Then + ' Exit Sub + ' End If + + ' ConnectionId = TBPM_PROFILE_CONTROLSTableAdapter.cmdgetConnectionID(ControlId) + + ' If ConnectionId = 0 Then + ' Exit Sub + ' End If + + ' SQLCommand = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlId) + + ' If SQLCommand = String.Empty Then + ' Exit Sub + ' End If + + ' TBDD_CONNECTIONTableAdapter.FillByID(DD_DMSLiteDataSet.TBDD_CONNECTION, ConnectionId) + + ' Dim connectionString As String + + ' For Each row As DataRow In DD_DMSLiteDataSet.TBDD_CONNECTION.Rows + ' Select Case row.Item("SQL_PROVIDER").ToString().ToLower() + ' Case "ms-sql" + ' If row.Item("USERNAME") = "WINAUTH" Then + ' connectionString = $"Data Source={row.Item("SERVER")};Initial Catalog=${row.Item("DATENBANK")};Trusted_Connection=True;" + ' Else + ' connectionString = $"Data Source={row.Item("SERVER")};Initial Catalog=${row.Item("DATENBANK")};User Id={row.Item("USERNAME")};Password={row.Item("PASSWORD")}" + ' End If + ' Case "oracle" + ' Dim csBuilder As New OracleConnectionStringBuilder() + + ' If row.Item("SERVER") <> String.Empty And Not IsDBNull(row.Item("SERVER")) Then + ' connectionString = $""" + ' Data Source=( + ' DESCRIPTION= + ' ADDRESS_LIST= + ' (ADDRESS= + ' (PROTOCOL=TCP) + ' (HOST={row.Item("SERVER")}) + ' (PORT=1521) + ' ) + ' ) + ' (CONNECT_DATA= + ' (SERVER=DEDICATED) + ' (SERVICE_NAME={row.Item("DATENBANK")}) + ' ) + ' ) + ' );User Id={row.Item("USERNAME")};Password={row.Item("PASSWORD")} + ' """ + ' Else + ' csBuilder.DataSource = row.Item("SERVER") + ' csBuilder.UserID = row.Item("USERNAME") + ' csBuilder.Password = row.Item("PASSWORD") + ' csBuilder.PersistSecurityInfo = True + ' csBuilder.ConnectionTimeout = 120 + + ' connectionString = csBuilder.ConnectionString + ' End If + ' Case Else + ' Exit Sub + ' End Select + ' Next + + ' Dim items As New List(Of String) + + ' Using adapter As New SqlClient.SqlDataAdapter() + ' Using conn As New SqlClient.SqlConnection(connectionString) + ' conn.Open() + + ' Using cmd As New SqlClient.SqlCommand(SQLCommand, conn) + + ' Dim dataSet As New DataSet() + + ' adapter.SelectCommand = cmd + ' adapter.Fill(dataSet) + + ' Dim table = dataSet.Tables(0) + + ' For Each row As DataRow In table.Rows + ' items.Add(row.Item(0)) + ' Next + ' End Using + ' End Using + ' End Using + + + + 'End Sub + Sub Load_Controls() Try pnldesigner.Controls.Clear() @@ -588,19 +639,26 @@ Public Class frmValidator 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() + + 'sql = ClassPatterns.ReplaceAllValues(sql, pnldesigner, aktivesDokument) + If ClassPatterns.HasOnlySimplePatterns(sql) Then + sql = ClassPatterns.ReplaceInternalValues(sql) + sql = ClassPatterns.ReplaceControlValues(sql, pnldesigner) + + sqlCnn = New SqlClient.SqlConnection(connectionString) + ' Try + sqlCnn.Open() + sqlCmd = New SqlClient.SqlCommand(sql, sqlCnn) + adapter.SelectCommand = sqlCmd + adapter.Fill(NewDataset) + Dim msg As String + For i = 0 To NewDataset.Tables(0).Rows.Count - 1 + cmb.Items.Add(NewDataset.Tables(0).Rows(i).Item(0)) + Next + adapter.Dispose() + sqlCmd.Dispose() + sqlCnn.Close() + End If Catch ex As Exception ClassLogger.Add(" - Unvorhergesehener Fehler bei GetValues SQL - Fehler: " & vbNewLine & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei GetValues SQL:") @@ -691,6 +749,7 @@ Public Class frmValidator pnldesigner.Controls.Add(ctrl) + LoadSimpleData(ctrl, dr.Item("GUID")) Next If LogErrorsOnly = False Then ClassLogger.Add(" >> Controls geladen", False) ClassLogger.Add("", False) @@ -705,295 +764,6 @@ Public Class frmValidator 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 - If LogErrorsOnly = False Then ClassLogger.Add(" >>ControlID > 0", False) - Dim ConID = Me.TBPM_PROFILE_CONTROLSTableAdapter.cmdgetConnectionID(ControlID) - If ConID Is Nothing = False Then - Dim commandsql = TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID) - If LogErrorsOnly = False Then ClassLogger.Add(" >> ConID Is Nothing = False", False) - If ConID > 0 And commandsql <> "" Then - If LogErrorsOnly = False Then ClassLogger.Add(" >> CConID > 0 And TBPM_PROFILE_CONTROLSTableAdapter.cmdGetSQL(ControlID)", False) - Dim connectionString As String - TBDD_CONNECTIONTableAdapter.FillByID(DD_DMSLiteDataSet.TBDD_CONNECTION, ConID) - Dim DT As DataTable = DD_DMSLiteDataSet.TBDD_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 - Else - If LogErrorsOnly = False Then ClassLogger.Add(" >> Else Row 571", False) - End If - Else - If LogErrorsOnly = False Then ClassLogger.Add(" >> AListe Handling", False) - 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 - Else - MsgBox("Resultliste windream is nothing!", MsgBoxStyle.Exclamation, AListe) - End If - Else - MsgBox("AListe from database is nothing!", MsgBoxStyle.Exclamation, AListe) - End If - End If - - - End If - '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 @@ -1028,27 +798,6 @@ Public Class frmValidator 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 @@ -1065,33 +814,37 @@ Public Class frmValidator 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 Text.RegularExpressions.Regex = New Text.RegularExpressions.Regex(preg) - ' die Vorkommen im SQL-String auslesen - Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement) - '#### - ' alle Vorkommen innerhalbd er Namenkonvention durchlaufen - For Each element As Text.RegularExpressions.Match In elemente - Try - If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False) - Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3) - Dim input_value - - If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then - Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox) - input_value = txt.Text - ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then - Dim cmb As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox) - input_value = cmb.Text - End If - sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) - Catch ex As Exception - ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result - ERROR: " & ex.Message) - End Try - Next + + sql_Statement = ClassPatterns.ReplaceAllValues(sql_Statement, pnldesigner, aktivesDokument, CURRENT_USER_PRENAME, CURRENT_USER_SURNAME, CURRENT_USER_SHORTNAME, CURRENT_USER_EMAIL) + + '' Regulären Ausdruck zum Auslesen der Indexe definieren + 'Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" + '' einen Regulären Ausdruck laden + 'Dim regulärerAusdruck As Regex = New Regex(preg) + '' die Vorkommen im SQL-String auslesen + 'Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement) + ''#### + '' alle Vorkommen innerhalbd er Namenkonvention durchlaufen + 'For Each element As Text.RegularExpressions.Match In elemente + ' Try + ' If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False) + ' Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3) + ' Dim input_value + + ' If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then + ' Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox) + ' input_value = txt.Text + ' ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then + ' Dim cmb As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox) + ' input_value = cmb.Text + ' End If + ' sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) + ' Catch ex As Exception + ' ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result - ERROR: " & ex.Message) + ' End Try + + 'Next _dependingControl_in_action = True Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1)) _dependingControl_in_action = False @@ -1183,37 +936,39 @@ Public Class frmValidator 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 Text.RegularExpressions.Regex = New Text.RegularExpressions.Regex(preg) - ' die Vorkommen im SQL-String auslesen - Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement) - '#### - ' alle Vorkommen innerhalbd er Namenkonvention durchlaufen - For Each element As Text.RegularExpressions.Match In elemente - Try - If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False) - Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3) - Dim input_value - - If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then - Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox) - input_value = txt.Text - ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then - Dim cmb1 As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox) - input_value = cmb1.Text - End If - sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) - - Catch ex As Exception - ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message) - End Try - - Next - If LogErrorsOnly = False Then ClassLogger.Add(">>> sql_Statement after replacement: " & sql_Statement) + If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then + Dim sql_Statement = ROW.Item("SQL_UEBERPRUEFUNG") + + sql_Statement = ClassPatterns.ReplaceAllValues(sql_Statement, pnldesigner, aktivesDokument, CURRENT_USER_PRENAME, CURRENT_USER_SURNAME, CURRENT_USER_SHORTNAME, CURRENT_USER_EMAIL) + '' Regulären Ausdruck zum Auslesen der Indexe definieren + 'Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" + '' einen Regulären Ausdruck laden + 'Dim regulärerAusdruck As Text.RegularExpressions.Regex = New Text.RegularExpressions.Regex(preg) + '' die Vorkommen im SQL-String auslesen + 'Dim elemente As Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(sql_Statement) + ''#### + '' alle Vorkommen innerhalbd er Namenkonvention durchlaufen + 'For Each element As Text.RegularExpressions.Match In elemente + ' Try + ' If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False) + ' Dim MyPattern = element.Value.Substring(2, element.Value.Length - 3) + ' Dim input_value + + ' If MyPattern.Contains(ClassControlCreator.PREFIX_TEXTBOX) Then + ' Dim txt As TextBox = CType(pnldesigner.Controls(MyPattern), TextBox) + ' input_value = txt.Text + ' ElseIf MyPattern.Contains(ClassControlCreator.PREFIX_COMBOBOX) Then + ' Dim cmb1 As ComboBox = CType(pnldesigner.Controls(MyPattern), ComboBox) + ' input_value = cmb1.Text + ' End If + ' sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) + + ' Catch ex As Exception + ' ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message) + ' End Try + + 'Next + 'If LogErrorsOnly = False Then ClassLogger.Add(">>> sql_Statement after replacement: " & sql_Statement) _dependingControl_in_action = True Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1)) @@ -1571,6 +1326,8 @@ Public Class frmValidator 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)