JJ 25.04
This commit is contained in:
parent
944dcd330a
commit
0b6da26fd8
@ -25,6 +25,9 @@ Public Class ClassControlBuilder
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
' +++ RecordChanged Event +++
|
' +++ RecordChanged Event +++
|
||||||
|
|
||||||
|
Public WatchRecordChanges As Boolean = True
|
||||||
|
|
||||||
Public Custom Event OnRecordChanged As EventHandler
|
Public Custom Event OnRecordChanged As EventHandler
|
||||||
AddHandler(value As EventHandler)
|
AddHandler(value As EventHandler)
|
||||||
Me.Events.AddHandler(_onRecordChangedName, value)
|
Me.Events.AddHandler(_onRecordChangedName, value)
|
||||||
@ -59,7 +62,7 @@ Public Class ClassControlBuilder
|
|||||||
Public Sub RecordChanged(sender As Object, ByVal e As EventArgs)
|
Public Sub RecordChanged(sender As Object, ByVal e As EventArgs)
|
||||||
Dim onRecordChangedHandler As EventHandler = CType(Me.Events(_onRecordChangedName), EventHandler)
|
Dim onRecordChangedHandler As EventHandler = CType(Me.Events(_onRecordChangedName), EventHandler)
|
||||||
|
|
||||||
If (onRecordChangedHandler IsNot Nothing) Then
|
If (onRecordChangedHandler IsNot Nothing And WatchRecordChanges) Then
|
||||||
Console.WriteLine("RecordChanged")
|
Console.WriteLine("RecordChanged")
|
||||||
onRecordChangedHandler.Invoke(sender, e)
|
onRecordChangedHandler.Invoke(sender, e)
|
||||||
End If
|
End If
|
||||||
|
|||||||
@ -489,6 +489,7 @@ Public Class ClassControlCommandsUI
|
|||||||
Private Sub UpdateAllControls(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection)
|
Private Sub UpdateAllControls(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection)
|
||||||
Try
|
Try
|
||||||
For Each ctrl As Control In controls
|
For Each ctrl As Control In controls
|
||||||
|
Console.WriteLine("Updating Control " + ctrl.Name)
|
||||||
|
|
||||||
Dim CONTROL_ID As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id 'GetControlID_for_RecordID(ctrl.Name, RecordID)
|
Dim CONTROL_ID As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id 'GetControlID_for_RecordID(ctrl.Name, RecordID)
|
||||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> CONTROL_ID: " & CONTROL_ID, False)
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CONTROL_ID: " & CONTROL_ID, False)
|
||||||
@ -521,13 +522,14 @@ Public Class ClassControlCommandsUI
|
|||||||
Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID))
|
Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID))
|
||||||
|
|
||||||
If IsNothing(ValueExists) Then ' Neues Control
|
If IsNothing(ValueExists) Then ' Neues Control
|
||||||
If CONTROL_ID = 995 Or CONTROL_ID = 996 Or CONTROL_ID = 997 Or CONTROL_ID = 810 Then
|
'If CONTROL_ID = 995 Or CONTROL_ID = 996 Or CONTROL_ID = 997 Or CONTROL_ID = 810 Then
|
||||||
Console.WriteLine("sdasd")
|
' Console.WriteLine("sdasd")
|
||||||
End If
|
'End If
|
||||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False)
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False)
|
||||||
If Not IsNothing(CONTROL_VALUE) Then
|
If Not IsNothing(CONTROL_VALUE) Then
|
||||||
If TypeOf ctrl Is CustomComboBox And CONTROL_VALUE = "" Then
|
If TypeOf ctrl Is CustomComboBox And CONTROL_VALUE = "" Then
|
||||||
Exit Sub
|
'Exit Sub - Zuviel des guten
|
||||||
|
Continue For
|
||||||
End If
|
End If
|
||||||
InsertControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
|
InsertControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
|
||||||
End If
|
End If
|
||||||
|
|||||||
@ -488,7 +488,6 @@ Public Class ClassControlValues
|
|||||||
dgv.DataSource = Nothing
|
dgv.DataSource = Nothing
|
||||||
dgv.Refresh()
|
dgv.Refresh()
|
||||||
End If
|
End If
|
||||||
Console.WriteLine("Clearing DataGridView")
|
|
||||||
|
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
55
app/DD-Record-Organiser/ClassRecordState.vb
Normal file
55
app/DD-Record-Organiser/ClassRecordState.vb
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Public Class ClassRecordState
|
||||||
|
|
||||||
|
Public Shared Sub LockRecord(RecordId As Integer)
|
||||||
|
Try
|
||||||
|
Dim Username As String = Environment.UserName
|
||||||
|
Dim SQL As String = String.Format("UPDATE TBPMO_RECORD SET IN_WORK = 1, IN_WORK_WHO = '{0}' WHERE GUID = {1}", Username, RecordId)
|
||||||
|
|
||||||
|
ClassDatabase.Execute_non_Query(SQL)
|
||||||
|
Console.WriteLine("Record " & RecordId & " locked")
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("Error in LockRecord: " & vbNewLine & ex.Message,MsgBoxStyle.Critical)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Sub UnlockRecord(RecordId As Integer)
|
||||||
|
Try
|
||||||
|
Dim SQL As String = String.Format("UPDATE TBPMO_RECORD SET IN_WORK = 0, IN_WORK_WHO = NULL WHERE GUID = {0}", RecordId)
|
||||||
|
|
||||||
|
ClassDatabase.Execute_non_Query(SQL)
|
||||||
|
Console.WriteLine("Record " & RecordId & " UNlocked")
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("Error in UnlockRecord: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Function IsRecordLocked(RecordId As Integer) As String
|
||||||
|
Try
|
||||||
|
Dim SQL As String = String.Format("SELECT IN_WORK, IN_WORK_WHO FROM TBPMO_RECORD WHERE GUID = {0}", RecordId)
|
||||||
|
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
|
||||||
|
|
||||||
|
If dt.Rows.Count = 1 Then
|
||||||
|
|
||||||
|
Dim IN_WORK As Boolean = dt.Rows(0).Item("IN_WORK")
|
||||||
|
Dim IN_WORK_WHO As String = dt.Rows(0).Item("IN_WORK_WHO").ToString
|
||||||
|
|
||||||
|
If IN_WORK = True Then
|
||||||
|
' Record ist in Arbeit, benutzer zurückgeben
|
||||||
|
Return IN_WORK_WHO
|
||||||
|
ElseIf IN_WORK = False Then
|
||||||
|
' Record ist nicht in Arbeit, nothing zurück geben
|
||||||
|
Return Nothing
|
||||||
|
End If
|
||||||
|
|
||||||
|
ElseIf dt.Rows.Count = 0 Then
|
||||||
|
Throw New Exception("Record " & RecordId & " does not exist")
|
||||||
|
Else
|
||||||
|
Throw New Exception("Record" & RecordId & " is not unique")
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("Error in IsRecordInWork: " + vbNewLine + ex.Message, MsgBoxStyle.Critical)
|
||||||
|
Return Nothing
|
||||||
|
End Try
|
||||||
|
End Function
|
||||||
|
|
||||||
|
End Class
|
||||||
@ -251,6 +251,7 @@
|
|||||||
<Compile Include="ClassFolderWatcher.vb" />
|
<Compile Include="ClassFolderWatcher.vb" />
|
||||||
<Compile Include="ClassJumpRecord.vb" />
|
<Compile Include="ClassJumpRecord.vb" />
|
||||||
<Compile Include="ClassLicence.vb" />
|
<Compile Include="ClassLicence.vb" />
|
||||||
|
<Compile Include="ClassRecordState.vb" />
|
||||||
<Compile Include="frmRight_Management.Designer.vb">
|
<Compile Include="frmRight_Management.Designer.vb">
|
||||||
<DependentUpon>frmRight_Management.vb</DependentUpon>
|
<DependentUpon>frmRight_Management.vb</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
@ -132,6 +132,9 @@ Public Class frmConstructor_Main
|
|||||||
Save_Grid_Layout()
|
Save_Grid_Layout()
|
||||||
Save_Splitter_Layout()
|
Save_Splitter_Layout()
|
||||||
ClassWindowLocation.SaveFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "CONSTRUCTOR_MAIN")
|
ClassWindowLocation.SaveFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "CONSTRUCTOR_MAIN")
|
||||||
|
|
||||||
|
' Verhindert, das noch geöffnete Records für immer gelockt sind
|
||||||
|
ClassRecordState.UnlockRecord(SELECTED_RECORD_ID)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
@ -1372,8 +1375,27 @@ Public Class frmConstructor_Main
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Sub EnableEditMode()
|
Sub EnableEditMode()
|
||||||
|
|
||||||
|
Dim EditingUser = ClassRecordState.IsRecordLocked(SELECTED_RECORD_ID)
|
||||||
|
' Überprüfen, ob der Record gerade bearbeitet wird
|
||||||
|
If Not IsNothing(EditingUser) 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)
|
||||||
|
Else
|
||||||
|
MsgBox(String.Format("This Record is currently being edited by User {0} and only available in Read-Only mode.", EditingUser), MsgBoxStyle.Exclamation)
|
||||||
|
End If
|
||||||
|
' Wenn Record bearbeitet wird, EnableEditMode abbrechen!
|
||||||
|
Exit Sub
|
||||||
|
|
||||||
|
Else
|
||||||
|
'Wenn Record bearbeitet werden kann, IN_WORK auf 1 setzen, um Bearbeitung durch andere zu verhindern!
|
||||||
|
ClassRecordState.LockRecord(SELECTED_RECORD_ID)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
Lock_RecordControls(False)
|
Lock_RecordControls(False)
|
||||||
Me.tsButtonDelete.Enabled = True
|
Me.tsButtonDelete.Enabled = True
|
||||||
Me.tsButtonAdd.Enabled = True
|
Me.tsButtonAdd.Enabled = True
|
||||||
@ -1388,7 +1410,9 @@ Public Class frmConstructor_Main
|
|||||||
CURRENT_RECORD_ID = RECORD_ID
|
CURRENT_RECORD_ID = RECORD_ID
|
||||||
|
|
||||||
' Abhängige Listen laden
|
' Abhängige Listen laden
|
||||||
|
CtrlBuilder.WatchRecordChanges = False
|
||||||
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
||||||
|
CtrlBuilder.WatchRecordChanges = True
|
||||||
|
|
||||||
RECORD_ENABLED = True
|
RECORD_ENABLED = True
|
||||||
CURRENT_RECORD_ENABLED = True
|
CURRENT_RECORD_ENABLED = True
|
||||||
@ -1399,6 +1423,8 @@ Public Class frmConstructor_Main
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub DisableEditMode()
|
Sub DisableEditMode()
|
||||||
|
ClassRecordState.UnlockRecord(SELECTED_RECORD_ID)
|
||||||
|
|
||||||
Lock_RecordControls(True)
|
Lock_RecordControls(True)
|
||||||
RECORD_ENABLED = False
|
RECORD_ENABLED = False
|
||||||
CURRENT_RECORD_ENABLED = False
|
CURRENT_RECORD_ENABLED = False
|
||||||
@ -1817,7 +1843,9 @@ Public Class frmConstructor_Main
|
|||||||
' ClassControlValues.LoadControlValuesList(firstRecordId, PARENT_ID, ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
' ClassControlValues.LoadControlValuesList(firstRecordId, PARENT_ID, ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
||||||
'End If
|
'End If
|
||||||
' Hinfällig, da hier die Record-ID nicht gebraucht wird
|
' Hinfällig, da hier die Record-ID nicht gebraucht wird
|
||||||
|
CtrlBuilder.WatchRecordChanges = False
|
||||||
ClassControlValues.LoadControlValuesList(ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
ClassControlValues.LoadControlValuesList(ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
||||||
|
CtrlBuilder.WatchRecordChanges = True
|
||||||
|
|
||||||
'Zurücksetzen
|
'Zurücksetzen
|
||||||
ENTITY_LOADED = True
|
ENTITY_LOADED = True
|
||||||
@ -1855,7 +1883,9 @@ Public Class frmConstructor_Main
|
|||||||
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
||||||
'Daten zu Record in jedem Fall laden
|
'Daten zu Record in jedem Fall laden
|
||||||
'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
||||||
|
CtrlBuilder.WatchRecordChanges = False
|
||||||
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_ID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_ID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
||||||
|
CtrlBuilder.WatchRecordChanges = True
|
||||||
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
||||||
RECORD_CHANGED = False
|
RECORD_CHANGED = False
|
||||||
Update_Record_Label(Grid_RecordID)
|
Update_Record_Label(Grid_RecordID)
|
||||||
@ -2369,7 +2399,9 @@ Public Class frmConstructor_Main
|
|||||||
Dim sw1 As New Stopwatch
|
Dim sw1 As New Stopwatch
|
||||||
sw1.Start()
|
sw1.Start()
|
||||||
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
||||||
|
CtrlBuilder.WatchRecordChanges = False
|
||||||
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_ID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_ID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
||||||
|
CtrlBuilder.WatchRecordChanges = True
|
||||||
Dim elapsed1 As Double
|
Dim elapsed1 As Double
|
||||||
elapsed1 = sw1.Elapsed.TotalSeconds
|
elapsed1 = sw1.Elapsed.TotalSeconds
|
||||||
sw1.Stop()
|
sw1.Stop()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user