MS: Anpassungen Depending Controls CMB2CMB Datasource

This commit is contained in:
Digital Data - Marlon Schreiber 2018-04-27 09:22:49 +02:00
parent 5d6dc32e22
commit 1a9254630f
2 changed files with 45 additions and 49 deletions

View File

@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.9.3.9")> <Assembly: AssemblyVersion("1.9.4.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@ -50,6 +50,8 @@ Public Class frmValidator
Dim viewer_string As String Dim viewer_string As String
Dim pdfxchange As Boolean = False Dim pdfxchange As Boolean = False
Dim sumatra As Boolean = False Dim sumatra As Boolean = False
Private _dependingControl_in_action As Boolean = False
<DllImport("user32.dll", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> <DllImport("user32.dll", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)>
Public Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean Public Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function End Function
@ -1098,27 +1100,9 @@ Public Class frmValidator
End Try End Try
Next Next
_dependingControl_in_action = True
Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
_dependingControl_in_action = False
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
End If End If
Catch ex As Exception Catch ex As Exception
ClassLogger.Add("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message) 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 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) Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
If Not IsNothing(DT) And DT.Rows.Count > 0 Then 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 For Each ROW As DataRow In DT.Rows
Try Try
Dim displayboxname = ROW.Item(0).ToString Dim displayboxname = ROW.Item(0).ToString
@ -1227,39 +1215,17 @@ Public Class frmValidator
input_value = cmb1.Text input_value = cmb1.Text
End If End If
sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value) sql_Statement = sql_Statement.ToString.Replace(element.Value, input_value)
If LogErrorsOnly = False Then ClassLogger.Add(">>> sql_Statement: " & sql_Statement)
Catch ex As Exception Catch ex As Exception
ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message) ClassLogger.Add("Unexpected Error in Checking control values for Variable SQL Result ComboBox - ERROR: " & ex.Message)
End Try End Try
Next 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)) _dependingControl_in_action = True
If resultDT.Rows.Count = 1 Then Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
'Nur dediziert einen Wert zurückerhalten _dependingControl_in_action = False
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
End If End If
Catch ex As Exception Catch ex As Exception
@ -1275,6 +1241,36 @@ Public Class frmValidator
End If End If
End If End If
End Sub 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) Public Sub OnDTPValueChanged(sender As System.Object, e As System.EventArgs)
Dim dtp As DateTimePicker = sender Dim dtp As DateTimePicker = sender
If _Indexe_Loaded = True Then If _Indexe_Loaded = True Then