diff --git a/app/DD-Record-Organizer/ClassControlBuilder.vb b/app/DD-Record-Organizer/ClassControlBuilder.vb index 0f04eed..7ae262f 100644 --- a/app/DD-Record-Organizer/ClassControlBuilder.vb +++ b/app/DD-Record-Organizer/ClassControlBuilder.vb @@ -942,6 +942,7 @@ Public Class ClassControlBuilder 'AddHandler combo.GotFocus, AddressOf OnComboBoxFocused AddHandler combo.Enter, AddressOf OnComboBoxFocused AddHandler combo.SelectedValueChanged, AddressOf OnComboBoxValueChanged + AddHandler combo.TextChanged, AddressOf RecordChanged 'AddHandler combo.TextChanged, AddressOf RecordChanged 'AddHandler combo.GotFocus, AddressOf OnComboBoxFocus diff --git a/app/DD-Record-Organizer/ClassControlCommands.vb b/app/DD-Record-Organizer/ClassControlCommands.vb index bf147f9..9271409 100644 --- a/app/DD-Record-Organizer/ClassControlCommands.vb +++ b/app/DD-Record-Organizer/ClassControlCommands.vb @@ -340,9 +340,24 @@ CURRENT_CONTROL_ID = properties.ID End If - SQL = $"UPDATE TBPMO_CONTROL SET REQUIRED = {REQUIRED}, READ_ONLY = {READ_ONLY}, SHOW_COLUMN = {SHOW_COLUMN}, FORMAT_TYPE = '{FORMAT_TYPE}', DEFAULT_VALUE = '{DEFAULTVALUE}', - NAME = '{NAME}', SQL_COMMAND_1 = '{SQLCommand}', CHANGED_WHO = '{CHANGED_WHO}', COL_NAME = '{COL_NAME}', MULTILINE = {MULTILINE}, MASTER_DATA_ID = {MASTER_DATA_ID}, - STATIC_LIST = '{STATIC_LIST}', SQL_COMMAND_2 = '{SQL_ENABLED_WHEN}', VISIBLE = {VISIBLE}, TREE_VIEW = {TREE_VIEW}, SELECT_ONLY = {SELECT_ONLY}, AUTO_SUGGEST = {AUTO_SUGGEST} + SQL = $"UPDATE TBPMO_CONTROL + SET REQUIRED = {REQUIRED}, + READ_ONLY = {READ_ONLY}, + SHOW_COLUMN = {SHOW_COLUMN}, + FORMAT_TYPE = '{FORMAT_TYPE}', + DEFAULT_VALUE = '{DEFAULTVALUE}', + NAME = '{NAME}', + SQL_COMMAND_1 = '{SQLCommand}', + SQL_COMMAND_2 = '{SQL_ENABLED_WHEN}', + CHANGED_WHO = '{CHANGED_WHO}', + COL_NAME = '{COL_NAME}', + MULTILINE = {MULTILINE}, + MASTER_DATA_ID = {MASTER_DATA_ID}, + STATIC_LIST = '{STATIC_LIST}', + VISIBLE = {VISIBLE}, + TREE_VIEW = {TREE_VIEW}, + SELECT_ONLY = {SELECT_ONLY}, + AUTO_SUGGEST = {AUTO_SUGGEST} WHERE GUID = {CURRENT_CONTROL_ID}" If ClassDatabase.Execute_non_Query(SQL) = True Then @@ -493,11 +508,6 @@ End If End If - - - - - Return True Else Throw New Exception() diff --git a/app/DD-Record-Organizer/ClassControlCommandsUI.vb b/app/DD-Record-Organizer/ClassControlCommandsUI.vb index 7d378c1..db6c9a4 100644 --- a/app/DD-Record-Organizer/ClassControlCommandsUI.vb +++ b/app/DD-Record-Organizer/ClassControlCommandsUI.vb @@ -543,7 +543,14 @@ Public Class ClassControlCommandsUI End If End If Else ' Update Control - If TypeOf ctrl Is DevExpress.XtraEditors.DateEdit And (IsNothing(CONTROL_VALUE) Or CONTROL_VALUE = String.Empty) Then + Dim isEmptyValue As Boolean = IsNothing(CONTROL_VALUE) Or CONTROL_VALUE = String.Empty + Dim isDateEdit = TypeOf ctrl Is DevExpress.XtraEditors.DateEdit + Dim isTextBox = TypeOf ctrl Is TextBox + Dim isComboBox = TypeOf ctrl Is CustomComboBox + + ' Bei bestimmten Controls soll der Wert in CONTROL_VALUES gelöscht werden + ' wenn der Wert im Control leer ist + If (isDateEdit Or isTextBox Or isComboBox) And isEmptyValue Then Dim sql As String = $"DELETE FROM TBPMO_CONTROL_VALUE WHERE RECORD_ID = {RecordID} AND CONTROL_ID = {CONTROL_ID}" If ClassDatabase.Execute_non_Query(sql) = True Then diff --git a/app/DD-Record-Organizer/ClassDatabase.vb b/app/DD-Record-Organizer/ClassDatabase.vb index ae11828..e5aba6e 100644 --- a/app/DD-Record-Organizer/ClassDatabase.vb +++ b/app/DD-Record-Organizer/ClassDatabase.vb @@ -19,33 +19,7 @@ Public Class ClassDatabase End Try End Function - Public Shared Function CreateRecord_New(formId As Integer, Optional UseProxy As Boolean = False) - Dim SQLconnect As New SqlClient.SqlConnection - If UseProxy = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then - SQLconnect.ConnectionString = ClassProxy.MyPROXYConnectionString - Else - SQLconnect.ConnectionString = ClassDatabase.connectionString - End If - - Using cmd As New SqlCommand("PRPMO_CREATE_RECORD", SQLconnect) - - cmd.CommandType = CommandType.StoredProcedure - cmd.Parameters.AddWithValue("@pFORM_ID", formId) - cmd.Parameters.AddWithValue("@pADDED_WHO", Environment.UserName) - cmd.Parameters.Add("@pRESULT", SqlDbType.Int) - cmd.Parameters("@pRESULT").Direction = ParameterDirection.Output - - SQLconnect.Open() - cmd.ExecuteNonQuery() - SQLconnect.Close() - - Dim GUID As Integer = cmd.Parameters("@pRESULT").Value - - Return GUID - End Using - - End Function Public Shared Function GetConnectionString(id As Integer) Dim connectionString As String = "" diff --git a/app/DD-Record-Organizer/ClassRecordCommands.vb b/app/DD-Record-Organizer/ClassRecordCommands.vb index 13d09f7..e7e6fb1 100644 --- a/app/DD-Record-Organizer/ClassRecordCommands.vb +++ b/app/DD-Record-Organizer/ClassRecordCommands.vb @@ -1,4 +1,34 @@ -Public Class ClassRecordCommands +Imports System.Data.SqlClient + +Public Class ClassRecordCommands + Public Shared Function CreateRecordProcedure(formId As Integer) + Try + Dim connection As New SqlConnection + + connection.ConnectionString = MyConnectionString + + Using cmd As New SqlCommand("PRPMO_CREATE_RECORD", connection) + + cmd.CommandType = CommandType.StoredProcedure + cmd.Parameters.AddWithValue("@pFORM_ID", formId) + cmd.Parameters.AddWithValue("@pADDED_WHO", Environment.UserName) + cmd.Parameters.Add("@pRESULT", SqlDbType.Int) + cmd.Parameters("@pRESULT").Direction = ParameterDirection.Output + + connection.Open() + cmd.ExecuteNonQuery() + connection.Close() + + Dim GUID As Integer = cmd.Parameters("@pRESULT").Value + + Return GUID + End Using + Catch ex As Exception + ClassHelper.MSGBOX_Handler("ERROR", "Error", "Error in CreateRecordProcedure: ", ex.Message) + Return 0 + End Try + End Function + Public Shared Function CreateRecord(EntityID) Dim SQL = "INSERT INTO TBPMO_RECORD(ADDED_WHO, FORM_ID,RECORD_ENTITY_ID) VALUES ('" & USER_USERNAME & "', " & EntityID & ",4711)" Return ClassDatabase.Execute_non_Query(SQL) = True diff --git a/app/DD-Record-Organizer/frmConstructor_Main.vb b/app/DD-Record-Organizer/frmConstructor_Main.vb index b8a24a5..21f42af 100644 --- a/app/DD-Record-Organizer/frmConstructor_Main.vb +++ b/app/DD-Record-Organizer/frmConstructor_Main.vb @@ -1748,48 +1748,50 @@ Public Class frmConstructor_Main Me.Cursor = Cursors.WaitCursor ' Try If TCDetails.SelectedTabPage.Text.StartsWith("Pos") = False Then - SELECTED_RECORD_ID = 0 - Lock_RecordControls(False) - tsButtonCancel.Visible = True + SELECTED_RECORD_ID = 0 + Lock_RecordControls(False) + tsButtonCancel.Visible = True - CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID - ' Den Record anlegen, damit wir eine RECORD_ID bekommen - If ClassRecordCommands.CreateRecord(ENTITY_ID) = True Then + CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID + ' Den Record anlegen, damit wir eine RECORD_ID bekommen + + Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID) + + If recordId > 0 Then ' Die RECORD_ID auslesen und setzen - NEW_RECORD_ID = ClassRecordCommands.GetLastRecord() + NEW_RECORD_ID = recordId CURRENT_RECORD_ID = NEW_RECORD_ID - RECORD_ID = NEW_RECORD_ID - SELECTED_RECORD_ID = NEW_RECORD_ID - ClassProxy.PRPROXY_RECORD_UPD_INS(ENTITY_ID, SELECTED_RECORD_ID) - If PARENT_ENTITYID > 0 And PARENT_RECORDID > 0 Then - If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, CURRENT_RECORD_ID, "INSERT RECORD") = False Then - ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "In Connecting Record - Check the log!") - Else - ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, CURRENT_RECORD_ID) - End If + RECORD_ID = NEW_RECORD_ID + SELECTED_RECORD_ID = NEW_RECORD_ID + ClassProxy.PRPROXY_RECORD_UPD_INS(ENTITY_ID, SELECTED_RECORD_ID) + If PARENT_ENTITYID > 0 And PARENT_RECORDID > 0 Then + If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, CURRENT_RECORD_ID, "INSERT RECORD") = False Then + ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "In Connecting Record - Check the log!") + Else + ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, CURRENT_RECORD_ID) End If - - ClassControlValues.LoadDefaultValues(ENTITY_ID, SELECTED_RECORD_ID, pnlDetails.Controls, CURRENT_PARENT_ENTITY_ID, ENTITY_ID) - ClassControlValues.Enable_Depending_Controls(ENTITY_ID, RECORD_ID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID) - ' Das StatusLabel aktualisieren - Update_Record_Label(NEW_RECORD_ID) - Doc_ReadOnlyHandler(True) - RUN_WDSEARCH_GRID() - ' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden - tsButtonSave.Enabled = True - ' Muss aktiviert werden, sonst funktionieren die Combobox Abhängigkeits Events nicht - CURRENT_RECORD_ENABLED = True - ' EDIT_STATE muss hier (immer?) Update sein, sonst wird beim Speichern noch ein Datensatz angelegt - EDIT_STATE = EditState.Update - RECORD_CHANGED = True - 'tsslblRecord.Text = "Adding record ......" - RIGHT_RECORD_AND_FILE_READ_ONLY = False - tslblLocked.Visible = False - tslblFileslocked.Visible = False - tsButtonAdd.Enabled = False End If + ClassControlValues.LoadDefaultValues(ENTITY_ID, SELECTED_RECORD_ID, pnlDetails.Controls, CURRENT_PARENT_ENTITY_ID, ENTITY_ID) + ClassControlValues.Enable_Depending_Controls(ENTITY_ID, RECORD_ID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID) + ' Das StatusLabel aktualisieren + Update_Record_Label(NEW_RECORD_ID) + Doc_ReadOnlyHandler(True) + RUN_WDSEARCH_GRID() + ' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden + tsButtonSave.Enabled = True + ' Muss aktiviert werden, sonst funktionieren die Combobox Abhängigkeits Events nicht + CURRENT_RECORD_ENABLED = True + ' EDIT_STATE muss hier (immer?) Update sein, sonst wird beim Speichern noch ein Datensatz angelegt + EDIT_STATE = EditState.Update + RECORD_CHANGED = True + 'tsslblRecord.Text = "Adding record ......" + RIGHT_RECORD_AND_FILE_READ_ONLY = False + tslblLocked.Visible = False + tslblFileslocked.Visible = False + tsButtonAdd.Enabled = False End If + End If ' Catch ex As Exception 'ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error tsButtonAdd", ex.Message, ex.StackTrace) ' Finally @@ -2863,8 +2865,11 @@ Public Class frmConstructor_Main Dim sql As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} and T1.FORM_ID = {1}", PARENT_RECORD_ID, ENTITY_ID) Dim GRP_SINGLE_REC = ClassDatabase.Execute_Scalar(sql, True) If IsNothing(GRP_SINGLE_REC) Then - If ClassRecordCommands.CreateRecord(ENTITY_ID) = True Then - GRP_SINGLE_REC = ClassRecordCommands.GetLastRecord + + Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID) + + If recordId > 0 Then + GRP_SINGLE_REC = recordId If Not IsNothing(GRP_SINGLE_REC) Then 'Die neue Record-ID setzen RECORD_ID = GRP_SINGLE_REC @@ -4790,18 +4795,17 @@ Public Class frmConstructor_Main sql = String.Format("SELECT CONTROL_ID FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND FORM_ID = {1} AND CONTROL_COLUMN = '{2}' AND RECORD_ID = {3}", controlid, POS_ENTITY, column, POS_RECORD_ID) Dim cId As Integer = ClassDatabase.Execute_Scalar(sql, True) If IsNothing(POS_RECORD_ID) Or IsDBNull(POS_RECORD_ID) Then - If ClassRecordCommands.CreateRecord(POS_ENTITY) = True Then - Dim recid = ClassRecordCommands.GetLastRecord - If Not IsNothing(recid) Then - 'Die neue Record-ID setzen - POS_RECORD_ID = recid - ClassProxy.PRPROXY_RECORD_UPD_INS(POS_ENTITY, POS_RECORD_ID) - If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, POS_RECORD_ID, "POS_LINK for Entity " & POS_ENTITY.ToString) = True Then - ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, POS_RECORD_ID) - End If - Else - MsgBox("Unexpected Error in Creating POS", MsgBoxStyle.Exclamation) + Dim recordId = ClassRecordCommands.CreateRecordProcedure(POS_ENTITY) + + If recordId > 0 Then + 'Die neue Record-ID setzen + POS_RECORD_ID = recordId + ClassProxy.PRPROXY_RECORD_UPD_INS(POS_ENTITY, POS_RECORD_ID) + If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, POS_RECORD_ID, "POS_LINK for Entity " & POS_ENTITY.ToString) = True Then + ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, POS_RECORD_ID) End If + Else + MsgBox("Unexpected Error in Creating POS", MsgBoxStyle.Exclamation) End If End If ' Wenn cId = 0, existiert noch kein wert für diese controlId/FormId Kombination @@ -4819,9 +4823,6 @@ Public Class frmConstructor_Main Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in grvwGridPos_CellValueChanged: ", ex.Message) End Try - - - End Sub Private Sub grvwGridPos_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) Handles grvwGridPos.FocusedRowChanged @@ -6402,13 +6403,15 @@ Public Class frmConstructor_Main Dim NEWRECORD As Integer If RECORD_CREATE = True Then - ClassRecordCommands.CreateRecord(ENTITY_ID) - Try - NEWRECORD = ClassRecordCommands.GetLastRecord() - Catch ex As Exception - Dim SQL = "SELECT (MAX(GUID)) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND ADDED_WHO = '" & USER_USERNAME & "'" - NEWRECORD = ClassDatabase.Execute_Scalar(SQL) - End Try + Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID) + + If recordId = 0 Then + ClassLogger.Add("Error in ADD_NODE: Could not create Record", True) + ClassHelper.MSGBOX_Handler("ERROR", "Error in ADD_NODE", "Could not create Record") + Exit Sub + Else + NEWRECORD = recordId + End If End If 'Dim NEWRECORD As Integer = ClassControlCommandsUI.GetLastRecord(ENTITY_ID) diff --git a/app/DD-Record-Organizer/frmWD_Import_Doc_Record.vb b/app/DD-Record-Organizer/frmWD_Import_Doc_Record.vb index 7d0f2a3..87869d6 100644 --- a/app/DD-Record-Organizer/frmWD_Import_Doc_Record.vb +++ b/app/DD-Record-Organizer/frmWD_Import_Doc_Record.vb @@ -494,11 +494,17 @@ Public Class frmWD_Import_Doc_Record If IMPORT_REC_ID = Nothing Then If LogErrorsOnly = False Then ClassLogger.Add(" >> Record is new!", False) 'Den Record inserten - ClassRecordCommands.CreateRecord(PROFILE_ENTITY) - IMPORT_REC_ID = ClassRecordCommands.GetLastRecord() - REC_ADDED = True - If LogErrorsOnly = False Then ClassLogger.Add(" >> New Record-ID: " & IMPORT_REC_ID.ToString, False) - _RecordsAdded += 1 + + Dim recordId = ClassRecordCommands.CreateRecordProcedure(PROFILE_ENTITY) + + If recordId > 0 Then + IMPORT_REC_ID = recordId + REC_ADDED = True + If LogErrorsOnly = False Then ClassLogger.Add(" >> New Record-ID: " & IMPORT_REC_ID.ToString, False) + _RecordsAdded += 1 + Else + Throw New Exception("Could not create Record") + End If Else ClassLogger.Add(">> ## RECORD already exists - Record-ID: '" & IMPORT_REC_ID.ToString & "' ##", False) If LogErrorsOnly = True Then ClassLogger.Add(">> Unique SQL: " & SQL_UNIQUE_FILE, False) @@ -544,10 +550,16 @@ Public Class frmWD_Import_Doc_Record If IMP_PARENT_REC_ID = Nothing Then If LogErrorsOnly = False Then ClassLogger.Add(" >> No PARENT_RECORD found!", False) 'Den Record inserten - ClassRecordCommands.CreateRecord(PROFILE_ENTITY) - IMP_PARENT_REC_ID = ClassRecordCommands.GetLastRecord() - If LogErrorsOnly = False Then ClassLogger.Add(" >> New PARENT_RECORD-ID: " & IMP_PARENT_REC_ID.ToString, False) - _RecordsAdded += 1 + + Dim recordId = ClassRecordCommands.CreateRecordProcedure(PROFILE_ENTITY) + + If recordId > 0 Then + IMP_PARENT_REC_ID = recordId + If LogErrorsOnly = False Then ClassLogger.Add(" >> New PARENT_RECORD-ID: " & IMP_PARENT_REC_ID.ToString, False) + _RecordsAdded += 1 + Else + Throw New Exception("Could not create Record. Check PRPMO_CREATE_RECORD Procedure.") + End If Else ClassLogger.Add(">> ## PARENT_RECORD already exists - PARENT_RECORD-ID: '" & IMP_PARENT_REC_ID.ToString & "' ##", False) If LogErrorsOnly = True Then ClassLogger.Add(">> parent SQL: " & SQL_PARENT, False)