This commit is contained in:
SchreiberM
2016-04-19 11:10:28 +02:00
10 changed files with 378 additions and 315 deletions

View File

@@ -487,14 +487,8 @@ Public Class ClassControlCommandsUI
End Sub
Private Sub UpdateAllControls(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection)
Dim controlGUID
Try
For Each ctrl As Control In controls
controlGUID = DirectCast(ctrl.Tag, ClassControlMetadata).Id
If controlGUID = 993 Then
Console.WriteLine("Obacht")
End If
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)
Dim CONTROL_VALUE As String = GetControlValue(ctrl)
@@ -512,27 +506,15 @@ Public Class ClassControlCommandsUI
End If
If TypeOf ctrl Is DevExpress.XtraEditors.CheckedListBoxControl Then
Try
If Not IsNothing(CONTROL_VALUE) Then
Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id
UpdateMultipleValues(id, RecordID, CONTROL_VALUE)
Continue For
End If
Catch ex As Exception
MsgBox("Unexpected Error in UpdateAllControls-CheckedListBox: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id
UpdateMultipleValues(id, RecordID, CONTROL_VALUE)
Continue For
End If
If TypeOf ctrl Is Windows.Forms.DataGridView Then
Try
Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id
UpdateMultipleValues(id, RecordID, CONTROL_VALUE)
Continue For
Catch ex As Exception
MsgBox("Unexpected Error in UpdateAllControls-DataGridView: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id
UpdateMultipleValues(id, RecordID, CONTROL_VALUE)
Continue For
End If
Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID))
@@ -549,7 +531,7 @@ Public Class ClassControlCommandsUI
End If
Next
Catch ex As Exception
MsgBox("Unexpected Error in UpdateAllControls - Control-ID: " & controlGUID.tostring & vbNewLine & ex.Message, MsgBoxStyle.Critical)
MsgBox("Unexpected Error in UpdateAllControls: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
@@ -580,169 +562,135 @@ Public Class ClassControlCommandsUI
End Sub
Function GetControlValue(ctrl As Control) As String
Try
Dim type = ctrl.GetType().Name
Dim CONTROL_ID As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id ' GetControlID_for_RecordID(ctrl.Name, CURRENT_RECORD_ID)
If LogErrorsOnly = False Then ClassLogger.Add(" >> GetControlValue CONTROL_ID: " & CONTROL_ID, False)
Dim CONTROL_VALUE As String = Nothing
If LogErrorsOnly = False Then ClassLogger.Add(" >> type = " & type.ToString, False)
Select Case type
Case "TextBox"
Return DirectCast(ctrl, TextBox).Text
Case "ComboBox"
If LogErrorsOnly = False Then ClassLogger.Add(" >> Return Value: " & DirectCast(ctrl, ComboBox).Text, False)
Return DirectCast(ctrl, ComboBox).Text
Case "CheckBox"
Return DirectCast(ctrl, CheckBox).Checked.ToString()
Case "RadioButton"
Return DirectCast(ctrl, RadioButton).Checked.ToString()
Case "DateEdit"
Dim Value = DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).EditValue
If IsDBNull(Value) Then
Return ""
Else
Return DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).DateTime.ToString("yyyy-MM-dd")
End If
Case "PictureBox"
'Return "PictureBox" 'Es ist egal was für ein String hier zurückgegeben wird, hauptsache nicht Nothing
Case "CheckedListBoxControl"
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
chklbx = DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl)
Dim type = ctrl.GetType().Name
Dim CONTROL_ID As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id ' GetControlID_for_RecordID(ctrl.Name, CURRENT_RECORD_ID)
If LogErrorsOnly = False Then ClassLogger.Add(" >> GetControlValue CONTROL_ID: " & CONTROL_ID, False)
Dim CONTROL_VALUE As String = Nothing
If LogErrorsOnly = False Then ClassLogger.Add(" >> type = " & type.ToString, False)
Select Case type
Case "TextBox"
Return DirectCast(ctrl, TextBox).Text
Case "ComboBox"
If LogErrorsOnly = False Then ClassLogger.Add(" >> Return Value: " & DirectCast(ctrl, CustomComboBox).Text, False)
Return DirectCast(ctrl, CustomComboBox).Text
Case "CheckBox"
Return DirectCast(ctrl, CheckBox).Checked.ToString()
Case "RadioButton"
Return DirectCast(ctrl, RadioButton).Checked.ToString()
Case "DateEdit"
Dim Value = DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).EditValue
'TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern
If IsNothing(chklbx.DataSource) Then
Dim result As New List(Of String)
Dim result_string As String
If IsDBNull(Value) Then
Return ""
Else
Return DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).DateTime.ToString("yyyy-MM-dd")
End If
Case "PictureBox"
'Return "PictureBox" 'Es ist egal was für ein String hier zurückgegeben wird, hauptsache nicht Nothing
Case "CheckedListBoxControl"
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
chklbx = DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl)
For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems
result.Add(item.Value.ToString.Trim)
Next
'TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern
If IsNothing(chklbx.DataSource) Then
Dim result As New List(Of String)
Dim result_string As String
result_string = String.Join(";", result)
' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll
' Überspringt den Rest der funktion
Return result_string
End If
Dim countSelectedItems As Integer = 0
For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems
countSelectedItems += 1
For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems
result.Add(item.Value.ToString.Trim)
Next
Dim sqlControl = ClassDatabase.Execute_Scalar("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID)
sqlControl = sqlControl.ToString.ToUpper
Dim checked_result_string As String
If sqlControl.contains("SELECT [RECORD-ID],") Then
'Alle Recorddatensätze durchlaufen und überprüfen ob nicht angehakt
'Wenn nicht angehakt dann Record löschen
Dim index As Integer = 0
For i As Integer = 0 To chklbx.ItemCount - 1
Dim item = chklbx.GetItem(i)
Dim row As DataRowView = CType(item, DataRowView)
If chklbx.GetItemCheckState(i) = 0 Then
Try
If CInt(row(0)) > 0 Then
'Überprüfen ob es den Record gibt
Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_Scalar(SQL) = 1 Then
SQL = "DELETE FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_non_Query(SQL) = True Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> TBPMO_RECORD_CONNECT-Entry after 'deselect CheckedListBox' deleted", False)
End If
End If
End If
Catch ex As Exception
ClassLogger.Add(" >> ERROR CHECKEDLISTBOX NoINTEGER-COLUMN: " & ex.Message)
Return Nothing
End Try
result_string = String.Join(";", result)
End If
Next
'Für jeden gecheckten Eintrag den Record der Stammentität mit dem selektierten linken
Dim checked_result As New List(Of String)
For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems
Dim row As DataRowView = CType(item, DataRowView)
Try
If CInt(row(0)) > 0 Then
Dim rid = CInt(row(0))
Dim checked_value = row(1)
checked_result.Add(checked_value)
checked_result_string = String.Join(";", checked_result)
Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_Scalar(SQL) = 0 Then
If CURRENT_RECORD_ID = 0 Then
MsgBox("Attention: no current record Selected!", MsgBoxStyle.Exclamation)
Else
If ConnectRecord(CURRENT_RECORD_ID, CInt(row(0)), "CheckedListBox;" & ctrl.Name) = True Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False)
End If
End If
End If
End If
Catch ex As Exception
ClassLogger.Add("Error in CheckedListBoxGetControlValue: " & ex.Message, True)
End Try
Next
Else 'Einfach nur eine Datensauswahl mit Strings!
If countSelectedItems > 0 Then
Dim checked_result As New List(Of String)
For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems
Dim row As DataRowView = CType(item, DataRowView)
Dim checked_value = row(1)
checked_result.Add(checked_value)
checked_result_string = String.Join(";", checked_result)
Next
Else
checked_result_string = ""
End If
End If
' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll
' Überspringt den Rest der funktion
If Not IsNothing(checked_result_string) Then
Dim sql = String.Format("select count(*) from TBPMO_CONTROL_VALUE where CONTROL_ID = {0} and RECORD_ID = {1}", CONTROL_ID, CURRENT_RECORD_ID)
If ClassDatabase.Execute_Scalar(sql) = 0 Then
InsertControlValue(CONTROL_ID, CURRENT_RECORD_ID, checked_result_string)
Return result_string
End If
'Alle Recorddatensätze durchlaufen und überprüfen ob nicht angehakt
'Wenn nicht angehakt dann Record löschen
Dim index As Integer = 0
For i As Integer = 0 To chklbx.ItemCount - 1
Dim item = chklbx.GetItem(i)
Dim row As DataRowView = CType(item, DataRowView)
If chklbx.GetItemCheckState(i) = 0 Then
If CInt(row(0)) > 0 Then
'Überprüfen ob es den Record gibt
Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_Scalar(SQL) = 1 Then
SQL = "DELETE FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_non_Query(SQL) = True Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> TBPMO_RECORD_CONNECT-Entry after 'deselect CheckedListBox' deleted", False)
End If
End If
End If
Return checked_result_string
Else
'In jedem Fall Nothing zurückgeben
Return Nothing
End If
Next
'Für jeden gecheckten Eintrag den Record der Stammentität mit dem selektierten linken
Dim checked_result As New List(Of String)
Dim checked_result_string As String
Case "ListBoxControl"
Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(ctrl, DevExpress.XtraEditors.ListBoxControl)
Return listbox.SelectedValue
For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems
Dim row As DataRowView = CType(item, DataRowView)
Try
If CInt(row(0)) > 0 Then
Dim rid = CInt(row(0))
Dim checked_value = row(1)
checked_result.Add(checked_value)
checked_result_string = String.Join(";", checked_result)
Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
If ClassDatabase.Execute_Scalar(SQL) = 0 Then
If CURRENT_RECORD_ID = 0 Then
MsgBox("Attention: no current record Selected!", MsgBoxStyle.Exclamation)
Else
If ConnectRecord(CURRENT_RECORD_ID, CInt(row(0)), "CheckedListBox;" & ctrl.Name) = True Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False)
End If
End If
Case "DataGridView"
Dim list As New List(Of String)
Dim dgv As DataGridView = DirectCast(ctrl, DataGridView)
For Each row As DataGridViewRow In dgv.Rows
Dim cell As DataGridViewCell = row.Cells(0)
If Not IsNothing(cell.Value) Then
list.Add(cell.Value)
End If
End If
Next
Catch ex As Exception
ClassLogger.Add("Error in CheckedListBoxGetControlValue: " & ex.Message, True)
End Try
Return String.Join(";", list)
Case Else
Next
' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll
' Überspringt den Rest der funktion
If Not IsNothing(checked_result_string) Then
Dim sql = String.Format("select count(*) from TBPMO_CONTROL_VALUE where CONTROL_ID = {0} and RECORD_ID = {1}", CONTROL_ID, CURRENT_RECORD_ID)
If ClassDatabase.Execute_Scalar(sql) = 0 Then
InsertControlValue(CONTROL_ID, CURRENT_RECORD_ID, "")
End If
Return checked_result_string
Else
'In jedem Fall Nothing zurückgeben
Return Nothing
End Select
Catch ex As Exception
ClassLogger.Add("Unexpected Error in GetControlValue: " & ex.Message)
MsgBox("Unexpected Error in GetControlValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End If
Case "ListBoxControl"
Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(ctrl, DevExpress.XtraEditors.ListBoxControl)
Return listbox.SelectedValue
Case "DataGridView"
Dim list As New List(Of String)
Dim dgv As DataGridView = DirectCast(ctrl, DataGridView)
For Each row As DataGridViewRow In dgv.Rows
Dim cell As DataGridViewCell = row.Cells(0)
If Not IsNothing(cell.Value) Then
list.Add(cell.Value)
End If
Next
Return String.Join(";", list)
Case Else
Return Nothing
End Select
End Function
Public Shared Function InsertControlValue(ControlID As Integer, RecordID As Integer, Value As String)