jj 28.04.16

This commit is contained in:
JenneJ 2016-04-28 16:49:08 +02:00
parent 89275ed3f0
commit 31063ef93c
4 changed files with 55 additions and 36 deletions

View File

@ -158,7 +158,9 @@ Public Class ClassControlBuilder
Continue For Continue For
End If End If
' Versuchen, die RecordId zu ersetzen, falls eine existiert
sqlcommand = sqlcommand.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID) sqlcommand = sqlcommand.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' ControlId Platzhalter suchen und ersetzen
Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)") Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)")
Dim match As System.Text.RegularExpressions.Match = regex.Match(sqlcommand) Dim match As System.Text.RegularExpressions.Match = regex.Match(sqlcommand)
If match.Success Then 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) Dim dependingControl As Control = panel.Controls.OfType(Of Control)().Where(Function(c As Control)
Return DirectCast(c.Tag, ClassControlMetadata).Id = dependingControlId Return DirectCast(c.Tag, ClassControlMetadata).Id = dependingControlId
End Function).SingleOrDefault() End Function).SingleOrDefault()
' Wir ersetzen den platzhalter im sql command mit dem übergebenen wert
sqlcommand = sqlcommand.Replace(match.Groups(1).Value, value) 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)) 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 dt As DataTable = ClassDatabase.Return_Datatable(sqlcommand)
Dim type = dependingControl.GetType().Name Dim type = dependingControl.GetType().Name
If dt.Rows.Count = 1 Then If dt.Rows.Count = 1 Then
' Jetzt können wir das dependingControl enablen/disablen
Select Case type Select Case type
Case "DateEdit" Case "DateEdit"
Try Try

View File

@ -411,8 +411,9 @@ Public Class ClassControlValues
ClassLogger.Add("Enable_Depending_Controls: Control.ControlCollection is unexpected empty!") ClassLogger.Add("Enable_Depending_Controls: Control.ControlCollection is unexpected empty!")
Exit Sub Exit Sub
End If 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 " _ ' Alle Controls finden, die Abhängigkeiten haben
& "AND LEN(SQL_COMMAND_2) > 10 AND SQL_COMMAND_2 LIKE '%@%@%", FormId) 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 SW As Stopwatch = Stopwatch.StartNew()
Dim commands As New List(Of String) Dim commands As New List(Of String)
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL) Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
@ -421,35 +422,47 @@ Public Class ClassControlValues
Exit Sub Exit Sub
End If End If
For Each Ctrl As Control In controls For Each row As DataRow In dt.Rows
Dim controlTagId = DirectCast(Ctrl.Tag, ClassControlMetadata).Id Dim DependingControlId As Integer = row.Item("GUID")
Dim row As DataRow = dt.Select(String.Format("CONTROL_ID={0}", controlTagId)).FirstOrDefault() 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()
If IsNothing(row) Then Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)")
Continue For Dim match As System.Text.RegularExpressions.Match = regex.Match(DependingControlSQL)
End If
Dim connID = row.Item("CONTROL_CONNID_1") If match.Success Then
Dim sqlcommand As String = row.Item("SQL") ' 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
sqlcommand = ReplaceSqlCommandPlaceholders(sqlcommand, RecordId, ParentRecordId, entity_ID) Select Case otherControlType
Case "CheckBox"
Select Case Ctrl.GetType() value = DirectCast(otherControl, CheckBox).Checked
Case GetType(CustomComboBox) Case "TextBox"
Dim combobox = DirectCast(Ctrl, CustomComboBox) value = DirectCast(otherControl, TextBox).Text
ControlLoader.Combobox.LoadList(combobox, FormId, connID, sqlcommand) Case "CustomComboBox"
value = DirectCast(otherControl, CustomComboBox).SelectedText
Case GetType(DevExpress.XtraEditors.ListBoxControl) Case "DateEdit"
Dim listbox = DirectCast(Ctrl, DevExpress.XtraEditors.ListBoxControl) value = DirectCast(otherControl, DevExpress.XtraEditors.DateEdit).EditValue
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 End Select
CtrlBuilder.Enable_Controls(DependingControl, dt, value)
End If
Next Next
Dim elapsed As Double Dim elapsed As Double
elapsed = SW.Elapsed.TotalSeconds elapsed = SW.Elapsed.TotalSeconds
SW.Stop() SW.Stop()

View File

@ -370,7 +370,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="pnlDetails.Size" type="System.Drawing.Size, System.Drawing"> <data name="pnlDetails.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 316</value> <value>1072, 338</value>
</data> </data>
<data name="pnlDetails.TabIndex" type="System.Int32, mscorlib"> <data name="pnlDetails.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -388,7 +388,7 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="TabDetails.Size" type="System.Drawing.Size, System.Drawing"> <data name="TabDetails.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 316</value> <value>1072, 338</value>
</data> </data>
<data name="TabDetails.Text" xml:space="preserve"> <data name="TabDetails.Text" xml:space="preserve">
<value>Detailansicht</value> <value>Detailansicht</value>
@ -1014,7 +1014,7 @@
<value>2</value> <value>2</value>
</data> </data>
<data name="TabFollowUp.Size" type="System.Drawing.Size, System.Drawing"> <data name="TabFollowUp.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 316</value> <value>1072, 338</value>
</data> </data>
<data name="TabFollowUp.Text" xml:space="preserve"> <data name="TabFollowUp.Text" xml:space="preserve">
<value>Wiedervorlage</value> <value>Wiedervorlage</value>
@ -1041,7 +1041,7 @@
<value>Cyan</value> <value>Cyan</value>
</data> </data>
<data name="GridControlPos.Size" type="System.Drawing.Size, System.Drawing"> <data name="GridControlPos.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 291</value> <value>1072, 313</value>
</data> </data>
<data name="GridControlPos.TabIndex" type="System.Int32, mscorlib"> <data name="GridControlPos.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -1065,7 +1065,7 @@
<value>0, 25</value> <value>0, 25</value>
</data> </data>
<data name="Panel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="Panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 291</value> <value>1072, 313</value>
</data> </data>
<data name="Panel1.TabIndex" type="System.Int32, mscorlib"> <data name="Panel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
@ -1269,7 +1269,7 @@
</value> </value>
</data> </data>
<data name="TabPos.Size" type="System.Drawing.Size, System.Drawing"> <data name="TabPos.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 316</value> <value>1072, 338</value>
</data> </data>
<data name="TabPos.Text" xml:space="preserve"> <data name="TabPos.Text" xml:space="preserve">
<value>Positionen</value> <value>Positionen</value>

View File

@ -1426,8 +1426,10 @@ Public Class frmConstructor_Main
Sub EnableEditMode() Sub EnableEditMode()
Dim EditingUser = ClassRecordState.IsRecordLocked(SELECTED_RECORD_ID) Dim EditingUser = ClassRecordState.IsRecordLocked(SELECTED_RECORD_ID)
' Überprüfen, ob der Record gerade bearbeitet wird ' Ü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 tslblLocked.Visible = True
If USER_LANGUAGE = "de-DE" Then 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) MsgBox(String.Format("Dieser Datensatz wird gerade vom Benutzer '{0}' bearbeitet und kann nur lesend abgerufen werden.", EditingUser), MsgBoxStyle.Exclamation)