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
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

View File

@ -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()
If IsNothing(row) Then
Continue For
End If
Dim regex As New System.Text.RegularExpressions.Regex("(@(\d+)@)")
Dim match As System.Text.RegularExpressions.Match = regex.Match(DependingControlSQL)
Dim connID = row.Item("CONTROL_CONNID_1")
Dim sqlcommand As String = row.Item("SQL")
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
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)
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)
End If
Next
Dim elapsed As Double
elapsed = SW.Elapsed.TotalSeconds
SW.Stop()

View File

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

View File

@ -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)