diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb
index 25a8524..b95ddde 100644
--- a/app/DD-Record-Organiser/ClassControlBuilder.vb
+++ b/app/DD-Record-Organiser/ClassControlBuilder.vb
@@ -45,6 +45,7 @@ Public Class ClassControlBuilder
Dim onRecordChangedHandler As EventHandler = CType(Me.Events(_onRecordChangedName), EventHandler)
If (onRecordChangedHandler IsNot Nothing) Then
+ Console.WriteLine("RecordChanged")
onRecordChangedHandler.Invoke(sender, e)
End If
End Sub
@@ -806,37 +807,6 @@ Public Class ClassControlBuilder
control.Size = New Size(vwidth, vheight)
End If
- 'SQL-Command vorhanden also Ausführen des SQL
-
- ' TODO: ERST LADEN WENN EDIT MODE ENABLEDs
- 'If sqlcommand.Length > 1 Then
- ' Dim DT_Combobox As DataTable = ClassDatabase.Return_Datatable(sqlcommand)
- ' If DT_Combobox Is Nothing = False Then
- ' If DT_Combobox.Rows.Count > 0 Then
- ' control.DataSource = DT_Combobox
- ' control.DisplayMember = DT_Combobox.Columns(1).ColumnName
- ' control.ValueMember = DT_Combobox.Columns(0).ColumnName
- ' control.AutoCompleteMode = AutoCompleteMode.SuggestAppend
- ' control.AutoCompleteSource = AutoCompleteSource.ListItems
- ' End If
- ' Dim iWidestWidth As Integer = 300
- ' For Each row As DataRow In DT_Combobox.Rows
- ' 'Die BReite der DropDown-Lsit anpassen
- ' Using g As Graphics = control.CreateGraphics
- ' If g.MeasureString(row.Item(1).ToString, control.Font).Width + 30 > iWidestWidth Then
- ' iWidestWidth = g.MeasureString(row.Item(1).ToString, control.Font).Width + 30
- ' End If
- ' g.Dispose()
- ' End Using
- ' ' control.Items.Add(row.Item(0).ToString)
- ' Next
- ' If iWidestWidth > 300 Then
- ' control.DropDownWidth = Math.Max(iWidestWidth, control.Width)
- ' End If
-
- ' End If
- 'End If
-
' Wenn statische liste vorhanden, werte splitten und einfügen
If static_list.Length > 0 Then
Dim items() As String = static_list.Split(";")
@@ -845,7 +815,6 @@ Public Class ClassControlBuilder
Next
End If
-
Me.SetEventHandlers(control)
Me.CurrentControl = DirectCast(control, ComboBox)
If Not IsNothing(parent) Then
diff --git a/app/DD-Record-Organiser/ClassControlCommandsUI.vb b/app/DD-Record-Organiser/ClassControlCommandsUI.vb
index d1230a2..5e22a14 100644
--- a/app/DD-Record-Organiser/ClassControlCommandsUI.vb
+++ b/app/DD-Record-Organiser/ClassControlCommandsUI.vb
@@ -31,7 +31,7 @@ Public Class ClassControlCommandsUI
Dim SQL As String = "SELECT * FROM VWPMO_CONTROL_SCREEN WHERE FORM_ID = " & FormId & " and SCREEN_ID = 1"
Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL)
-
+ _CtrlBuilder.MasterPanel.SuspendLayout()
For Each dr As DataRow In DT.Rows
@@ -249,6 +249,9 @@ Public Class ClassControlCommandsUI
dr.Item("CONTROL_SQLCOMMAND_1"),
parent)
End Select
+
+ _CtrlBuilder.MasterPanel.ResumeLayout()
+
' ContextMenuStrip zuweisen
' MasterDataID im ContextMenuStrip Speichern
If dr.Item("CTRLSCR_MASTER_DATA_ID") <> 0 Then
diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb
index 35ed966..f32f544 100644
--- a/app/DD-Record-Organiser/ClassControlLoader.vb
+++ b/app/DD-Record-Organiser/ClassControlLoader.vb
@@ -11,6 +11,26 @@
Return sqlCommand
End Function
+ Public Shared Function LoadAutoValue(control As Windows.Forms.Control, RecordId As Integer, ParentRecordId As Integer)
+ Dim AutoValue As String = String.Empty
+ Dim ControlId As Integer = control.Tag
+ Dim SQL As String = ClassDatabase.Execute_Scalar(String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId))
+ SQL = ClassControlValues.ReplaceSqlCommandPlaceholders(SQL, RecordId, ParentRecordId)
+
+ If SQL = "" Or IsDBNull(SQL) Then
+ Return Nothing
+ End If
+
+ AutoValue = ClassDatabase.Execute_Scalar(SQL)
+
+ If String.IsNullOrEmpty(AutoValue) Or IsDBNull(AutoValue) Then
+ Return Nothing
+ End If
+
+ Return AutoValue
+
+ End Function
+
End Class
Public Class _ListControl : Inherits _BaseControl
@@ -19,8 +39,7 @@
Dim returnValue As DynamicValue
returnValue.StaticList = CheckForStaticList(controlId)
- returnValue.DataTable = GetSqlList(controlId, formId, SQLCommand)
- 'returnValue.DataTable = CheckForSqlCommand(controlId, formId)
+ returnValue.DataTable = GetSqlList(controlId, formId, sqlCommand)
Return returnValue
End Function
@@ -49,16 +68,16 @@
Return Nothing
End If
- 'Dim cached As DataTable = ClassControlValueCache.LoadFromCache(formId, controlId)
Dim cached As DataTable = ClassControlValueCache.LoadFromCache(sqlCommand)
Dim final As DataTable
If cached Is Nothing Then
final = ClassDatabase.Return_Datatable(sqlCommand)
- 'ClassControlValueCache.SaveToCache(formId, controlId, final)
ClassControlValueCache.SaveToCache(sqlCommand, final)
+ Console.WriteLine("CACHE MISS")
Else
final = cached
+ Console.WriteLine("CACHE HIT")
End If
Return final
@@ -69,8 +88,11 @@
End Function
Overloads Shared Sub SetDataSource(control As Windows.Forms.ComboBox, dt As DataTable)
+ Dim sw As Stopwatch = Stopwatch.StartNew()
Dim columnCount As Integer = dt.Columns.Count
+ control.BeginUpdate()
+
' Damit beim Setzen von DisplayMember und ValueMember kein Fehler auftritt,
' muss die Datasource zunächst geleert werden und der selected index auf -1 gesetzt werden.
control.DataSource = Nothing
@@ -88,6 +110,11 @@
' Als letztes setzen wir die DataSource
control.DataSource = dt
+
+ control.EndUpdate()
+
+ sw.Stop()
+ Console.WriteLine("SetDataSource for {0} took {1}ms", control.Name, sw.ElapsedMilliseconds)
End Sub
Overloads Shared Sub SetDataSource(control As DevExpress.XtraEditors.CheckedListBoxControl, dt As DataTable)
@@ -143,33 +170,14 @@
Public Class Label : Inherits _BaseControl
- Private Shared Function LoadAutoValue(control As Windows.Forms.Control, RecordId As Integer, ParentRecordId As Integer)
- Dim AutoValue As String = String.Empty
- Dim ControlId As Integer = control.Tag
- Dim SQL As String = ClassDatabase.Execute_Scalar(String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId))
- SQL = ClassControlValues.ReplaceSqlCommandPlaceholders(SQL, RecordId, ParentRecordId)
-
- If SQL = "" Or IsDBNull(SQL) Then
- Return control.Text
- End If
-
- AutoValue = ClassDatabase.Execute_Scalar(SQL)
-
- If String.IsNullOrEmpty(AutoValue) Or IsDBNull(AutoValue) Then
- SQL = String.Format("SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlId)
- Dim value = ClassDatabase.Execute_Scalar(SQL)
- Return value
- Else
- Return AutoValue
- End If
-
- End Function
-
Public Shared Sub LoadValue(control As Windows.Forms.Label, recordId As Integer, parentRecordId As Integer, value As String)
Dim autoValue = LoadAutoValue(control, recordId, parentRecordId)
If IsNothing(autoValue) Then
- control.Text = value
+ Dim ControlId As Integer = control.Tag
+ Dim SQL = String.Format("SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlId)
+ Dim labelText As String = ClassDatabase.Execute_Scalar(SQL)
+ control.Text = labelText
Else
control.Text = autoValue
End If
@@ -199,8 +207,14 @@
Public Class TextBox : Inherits _BaseControl
- Public Shared Sub LoadValue(control As Windows.Forms.TextBox, value As String)
- control.Text = value
+ Public Shared Sub LoadValue(control As Windows.Forms.TextBox, recordId As Integer, parentRecordId As Integer, value As String)
+ Dim autoValue = LoadAutoValue(control, recordId, parentRecordId)
+
+ If IsNothing(autoValue) Then
+ control.Text = value
+ Else
+ control.Text = autoValue
+ End If
End Sub
End Class
diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb
index eca1849..55aed85 100644
--- a/app/DD-Record-Organiser/ClassControlValues.vb
+++ b/app/DD-Record-Organiser/ClassControlValues.vb
@@ -44,7 +44,7 @@ Public Class ClassControlValues
Select Case control.GetType()
Case GetType(TextBox)
Dim textbox As TextBox = DirectCast(control, TextBox)
- ControlLoader.TextBox.LoadValue(textbox, value)
+ ControlLoader.TextBox.LoadValue(textbox, recordId, parentRecordId, value)
Case GetType(Label)
Dim label As Label = DirectCast(control, Label)
@@ -97,17 +97,25 @@ Public Class ClassControlValues
End If
Dim SW As Stopwatch = Stopwatch.StartNew()
+
+ Dim swsql As Stopwatch = Stopwatch.StartNew()
+
' Zuerst alle SQL Commands für FormID finden
' CONTROL_SQLCOMMAND_1 wird als SQL gealiast
Dim SQL As String = String.Format("SELECT CONTROL_ID, CONTROL_SQLCOMMAND_1 AS SQL FROM VWPMO_CONTROL_SCREEN WHERE FORM_ID = {0} AND CONTROL_SQLCOMMAND_1 <> '' AND CONTROL_SQLCOMMAND_1 NOT LIKE '%@%'", FormID)
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
+ swsql.Stop()
+ Console.WriteLine("LoadControlValuesList - Database took {0} milliseconds to load", swsql.ElapsedMilliseconds)
+
If dt.Rows.Count = 0 Then
Exit Sub
End If
For Each Ctrl As Control In controls
+ Dim swcontrol As Stopwatch = Stopwatch.StartNew()
+
Dim controlTagId = CInt(Ctrl.Tag)
'If controlTagId = 474 Then
' MsgBox("Thats it")
@@ -135,6 +143,9 @@ Public Class ClassControlValues
ControlLoader.CheckedListBox.LoadList(chlistbox, FormID, sqlcommand)
End Select
+
+ swcontrol.Stop()
+ Console.WriteLine("LoadControlValuesList Loading {0} took {1} milliseconds to load", Ctrl.Name, swcontrol.ElapsedMilliseconds)
Next
SW.Stop()
diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx
index f9a76e1..33c9d26 100644
--- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx
+++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx
@@ -1653,7 +1653,7 @@
True
- 242
+ 150
6, 13