From 0f7749c81097896df3c6230e66c2d089d7ced32d Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Wed, 18 Mar 2020 13:56:14 +0100 Subject: [PATCH] MS GridControlConnID --- app/DD_PM_WINDREAM/frmValidator.vb | 262 +++++++++++++++-------------- 1 file changed, 138 insertions(+), 124 deletions(-) diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 2239d94..eb4e882 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -57,7 +57,7 @@ Public Class frmValidator Private DTCONTROLS As DataTable Private DTGRID_COLUMNS_WITH_SQL As DataTable Private DTGRID_COLUMNS As DataTable - Private DTGRID_COLUMNS_TEXTBOX As DataTable + Private DTGRID_SQL_DEFINITION As DataTable Public FormLoaded As Boolean = False Private ItemWorked As Boolean = False @@ -637,13 +637,13 @@ Public Class frmValidator pnldesigner.Controls.Clear() Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC" DTCONTROLS = ClassDatabase.Return_Datatable(oSQL) - oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.SQL_COMMAND, T.SPALTENNAME from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 0 ORDER BY T.SEQUENCE" + oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 0 ORDER BY T.SEQUENCE" DTGRID_COLUMNS_WITH_SQL = ClassDatabase.Return_Datatable(oSQL) oSQL = $"SELECT T.* from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY T.SEQUENCE" DTGRID_COLUMNS = ClassDatabase.Return_Datatable(oSQL) - oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.SQL_COMMAND, T.SPALTENNAME from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 1 ORDER BY T.SEQUENCE" - DTGRID_COLUMNS_TEXTBOX = ClassDatabase.Return_Datatable(oSQL) + oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 1 ORDER BY T.SEQUENCE" + DTGRID_SQL_DEFINITION = ClassDatabase.Return_Datatable(oSQL) Dim oCount As Integer = 0 @@ -1221,7 +1221,9 @@ Public Class frmValidator End If Case "Override_Direct".ToUpper Override = True - Finish_WFStep() + Finish_WFStep(False) + Case "Override incFinal".ToUpper + Finish_WFStep(False) Case Else MsgBox($"No configured action provided for onCustomButtonClick [{oAction}]", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) LOGGER.Warn($"No configured action provided for onCustomButtonClick [{oAction}]") @@ -1562,6 +1564,7 @@ Public Class frmValidator If oSQLColumnDatatable.Rows.Count > 0 Then For Each oRow As DataRow In oSQLColumnDatatable.Rows Dim oDEPENDING_GUID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONTROL_ID") + Dim oCONNID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONNECTION_ID") Dim oDEPENDING_COLUMN = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SPALTENNAME") Dim oSqlCommand = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SQL_COMMAND") If _dependingColumn_in_action = True Then @@ -1571,14 +1574,19 @@ Public Class frmValidator _dependingColumn_in_action = True Try - Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable(oSqlCommand) - For Each oControl As Control In pnldesigner.Controls - If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then - ClassControlCreator.GridTables.Add(oDEPENDING_COLUMN, oDTDEPENDING_RESULT) - _dependingColumn_in_action = False - Exit For - End If - Next + + Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID) + If Not IsNothing(oDTDEPENDING_RESULT) Then + LOGGER.Debug($"Trying to fill the DropDown (DC) for GridColumnGuid [{oDEPENDING_GUID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ") + For Each oControl As Control In pnldesigner.Controls + If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then + ClassControlCreator.GridTables.Add(oDEPENDING_COLUMN, oDTDEPENDING_RESULT) + _dependingColumn_in_action = False + Exit For + End If + Next + End If + Catch ex As Exception LOGGER.Error(ex) _dependingColumn_in_action = False @@ -1907,13 +1915,13 @@ Public Class frmValidator ' oResult = "\\dd-gan.local.digitaldata.works\DD-DFSR01\UserObjects\UserFiles\schreiberm\Desktop\AANG-3302-swbn.pdf" 'Else LOGGER.Debug($"GetWMDocPathWindows returned false - trying with standard again...") - oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)" - oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) - LOGGER.Debug($"Checking file 1[{oResult}] exists?...") - If File.Exists(oResult) = False Then - LOGGER.Warn($"File {oResult} not existing!") - Return False - End If + oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)" + oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) + LOGGER.Debug($"Checking file 1[{oResult}] exists?...") + If File.Exists(oResult) = False Then + LOGGER.Warn($"File {oResult} not existing!") + Return False + End If 'End If End If WMDocPathWindows = oResult @@ -2990,32 +2998,35 @@ Public Class frmValidator ' set_foreground() If first_control Is Nothing = False Then first_control.Focus() Try - For Each oRow As DataRow In DTGRID_COLUMNS_TEXTBOX.Rows + For Each oRow As DataRow In DTGRID_SQL_DEFINITION.Rows + Dim oDEPENDING_GUID = oRow.Item("CONTROL_ID") Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME") Dim oSqlCommand = oRow.Item("SQL_COMMAND") + Dim oCONNID = oRow.Item("CONNECTION_ID") oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID) - Try - Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable(oSqlCommand) - If Not IsNothing(oDTDEPENDING_RESULT) Then + Dim oDTRESULT_FOR_COLUMN As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID) + If Not IsNothing(oDTRESULT_FOR_COLUMN) Then + LOGGER.Debug($"Trying to create a DropDown(FI) for GridColumnGuid [{oDEPENDING_GUID}]..RowCount: [{oDTRESULT_FOR_COLUMN.Rows.Count}] ") For Each oControl As Control In pnldesigner.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then - ClassControlCreator.GridTables.Add(oDEPENDING_COLUMN, oDTDEPENDING_RESULT) - + ClassControlCreator.GridTables.Add(oDEPENDING_COLUMN, oDTRESULT_FOR_COLUMN) Exit For End If Next + Else + LOGGER.Warn($"oDTRESULT_FOR_COLUMN is nothing!") End If Catch ex As Exception - LOGGER.Warn($"Unexpected error in creating dropdown for oDEPENDING_GUID {oDEPENDING_GUID} an Column {oDEPENDING_COLUMN} " & ex.Message) + LOGGER.Warn($"Unexpected error in creating dropdown(FI) for oDEPENDING_GUID {oDEPENDING_GUID} an Column {oDEPENDING_COLUMN} " & ex.Message) End Try Next Catch ex As Exception - LOGGER.Warn($"Unexpected error in creating dropdown for Grid: " & ex.Message) + LOGGER.Warn($"Unexpected error in creating dropdown(FI) for Grid: " & ex.Message) End Try @@ -3186,7 +3197,7 @@ Public Class frmValidator Return False End Try End Function - Sub Finish_WFStep() + Sub Finish_WFStep(Optional includeFI As Boolean = True) btnSave.Enabled = False LOGGER.Debug("Abschluss für Dok: " & CURRENT_DOC_PATH & " gestartet") ItemWorked = True @@ -3201,119 +3212,122 @@ Public Class frmValidator End If End If - 'lblerror.Visible = False - Try - TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Fill(FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING, CURRENT_ProfilName) - Dim oDTFinalIndexes As DataTable = FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING - If oDTFinalIndexes?.Rows.Count > 0 Then - 'Jetzt finale Indexe setzen - LOGGER.Debug("FINAL INDEXING STARTING...") - For Each oFinalIndexRow As DataRow In oDTFinalIndexes.Rows - Dim oValue As String = oFinalIndexRow.Item("VALUE").ToString - Dim oIndexType = 0 - If IDB_ACTIVE = False Then - oIndexType = WINDREAM.GetTypeOfIndex(oFinalIndexRow.Item("INDEXNAME")) - End If - If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ### - LOGGER.Debug("Indexing wih dynamic sql...") - Dim oSQLCommand = oFinalIndexRow.Item("SQL_COMMAND") - - oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID) - If IsNothing(oSQLCommand) Then - errormessage = "Error while replacing Values in final indexing - Check the log" - My.Settings.Save() - frmError.ShowDialog() - oErrorOcurred = True - ItemWorked = False + If includeFI = True Then + Try + TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Fill(FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING, CURRENT_ProfilName) + Dim oDTFinalIndexes As DataTable = FinalIndexDataSet.TBPM_PROFILE_FINAL_INDEXING + If oDTFinalIndexes?.Rows.Count > 0 Then + 'Jetzt finale Indexe setzen + LOGGER.Debug("FINAL INDEXING STARTING...") + For Each oFinalIndexRow As DataRow In oDTFinalIndexes.Rows + Dim oValue As String = oFinalIndexRow.Item("VALUE").ToString + Dim oIndexType = 0 + If IDB_ACTIVE = False Then + oIndexType = WINDREAM.GetTypeOfIndex(oFinalIndexRow.Item("INDEXNAME")) End If - If Not IsNothing(oSQLCommand) Then - Dim oResultfromSQL = ClassDatabase.Execute_Scalar(oSQLCommand, CONNECTION_STRING, True) + If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ### + LOGGER.Debug("Indexing wih dynamic sql...") + Dim oSQLCommand = oFinalIndexRow.Item("SQL_COMMAND") + + oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, pnldesigner, CURRENT_WMFILE, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID) + If IsNothing(oSQLCommand) Then + errormessage = "Error while replacing Values in final indexing - Check the log" + My.Settings.Save() + frmError.ShowDialog() + oErrorOcurred = True + ItemWorked = False + End If + If Not IsNothing(oSQLCommand) Then + Dim oResultfromSQL = ClassDatabase.Execute_Scalar(oSQLCommand, CONNECTION_STRING, True) - If Not IsNothing(oResultfromSQL) Then - LOGGER.Debug($"oResultfromSQL is [{oResultfromSQL.ToString}]") - oValue = oResultfromSQL - Else - LOGGER.Info("ATTENTION: DYNAMIC VALUE IS NOTHING!") + If Not IsNothing(oResultfromSQL) Then + LOGGER.Debug($"oResultfromSQL is [{oResultfromSQL.ToString}]") + oValue = oResultfromSQL + Else + LOGGER.Info("ATTENTION: DYNAMIC VALUE IS NOTHING!") + End If End If - End If - Else - If oValue.StartsWith("v") Then - Select Case oFinalIndexRow.Item("VALUE").ToString - Case "vDate" - oValue = Now.ToShortDateString - Case "vUserName" - oValue = USER_USERNAME - Case Else - oValue = oFinalIndexRow.Item("VALUE") - End Select - End If - End If - If oErrorOcurred Then - Exit For - End If - Dim oResult() As String - ReDim Preserve oResult(0) - oResult(0) = oValue - - LOGGER.Debug($"oIndexType {oIndexType.ToString}") - If oIndexType > 4000 And oIndexType < 5000 Then - 'If dr.Item("INDEXNAME").ToString.StartsWith("[%VKT") Then - ' Dim PM_String = Return_PM_VEKTOR(value, dr.Item("INDEXNAME")) - 'Hier muss nun separat as Vektorfeld indexiert werden - If WMIndexVectofield(oValue, oFinalIndexRow.Item("INDEXNAME"), oFinalIndexRow.Item("PREVENT_DUPLICATES"), oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = False Then - LOGGER.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has beens et suxxessfully!") Else - errormessage = "Error in final indexing:" & vbNewLine & idxerr_message - My.Settings.Save() - frmError.ShowDialog() - oErrorOcurred = True - ItemWorked = False + If oValue.StartsWith("v") Then + Select Case oFinalIndexRow.Item("VALUE").ToString + Case "vDate" + oValue = Now.ToShortDateString + Case "vUserName" + oValue = USER_USERNAME + Case Else + oValue = oFinalIndexRow.Item("VALUE") + End Select + End If End If - Else - LOGGER.Debug("Now the final indexing...") - Dim oFIResult As Boolean = False - If IDB_ACTIVE = False Then - If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then - oFIResult = True - LOGGER.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT") - - 'Nun das Logging - If PROFIL_LOGINDEX <> "" Then - Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME")) - WMIndexVectofield(logstr, PROFIL_LOGINDEX) - End If + If oErrorOcurred Then + Exit For + End If + Dim oResult() As String + ReDim Preserve oResult(0) + oResult(0) = oValue + + LOGGER.Debug($"oIndexType {oIndexType.ToString}") + If oIndexType > 4000 And oIndexType < 5000 Then + 'If dr.Item("INDEXNAME").ToString.StartsWith("[%VKT") Then + ' Dim PM_String = Return_PM_VEKTOR(value, dr.Item("INDEXNAME")) + 'Hier muss nun separat as Vektorfeld indexiert werden + If WMIndexVectofield(oValue, oFinalIndexRow.Item("INDEXNAME"), oFinalIndexRow.Item("PREVENT_DUPLICATES"), oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = False Then + LOGGER.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has beens et suxxessfully!") + Else + errormessage = "Error in final indexing:" & vbNewLine & idxerr_message + My.Settings.Save() + frmError.ShowDialog() + oErrorOcurred = True + ItemWorked = False End If Else - If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then - oFIResult = True - LOGGER.Debug("Final index IDB '" & oFinalIndexRow.Item("INDEXNAME") & "' was updated.") + LOGGER.Debug("Now the final indexing...") + Dim oFIResult As Boolean = False + If IDB_ACTIVE = False Then + If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then + oFIResult = True + LOGGER.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT") + + 'Nun das Logging + If PROFIL_LOGINDEX <> "" Then + Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME")) + WMIndexVectofield(logstr, PROFIL_LOGINDEX) + End If + End If + Else + If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then + oFIResult = True + LOGGER.Debug("Final index IDB '" & oFinalIndexRow.Item("INDEXNAME") & "' was updated.") + End If End If + If oFIResult = False Then + errormessage = "Error in final indexing:" & vbNewLine & idxerr_message + My.Settings.Save() + frmError.ShowDialog() + oErrorOcurred = True + ItemWorked = False + End If + End If - If oFIResult = False Then - errormessage = "Error in final indexing:" & vbNewLine & idxerr_message - My.Settings.Save() - frmError.ShowDialog() - oErrorOcurred = True + If oErrorOcurred = True Then ItemWorked = False + Exit For End If - - End If - If oErrorOcurred = True Then - ItemWorked = False - Exit For - End If - Next - End If + Next + End If + Catch ex As Exception + LOGGER.Warn($"Error in finalIndexing: {ex.Message}") + oErrorOcurred = True + End Try + End If + Try ''Wenn kein Fehler nach der finalen Indexierung gesetzt wurde If Override = True And Override_SQLCommand <> "" Then ClassDatabase.Execute_non_Query(Override_SQLCommand) End If If oErrorOcurred = False Then - 'TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", Document_ID) - ''Das Dokument - 'TBPM_PROFILE_FILESTableAdapter.CmdSetEdit(Document_ID) Dim WORK_HISTORY_ENTRY = Nothing Try