JJ 25.04
This commit is contained in:
parent
944dcd330a
commit
0b6da26fd8
@ -25,6 +25,9 @@ Public Class ClassControlBuilder
|
||||
End Property
|
||||
|
||||
' +++ RecordChanged Event +++
|
||||
|
||||
Public WatchRecordChanges As Boolean = True
|
||||
|
||||
Public Custom Event OnRecordChanged As EventHandler
|
||||
AddHandler(value As EventHandler)
|
||||
Me.Events.AddHandler(_onRecordChangedName, value)
|
||||
@ -59,7 +62,7 @@ Public Class ClassControlBuilder
|
||||
Public Sub RecordChanged(sender As Object, ByVal e As EventArgs)
|
||||
Dim onRecordChangedHandler As EventHandler = CType(Me.Events(_onRecordChangedName), EventHandler)
|
||||
|
||||
If (onRecordChangedHandler IsNot Nothing) Then
|
||||
If (onRecordChangedHandler IsNot Nothing And WatchRecordChanges) Then
|
||||
Console.WriteLine("RecordChanged")
|
||||
onRecordChangedHandler.Invoke(sender, e)
|
||||
End If
|
||||
|
||||
@ -489,6 +489,7 @@ Public Class ClassControlCommandsUI
|
||||
Private Sub UpdateAllControls(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection)
|
||||
Try
|
||||
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)
|
||||
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))
|
||||
|
||||
If IsNothing(ValueExists) Then ' Neues Control
|
||||
If CONTROL_ID = 995 Or CONTROL_ID = 996 Or CONTROL_ID = 997 Or CONTROL_ID = 810 Then
|
||||
Console.WriteLine("sdasd")
|
||||
End If
|
||||
'If CONTROL_ID = 995 Or CONTROL_ID = 996 Or CONTROL_ID = 997 Or CONTROL_ID = 810 Then
|
||||
' Console.WriteLine("sdasd")
|
||||
'End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False)
|
||||
If Not IsNothing(CONTROL_VALUE) Then
|
||||
If TypeOf ctrl Is CustomComboBox And CONTROL_VALUE = "" Then
|
||||
Exit Sub
|
||||
'Exit Sub - Zuviel des guten
|
||||
Continue For
|
||||
End If
|
||||
InsertControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
|
||||
End If
|
||||
|
||||
@ -488,7 +488,6 @@ Public Class ClassControlValues
|
||||
dgv.DataSource = Nothing
|
||||
dgv.Refresh()
|
||||
End If
|
||||
Console.WriteLine("Clearing DataGridView")
|
||||
|
||||
End Select
|
||||
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="ClassJumpRecord.vb" />
|
||||
<Compile Include="ClassLicence.vb" />
|
||||
<Compile Include="ClassRecordState.vb" />
|
||||
<Compile Include="frmRight_Management.Designer.vb">
|
||||
<DependentUpon>frmRight_Management.vb</DependentUpon>
|
||||
</Compile>
|
||||
|
||||
@ -132,6 +132,9 @@ Public Class frmConstructor_Main
|
||||
Save_Grid_Layout()
|
||||
Save_Splitter_Layout()
|
||||
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
|
||||
|
||||
|
||||
@ -1372,8 +1375,27 @@ Public Class frmConstructor_Main
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
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)
|
||||
Me.tsButtonDelete.Enabled = True
|
||||
Me.tsButtonAdd.Enabled = True
|
||||
@ -1388,7 +1410,9 @@ Public Class frmConstructor_Main
|
||||
CURRENT_RECORD_ID = RECORD_ID
|
||||
|
||||
' Abhängige Listen laden
|
||||
CtrlBuilder.WatchRecordChanges = False
|
||||
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
||||
CtrlBuilder.WatchRecordChanges = True
|
||||
|
||||
RECORD_ENABLED = True
|
||||
CURRENT_RECORD_ENABLED = True
|
||||
@ -1399,6 +1423,8 @@ Public Class frmConstructor_Main
|
||||
End Sub
|
||||
|
||||
Sub DisableEditMode()
|
||||
ClassRecordState.UnlockRecord(SELECTED_RECORD_ID)
|
||||
|
||||
Lock_RecordControls(True)
|
||||
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)
|
||||
'End If
|
||||
' Hinfällig, da hier die Record-ID nicht gebraucht wird
|
||||
CtrlBuilder.WatchRecordChanges = False
|
||||
ClassControlValues.LoadControlValuesList(ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
||||
CtrlBuilder.WatchRecordChanges = True
|
||||
|
||||
'Zurücksetzen
|
||||
ENTITY_LOADED = True
|
||||
@ -1855,7 +1883,9 @@ Public Class frmConstructor_Main
|
||||
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
||||
'Daten zu Record in jedem Fall laden
|
||||
'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)
|
||||
CtrlBuilder.WatchRecordChanges = True
|
||||
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
||||
RECORD_CHANGED = False
|
||||
Update_Record_Label(Grid_RecordID)
|
||||
@ -2369,7 +2399,9 @@ Public Class frmConstructor_Main
|
||||
Dim sw1 As New Stopwatch
|
||||
sw1.Start()
|
||||
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
||||
CtrlBuilder.WatchRecordChanges = False
|
||||
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_ID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
||||
CtrlBuilder.WatchRecordChanges = True
|
||||
Dim elapsed1 As Double
|
||||
elapsed1 = sw1.Elapsed.TotalSeconds
|
||||
sw1.Stop()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user