diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index 9f317e6..10cc35a 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -158,7 +158,9 @@ Public Class ClassControlBuilder Continue For End If + ' Versuchen, die RecordId zu ersetzen, falls eine existiert sqlcommand = sqlcommand.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID) + ' ControlId Platzhalter suchen und ersetzen Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)") Dim match As System.Text.RegularExpressions.Match = regex.Match(sqlcommand) If match.Success Then @@ -169,13 +171,15 @@ Public Class ClassControlBuilder Dim dependingControl As Control = panel.Controls.OfType(Of Control)().Where(Function(c As Control) Return DirectCast(c.Tag, ClassControlMetadata).Id = dependingControlId End Function).SingleOrDefault() - + ' Wir ersetzen den platzhalter im sql command mit dem übergebenen wert sqlcommand = sqlcommand.Replace(match.Groups(1).Value, value) If LogErrorsOnly = False Then ClassLogger.Add(" >> " & String.Format("Executing SQL_COMMAND: '{0}' for controlID '{1}'", sqlcommand, dependingControlId)) + ' Jetzt wird das SQL Command ausgeführt, es MUSS einen Boolschen Wert zurückgeben, True, False, 0, 1 Dim dt As DataTable = ClassDatabase.Return_Datatable(sqlcommand) Dim type = dependingControl.GetType().Name If dt.Rows.Count = 1 Then + ' Jetzt können wir das dependingControl enablen/disablen Select Case type Case "DateEdit" Try diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index 61e1628..cb7bb06 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -411,8 +411,9 @@ Public Class ClassControlValues ClassLogger.Add("Enable_Depending_Controls: Control.ControlCollection is unexpected empty!") Exit Sub End If - Dim SQL As String = String.Format("select GUID,SQL_COMMAND_2 from TBPMO_CONTROL where FORM_ID = {0} AND SQL_COMMAND_2 IS NOT NULL " _ - & "AND LEN(SQL_COMMAND_2) > 10 AND SQL_COMMAND_2 LIKE '%@%@%", FormId) + ' Alle Controls finden, die Abhängigkeiten haben + Dim SQL As String = String.Format("select GUID,NAME,SQL_COMMAND_2 from TBPMO_CONTROL where FORM_ID = {0} AND SQL_COMMAND_2 IS NOT NULL " _ + & "AND LEN(SQL_COMMAND_2) > 10 AND SQL_COMMAND_2 LIKE '%@%@%'", FormId) Dim SW As Stopwatch = Stopwatch.StartNew() Dim commands As New List(Of String) Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL) @@ -421,35 +422,47 @@ Public Class ClassControlValues Exit Sub End If - For Each Ctrl As Control In controls - Dim controlTagId = DirectCast(Ctrl.Tag, ClassControlMetadata).Id - Dim row As DataRow = dt.Select(String.Format("CONTROL_ID={0}", controlTagId)).FirstOrDefault() + For Each row As DataRow In dt.Rows + Dim DependingControlId As Integer = row.Item("GUID") + Dim DependingControlSQL As String = row.Item("SQL_COMMAND_2") + Dim DependingControl As Control = controls.OfType(Of Control)().Where(Function(c As Control) + Return DirectCast(c.Tag, ClassControlMetadata).Id = DependingControlId + End Function).SingleOrDefault() + + Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)") + Dim match As System.Text.RegularExpressions.Match = regex.Match(DependingControlSQL) + + If match.Success Then + ' Wir suchen aus dem SQL Befehl die ControlId heraus, + ' von dem das aktuelle Control abhängt + Dim otherControlId As Integer + Integer.TryParse(match.Groups(2).Value, otherControlId) + ' Jetzt suchen wir das Control, das zu dieser ControlId passt + Dim otherControl As Control = controls.OfType(Of Control)().Where(Function(c As Control) + Return DirectCast(c.Tag, ClassControlMetadata).Id = otherControlId + End Function).SingleOrDefault() + Dim otherControlType As String = otherControl.GetType().Name + + ' Jetzt holen wir uns den Wert von dem 'OtherControl' + ' und geben seinen Value zusammen mit dem dependingControl weiter + Dim value As Object + + Select Case otherControlType + Case "CheckBox" + value = DirectCast(otherControl, CheckBox).Checked + Case "TextBox" + value = DirectCast(otherControl, TextBox).Text + Case "CustomComboBox" + value = DirectCast(otherControl, CustomComboBox).SelectedText + Case "DateEdit" + value = DirectCast(otherControl, DevExpress.XtraEditors.DateEdit).EditValue + End Select + + CtrlBuilder.Enable_Controls(DependingControl, dt, value) - If IsNothing(row) Then - Continue For End If - - Dim connID = row.Item("CONTROL_CONNID_1") - Dim sqlcommand As String = row.Item("SQL") - - - sqlcommand = ReplaceSqlCommandPlaceholders(sqlcommand, RecordId, ParentRecordId, entity_ID) - - Select Case Ctrl.GetType() - Case GetType(CustomComboBox) - Dim combobox = DirectCast(Ctrl, CustomComboBox) - ControlLoader.Combobox.LoadList(combobox, FormId, connID, sqlcommand) - - Case GetType(DevExpress.XtraEditors.ListBoxControl) - Dim listbox = DirectCast(Ctrl, DevExpress.XtraEditors.ListBoxControl) - ControlLoader.ListBox.LoadList(listbox, FormId, connID, sqlcommand) - - Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) - Dim chlistbox = DirectCast(Ctrl, DevExpress.XtraEditors.CheckedListBoxControl) - ControlLoader.CheckedListBox.LoadList(chlistbox, FormId, connID, sqlcommand) - - End Select Next + Dim elapsed As Double elapsed = SW.Elapsed.TotalSeconds SW.Stop() diff --git a/app/DD-Record-Organiser/frmConstructor_Main.resx b/app/DD-Record-Organiser/frmConstructor_Main.resx index e388d74..8394ebb 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.resx +++ b/app/DD-Record-Organiser/frmConstructor_Main.resx @@ -132,7 +132,7 @@ 0, 0 - 17, 128 + 1693, 54 194, 22 @@ -192,192 +192,8 @@ Panel1 - - 502, 128 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFKSURBVDhPYxi84O4C9v+35nH+vzqH6//FGbz/ocLEg+tA - jX8eNf7/87Dh/8nJAqQbcH46L9yAgz0ipBtwfJIgUHPd/z8Pqv7vaBcnbMClmTz/z07l+38SqPFIv9D/ - fd0iQM3l///eK/q/vkHm/6oauf9LKxX/zy9V/j+rSBXTwFNAf/55WA/UVAvElf//3CsB4rz/f+9m/v97 - J/n/39tx///djADikP+TcjQxDTjUKwx27t/7pUCNBUCN2UCNqUCNCf//3YoGagz7/+9G0P9/1/3+d6Xp - Yhqws13i/5Zmqf/rwM6V/7+kQvH/31sxQI3h/6fmafyfkKX1vztD9397qv7/5kRDwmEyG+hPkHP/3Qj4 - 35OhQ1gDOgD5898NfyD2+9+arE+6Ad3pumD/gnB9nBHpBrQkGfxviDf8XxNr/L8y2oR0A+gEGBgAJCPY - nnX8iGkAAAAASUVORK5CYII= - - - - True - - - 23, 22 - - - Neu hinzufügen - - - 162, 11 - - - 44, 22 - - - von {0} - - - Die Gesamtanzahl der Elemente. - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFvSURBVDhPtZBNKMNhHMd3Vd5K7eKCWjkgk7yEZDKksciE - yMwkBw6LhHZxcCDlQg64SA4kJeVE4jRv89qaWn8tUtoF/7g8H2Ootb+x4nt56nm+38/v+/xUfyJcJ9Bt - BMcOH1eRiZV5RGcVwqyHrfWwELweWJoJ9rC2AL0mRLse0VEBcxOKkLeGwlwGIz2h75w6ApC6bERjAdia - gkxiyIow5cKkPWxDFYvTiMrUdxDDVnCfwVh/AOo/P2zhhccFzcWBLxmzEPV50Nfyu/Cn2N/1V85DGNKh - Rhth+EaCxkLISUDWxvOgjYXa7F/Wv7kGUz4UJeKzGODi6H25d2l+yPLsDwu8v4NWHY8lSbhL0/HtbX8F - GLXh1MQgnxwoQ3h5hkEL6JI5TlPj21gNMd6WZyC1VSN7r0Mh7G4i56pxpkQhdTWA/KQ4aUcTh+x0KACm - RpBSo3HrM0G6Uq7pl2zvhvNDBcClE8YH4HDv2/A/SKV6BYojAxyEJtLJAAAAAElFTkSuQmCC - - - - True - - - 23, 22 - - - Löschen - - - None - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEqSURBVDhPYxg8oHDW8/9NC57/z5z4+D9UCAOEtz/AKceQ - O/PZ/1VH3v/HpSi++8H/4IZruA3ImPL0/8J9H7Aqiu95+H/p/v///asv4DYgoefJ/2lb3mMoimi/D9ac - Oev/f6/SE7gNiOx69L939QcURaGt98CaW9cBbe/8+98l/wBuAwKbH/6vm/8Orii45e7/RXv//+8Aas6Y - 8/O/Xd3P//YZ23Eb4FF1/3/+tDcoiuyKb/9Pn/P7v3/Xt/86he/+WySsx22Afend/9mTX2Mo0k85/9+k - 6MV/laxP/40jl+E2wCLvzv/U/tdYFRkknfgvm/b1v27wPNwGGGbd/h/W8hKnIv3Uy/81fKfhNkAn7cZ/ - v+qHeBWpeEzAbYBT7pX/IAV4FQ1CwMAAAPB2wKul5ZpwAAAAAElFTkSuQmCC - - - - True - - - 23, 22 - - - Erste verschieben - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC2SURBVDhPYxg6ILz9wX8ok3QQ3/3gf3DDNfIMiO95+H/p - /v///asvkG5ARPt9sObMWf//e5WeIM2A0NZ7YM2t64C2d/7975J/gHgDglvu/l+09///DqDmjDk//9vV - /fxvn7GdNBfYFd/+nz7n93//rm//dQrf/bdIWE96GOinnP9vUvTiv0rWp//GkctINwAEDJJO/JdN+/pf - N3geeQaAgH7q5f8avtPINwAEVDwmUGbAYAUMDADQFGCYBLpQVQAAAABJRU5ErkJggg== - - - - True - - - 23, 22 - - - Vorherige verschieben - - - 6, 25 - - - Position - - - False - - - 50, 23 - - - 0 - - - Aktuelle Position - - - 6, 25 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACjSURBVDhPYxh8oHDW8/9QJnkgd+az/wnd98g3JGPK0//z - 9v/+n9B1hzxDEnqe/J+979f/zq1//7uVXibdkMiuR/+nbPv1v2Tp3/8J0//+t8k9S5ohgc0P/7eufQ/W - bFzy5b909LX/xpHLiDfEo+r+/5K57+CaFV16SHOBfend/4Etz8jTDAIWeXf+2xRcIU8zCBhm3SZfMwjo - pN0gX/NQBAwMAKB+X6AHNEI4AAAAAElFTkSuQmCC - - - - True - - - 23, 22 - - - Nächste verschieben - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEsSURBVDhPYxhcoHDW8/9QJgYAyTUteP4/c+JjnGoYcmc+ - +5/QfQ+rApDcqiPv/4e3P8BtQMaUp//n7f/9P6HrDoYikNzCfR/+Bzdcw21AQs+T/7P3/frfufXvf7fS - yygKQXLTtrz/7199AbcBkV2P/k/Z9ut/ydK//xOm//1vk3sWrhgk17v6w3+v0hO4DQhsfvi/de17sGbj - ki//paOv/TeOXAbWAJKrm//uv0v+AdwGeFTd/18y9x1cs6JLD1wxSC5/2pv/9hnbcRtgX3r3f2DLMwzN - IACSy578+r9FwnrcBljk3flvU3AFQzMIgORS+1/DvYQVGGbdxqoZBEByYS0v/+sGz8NtgE7aDZySIDm/ - 6of/NXyn4TYAH3DKvfJfxWMCGEOFBgVgYAAAvtG/s7kMTpwAAAAASUVORK5CYII= - - - - True - - - 23, 22 - - - Letzte verschieben - - - 6, 25 - - - 40, 196 - - - 295, 25 - - - 1 - - - BindingNavigator1 - - - BindingNavigator1 - - - System.Windows.Forms.BindingNavigator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SplitContainerTop.Panel2 - - - 0 - - 463, 11 + 477, 15 Segoe UI, 9pt, style=Bold @@ -497,7 +313,7 @@ SplitContainerTop.Panel2 - 1 + 0 Panel2 @@ -596,7 +412,7 @@ 1 - 124, 128 + 187, 65 148, 22 @@ -703,7 +519,7 @@ 1 - 17, 50 + 1157, 15 Segoe UI, 8.25pt, style=Bold, Italic @@ -1267,7 +1083,7 @@ 0 - 332, 128 + 17, 93 @@ -1483,7 +1299,7 @@ 0 - 759, 11 + 773, 15 False @@ -1895,11 +1711,14 @@ 5 + + 162, 11 + - 328, 11 + 342, 15 - 612, 11 + 626, 15 @@ -1910,10 +1729,10 @@ - 880, 11 + 894, 15 - 981, 11 + 995, 15 61, 4 @@ -1925,31 +1744,31 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 182, 50 + 1322, 15 - 472, 50 + 17, 54 - 750, 50 + 295, 54 - 17, 89 + 567, 54 - 910, 89 + 1460, 54 - 190, 89 + 740, 54 - 434, 89 + 984, 54 - 672, 89 + 1222, 54 - 325, 50 + 1465, 15 True @@ -2916,72 +2735,6 @@ DevExpress.Utils.ToolTipController, DevExpress.Utils.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BindingNavigatorMoveFirstItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorMovePreviousItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorSeparator3 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorPositionItem1 - - - System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorCountItem1 - - - System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorSeparator4 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorMoveNextItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorMoveLastItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorSeparator5 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorAddNewItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BindingNavigatorDeleteItem1 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - frmConstructor_Main diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index ee42ccf..de4d534 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -1426,8 +1426,10 @@ Public Class frmConstructor_Main Sub EnableEditMode() Dim EditingUser = ClassRecordState.IsRecordLocked(SELECTED_RECORD_ID) + ' Überprüfen, ob der Record gerade bearbeitet wird - If Not IsNothing(EditingUser) Then + If Not IsNothing(EditingUser) And EditingUser <> Environment.UserName Then + tslblLocked.Visible = True If USER_LANGUAGE = "de-DE" Then MsgBox(String.Format("Dieser Datensatz wird gerade vom Benutzer '{0}' bearbeitet und kann nur lesend abgerufen werden.", EditingUser), MsgBoxStyle.Exclamation)