diff --git a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb index 16a0a56..c2baa29 100644 --- a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb +++ b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 761e682..093baf9 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -50,6 +50,8 @@ Public Class frmValidator Dim viewer_string As String Dim pdfxchange As Boolean = False Dim sumatra As Boolean = False + Private _dependingControl_in_action As Boolean = False + Public Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As Boolean End Function @@ -1098,27 +1100,9 @@ Public Class frmValidator End Try Next - - - - Dim resultDT As DataTable = ClassDatabase.Return_Datatable_CS(sql_Statement, ROW.Item(1)) - If resultDT.Rows.Count >= 1 Then - 'Nur dediziert einen Wert zurückerhalten - For Each row1 As DataRow In resultDT.Rows - Dim result = row1.Item(0) - If Not IsNothing(result) Then - pnldesigner.Controls(displayboxname).Text = result.ToString - Exit For - Else - pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING" - Exit For - End If - Next - Else - pnldesigner.Controls(displayboxname).Text = "NO RESULT" - End If - - + _dependingControl_in_action = True + Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1)) + _dependingControl_in_action = False End If Catch ex As Exception ClassLogger.Add("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message) @@ -1200,6 +1184,10 @@ Public Class frmValidator Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, cmb.Name) Dim DT As DataTable = ClassDatabase.Return_Datatable(sql) If Not IsNothing(DT) And DT.Rows.Count > 0 Then + If _dependingControl_in_action = True Then + Exit Sub + End If + For Each ROW As DataRow In DT.Rows Try Dim displayboxname = ROW.Item(0).ToString @@ -1227,39 +1215,17 @@ Public Class frmValidator input_value = cmb1.Text End If sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) - If LogErrorsOnly = False Then ClassLogger.Add(">>> sql_Statement: " & sql_Statement) + Catch ex As Exception ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message) End Try Next + If LogErrorsOnly = False Then ClassLogger.Add(">>> sql_Statement after replacement: " & sql_Statement) - Dim resultDT As DataTable = ClassDatabase.Return_Datatable_CS(sql_Statement, ROW.Item(1)) - If resultDT.Rows.Count = 1 Then - 'Nur dediziert einen Wert zurückerhalten - For Each row1 As DataRow In resultDT.Rows - Dim result = row1.Item(0) - If Not IsNothing(result) Then - pnldesigner.Controls(displayboxname).Text = result.ToString - Exit For - Else - pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING" - Exit For - End If - Next - ElseIf resultDT.Rows.Count > 1 Then - 'Ist das Control ein Control was mehrfachwerte enthalten kann - If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then - - Else - MsgBox("Result contains more than one rows!", MsgBoxStyle.Information) - - End If - ' wenn ja: dann datasource an control anpassen - Else - pnldesigner.Controls(displayboxname).Text = "NO RESULT" - End If - + _dependingControl_in_action = True + Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1)) + _dependingControl_in_action = False End If Catch ex As Exception @@ -1275,6 +1241,36 @@ Public Class frmValidator End If End If End Sub + Private Sub Depending_Control_Set_Result(displayboxname As String, sqlCommand As String, sqlConnection As String) + Try + Dim resultDT As DataTable = ClassDatabase.Return_Datatable_CS(sqlCommand, sqlConnection) + If Not IsNothing(resultDT) Then + 'Ist das Control ein Control was mehrfachwerte enthalten kann + If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_DATAGRIDVIEW) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then + If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then + Dim cmbpanel As ComboBox = pnldesigner.Controls(displayboxname) + cmbpanel.DataSource = Nothing + cmbpanel.DataSource = resultDT + cmbpanel.DisplayMember = resultDT.Columns(0).ColumnName + cmbpanel.ValueMember = resultDT.Columns(0).ColumnName + + ElseIf displayboxname.StartsWith(ClassControlCreator.PREFIX_DATAGRIDVIEW) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then + 'not implemented + End If + Else + If resultDT.Rows.Count = 1 Then + pnldesigner.Controls(displayboxname).Text = resultDT.Rows(0).Item(0).ToString + Else + pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING or MORE THAN 1 ROW" + + End If + End If + End If + Catch ex As Exception + ClassLogger.Add("Unexpected Error in Depending_Control_Set_Result - ERROR: " & ex.Message) + MsgBox("Unexpected error: " & ex.Message, MsgBoxStyle.Critical) + End Try + End Sub Public Sub OnDTPValueChanged(sender As System.Object, e As System.EventArgs) Dim dtp As DateTimePicker = sender If _Indexe_Loaded = True Then