782 lines
32 KiB
VB.net
782 lines
32 KiB
VB.net
Imports DevExpress.Utils
|
|
Imports DevExpress.XtraBars.Navigation
|
|
Imports DevExpress.XtraEditors
|
|
Imports DevExpress.XtraEditors.Repository
|
|
|
|
Public Class XtraForm2
|
|
|
|
Public CONSTRUCTORID As Integer
|
|
Public DT_CONSTRUCT_VIEW As DataTable
|
|
Public EBENE2_PARENT_ID As Integer
|
|
Public EBENE3_PARENT_ID As Integer
|
|
Public ACT_EBENE As Integer
|
|
Public ACT_EBENE_STRING
|
|
Public SelectedRecordID As Integer
|
|
Public PARENT_RECORDID As Integer
|
|
|
|
Public EBENE1_ENTITY
|
|
Public EBENE2_ENTITY
|
|
Public EBENE3_ENTITY
|
|
Public EBENE1_COLUMNNAME
|
|
Public EBENE2_COLUMNNAME
|
|
Public EBENE3_COLUMNNAME
|
|
Public EBENE1_RECID
|
|
Public EBENE2_RECID
|
|
Public EBENE3_RECID
|
|
Public EBENE1_GRID_RESULT
|
|
Public EBENE2_GRID_RESULT
|
|
Public EBENE3_GRID_RESULT
|
|
Public act_FormViewID
|
|
Public DT_SELECTION
|
|
Public EBENE_SQLRESULT
|
|
Public EDIT_STATE As EditState = EditState.None
|
|
|
|
Public Enum EditState
|
|
None
|
|
Insert
|
|
Update
|
|
End Enum
|
|
|
|
Private Sub XtraForm2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
|
|
CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID
|
|
DT_CONSTRUCT_VIEW = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WHERE GUID = " & CONSTRUCTORID)
|
|
|
|
'Load_Tree_View()
|
|
Load_Tree_View(CONSTRUCTORID)
|
|
End Sub
|
|
|
|
#Region "NavPane"
|
|
|
|
|
|
Private Function FindNode(tncoll As TreeNodeCollection, strText As [String]) As TreeNode
|
|
Dim tnFound As TreeNode
|
|
For Each tnCurr As TreeNode In tncoll
|
|
If tnCurr.Text.StartsWith(strText) Then
|
|
Return tnCurr
|
|
End If
|
|
tnFound = FindNode(tnCurr.Nodes, strText)
|
|
If tnFound IsNot Nothing Then
|
|
Return tnFound
|
|
End If
|
|
Next
|
|
Return Nothing
|
|
End Function
|
|
|
|
|
|
Private Sub navPane_MouseUp(sender As Object, e As MouseEventArgs) Handles navPane.MouseUp
|
|
Dim pane As TileNavPane = TryCast(sender, TileNavPane)
|
|
Dim hitInfo As TileNavPaneHitInfo = pane.ViewInfo.CalcHitInfo(e.Location)
|
|
If hitInfo.InButton Then
|
|
Dim element = hitInfo.ButtonInfo.Element
|
|
navPane.HideDropDownWindow()
|
|
|
|
If TypeOf element Is NavButton Then
|
|
Dim btn As NavButton = TryCast(element, NavButton)
|
|
|
|
If btn.IsMain Then ResetNav()
|
|
Else
|
|
Dim Entity As String = element.Tag
|
|
Dim Node = FindNode(TreeViewLevelSelect.Nodes, Entity)
|
|
|
|
TreeViewLevelSelect.SelectedNode = Node
|
|
Load_Tree_View_Data()
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ResetNav()
|
|
navPane.Categories.Clear()
|
|
TreeViewLevelSelect.SelectedNode = TreeViewLevelSelect.Nodes(0)
|
|
Load_Tree_View_Data()
|
|
End Sub
|
|
|
|
Private Function LoadLevel1Nav()
|
|
Dim cat As New TileNavCategory()
|
|
cat.Caption = EBENE1_GRID_RESULT
|
|
cat.Name = EBENE1_GRID_RESULT
|
|
cat.TileText = EBENE1_GRID_RESULT
|
|
cat.Tag = EBENE1_ENTITY
|
|
|
|
navPane.SelectedElement = cat
|
|
|
|
Return cat
|
|
End Function
|
|
|
|
Private Function LoadLevel2Nav()
|
|
Dim item As New TileNavItem()
|
|
item.Caption = EBENE2_GRID_RESULT
|
|
item.Name = EBENE2_GRID_RESULT
|
|
item.TileText = EBENE2_GRID_RESULT
|
|
item.Tag = EBENE2_ENTITY
|
|
|
|
navPane.SelectedElement = item
|
|
|
|
Return item
|
|
End Function
|
|
|
|
Private Function LoadLevel3Nav()
|
|
Dim subitem As New TileNavSubItem()
|
|
subitem.Caption = EBENE3_GRID_RESULT
|
|
subitem.Name = EBENE3_GRID_RESULT
|
|
subitem.TileText = EBENE3_GRID_RESULT
|
|
subitem.Tag = EBENE3_ENTITY
|
|
|
|
navPane.SelectedElement = subitem
|
|
|
|
Return subitem
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "TreeView"
|
|
|
|
Sub Load_Tree_View(ConstructorId As Integer)
|
|
|
|
Dim LEVEL1_NODE As TreeNode
|
|
Dim LEVEL2_NODE As TreeNode
|
|
Dim LEVEL3_NODE As TreeNode
|
|
Dim SQL As String
|
|
Dim DT, DT2, DT3 As DataTable
|
|
|
|
' Daten für Root Node Laden
|
|
SQL = "SELECT * from VWPMO_CONSTRUCTOR_FORMS WHERE PARENT_ID = 0 AND CONSTRUCT_ID = " & ConstructorId & " ORDER BY SEQUENCE"
|
|
DT = ClassDatabase.Return_Datatable(SQL)
|
|
|
|
If DT Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If DT.Rows.Count = 1 Then
|
|
Dim LEVEL1_TITLE = DT.Rows(0).Item("FORM_TITLE").ToString
|
|
Dim LEVEL1_ID = DT.Rows(0).Item("FORM_ID").ToString
|
|
|
|
' Rootnode erstellen und taggen
|
|
LEVEL1_NODE = New TreeNode(LEVEL1_TITLE)
|
|
LEVEL1_NODE.Tag = LEVEL1_ID
|
|
|
|
' TreeView leeren und Rootnode einfügen
|
|
TreeViewLevelSelect.Nodes.Clear()
|
|
TreeViewLevelSelect.Nodes.Add(LEVEL1_NODE)
|
|
|
|
' Daten für Level1 Nodes Laden
|
|
SQL = String.Format("SELECT * from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND PARENT_ID = {1} ORDER BY SEQUENCE", ConstructorId, LEVEL1_ID)
|
|
DT2 = ClassDatabase.Return_Datatable(SQL)
|
|
|
|
If DT2 Is Nothing Or DT2.Rows.Count = 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
For Each row As DataRow In DT2.Rows
|
|
Dim LEVEL2_TITLE As String = row.Item("FORM_TITLE").ToString
|
|
Dim LEVEL2_ID As Integer = row.Item("FORM_ID")
|
|
Dim LEVEL2_PARENT_ID As Integer = row.Item("PARENT_ID")
|
|
|
|
' Node erstellen..
|
|
LEVEL2_NODE = New TreeNode(LEVEL2_TITLE)
|
|
LEVEL2_NODE.Tag = LEVEL2_ID
|
|
' ..und einfügen
|
|
LEVEL1_NODE.Nodes.Add(LEVEL2_NODE)
|
|
|
|
' Daten für Level2 Nodes laden
|
|
SQL = String.Format("SELECT * from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND PARENT_ID = {1} ORDER BY SEQUENCE", ConstructorId, LEVEL2_ID)
|
|
DT3 = ClassDatabase.Return_Datatable(SQL)
|
|
|
|
If DT3 Is Nothing Or DT3.Rows.Count = 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
For Each subrow As DataRow In DT3.Rows
|
|
Dim LEVEL3_TITLE As String = subrow.Item("FORM_TITLE")
|
|
Dim LEVEL3_ID As Integer = subrow.Item("FORM_ID")
|
|
|
|
' Node erstellen..
|
|
LEVEL3_NODE = New TreeNode(LEVEL3_TITLE)
|
|
LEVEL3_NODE.Tag = LEVEL3_ID
|
|
' ..und einfügen
|
|
LEVEL2_NODE.Nodes.Add(LEVEL3_NODE)
|
|
Next
|
|
|
|
Next
|
|
|
|
TreeViewLevelSelect.ExpandAll()
|
|
TreeViewLevelSelect.Nodes(0).EnsureVisible()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Sub Load_Tree_View_Data()
|
|
Dim SelectedNode As TreeNode = TryCast(TreeViewLevelSelect.SelectedNode, TreeNode)
|
|
Dim FormId As Integer = SelectedNode.Tag
|
|
|
|
If SelectedNode IsNot Nothing Then
|
|
Dim parentNode As TreeNode = TryCast(SelectedNode.Parent, TreeNode)
|
|
|
|
ACT_EBENE = 2
|
|
|
|
If parentNode IsNot Nothing Then
|
|
Dim grandParentNode As TreeNode = TryCast(parentNode.Parent, TreeNode)
|
|
|
|
If grandParentNode IsNot Nothing Then
|
|
ACT_EBENE = 3
|
|
End If
|
|
Else
|
|
ACT_EBENE = 1
|
|
End If
|
|
|
|
Load_Entity_Data(FormId, ACT_EBENE)
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "Status Bar"
|
|
|
|
Public Sub Update_Status_Label(visible As Boolean, Optional text As String = "", Optional state As EditState = EditState.None)
|
|
tssStatus.Text = text
|
|
tssStatus.Visible = visible
|
|
|
|
Select Case state
|
|
Case EditState.Insert
|
|
tssStatus.BackColor = Color.Yellow
|
|
Case EditState.Update
|
|
tssStatus.BackColor = Color.LightBlue
|
|
Case Else
|
|
tssStatus.BackColor = Color.LightGray
|
|
End Select
|
|
End Sub
|
|
|
|
Public Sub Update_Record_Label(RecordId As Integer)
|
|
Dim SQL As String = "SELECT 'Added by ' + ADDED_WHO + ' when ' + CONVERT(VARCHAR(16),ADDED_WHEN,20) + ', Changed by ' + COALESCE(CHANGED_WHO,'') + ' when ' + COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') FROM TBPMO_RECORD WHERE GUID = " & RecordId
|
|
Dim result = ClassDatabase.Execute_Scalar(SQL)
|
|
|
|
If IsDBNull(result) Or IsNothing(result) Then
|
|
tssRecord.Visible = False
|
|
Else
|
|
If CURRENT_FORM_TYPE = 5 Then
|
|
tssRecord.Text = String.Format("Group-Record ({0}) - {1}", RecordId, result.ToString)
|
|
Else
|
|
tssRecord.Text = String.Format("Record ({0}) - {1}", RecordId, result.ToString)
|
|
End If
|
|
tssRecord.Visible = True
|
|
End If
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
|
|
Sub Load_Entity_Data(FormId As Integer, CurrentLevel As Integer)
|
|
Try
|
|
Me.Cursor = Cursors.WaitCursor
|
|
|
|
Dim IS_SINGLE_RECORD As Boolean
|
|
Dim LOAD_DIRECT As Boolean
|
|
'VerknüpfungenToolStripMenuItem.Enabled = False
|
|
CURRENT_FORM_TYPE = ClassDatabase.Execute_Scalar("SELECT FORM_TYPE_ID FROM TBPMO_FORM WHERE GUID = " & FormId)
|
|
IS_SINGLE_RECORD = ClassDatabase.Execute_Scalar("SELECT SINGLE_RECORD FROM TBPMO_FORM WHERE GUID = " & FormId)
|
|
LOAD_DIRECT = ClassDatabase.Execute_Scalar("SELECT LOAD_DIRECT FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
SelectedRecordID = 0
|
|
Dim DT As DataTable
|
|
Dim sql As String = "SELECT PARENT_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId
|
|
Dim PARENT_ID = ClassDatabase.Execute_Scalar(sql)
|
|
If PARENT_ID Is Nothing Then
|
|
MsgBox("Error in GetParentID for selectedNode - Check Logfile", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
'dataloaded = False
|
|
'Abhängig von der Entität die Selektierungs-Daten laden
|
|
Dim _sql As String
|
|
Select Case CurrentLevel
|
|
Case 1
|
|
PARENT_RECORDID = 0
|
|
CURRENT_PARENTID = 0
|
|
EBENE1_ENTITY = TreeViewLevelSelect.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE1_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Ebene 1 in TreeView selektiert", False)
|
|
EBENE2_ENTITY = ""
|
|
EBENE3_ENTITY = ""
|
|
'tslblEntity2.Visible = False
|
|
'tslblEntity3.Visible = False
|
|
|
|
EBENE1_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
EBENE2_COLUMNNAME = ""
|
|
EBENE3_COLUMNNAME = ""
|
|
EBENE2_GRID_RESULT = Nothing
|
|
EBENE3_GRID_RESULT = Nothing
|
|
_sql = ClassDatabase.Execute_Scalar("SELECT SQL_SELECT_EBENE1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
|
|
|
|
Case 2
|
|
Dim Level1Select = ClassDatabase.Execute_Scalar("SELECT LEVEL1_SELECT FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
If CBool(Level1Select) = False And CURRENT_FORM_TYPE <> 5 And EBENE1_RECID = 0 Then
|
|
MsgBox("Entität '" & TreeViewLevelSelect.SelectedNode.Text & "' kann nicht ohne Auswahl eines Ebene 1 Datensatzes gewählt werden!", MsgBoxStyle.Exclamation)
|
|
TreeViewLevelSelect.SelectedNode = TreeViewLevelSelect.SelectedNode.Parent
|
|
Exit Sub
|
|
End If
|
|
EBENE2_ENTITY = TreeViewLevelSelect.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE2_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Ebene 2 in TreeView selektiert", False)
|
|
EBENE3_ENTITY = ""
|
|
'Parent-ID setzen
|
|
If EBENE1_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE1_RECID
|
|
CURRENT_PARENTID = EBENE1_RECID
|
|
End If
|
|
'tslblEntity3.Visible = False
|
|
Select Case CURRENT_FORM_TYPE
|
|
Case 5
|
|
If GET_GROUP_RECORD(FormId) = True Then
|
|
EBENE2_RECID = CURRENT_RECORD_ID
|
|
End If
|
|
End Select
|
|
|
|
EBENE2_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
|
|
EBENE3_COLUMNNAME = ""
|
|
'Wenn bereits ein Record für Ebene 1 gewählt wurde dann einschränken
|
|
If EBENE1_RECID > 0 Then
|
|
_sql = ClassDatabase.Execute_Scalar("SELECT SQL_SELECT_EBENE2 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
_sql = _sql.Replace("@RecordID", EBENE1_RECID)
|
|
Else
|
|
_sql = ClassDatabase.Execute_Scalar("SELECT SQL_SELECT_EBENE1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
End If
|
|
EBENE2_GRID_RESULT = Nothing
|
|
EBENE3_GRID_RESULT = Nothing
|
|
|
|
Case 3
|
|
Select Case CURRENT_FORM_TYPE
|
|
Case 5
|
|
If GET_GROUP_RECORD(FormId) = True Then
|
|
EBENE3_RECID = CURRENT_RECORD_ID
|
|
End If
|
|
End Select
|
|
|
|
If EBENE2_RECID = 0 Then
|
|
MsgBox("Entität '" & TreeViewLevelSelect.SelectedNode.Text & "' kann nicht ohne Auswahl eines Ebene 1 Datensatzes gewählt werden!", MsgBoxStyle.Exclamation)
|
|
TreeViewLevelSelect.SelectedNode = TreeViewLevelSelect.SelectedNode.Parent
|
|
Exit Sub
|
|
End If
|
|
|
|
EBENE3_ENTITY = TreeViewLevelSelect.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE3_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Ebene 3 in TreeView selektiert", False)
|
|
'Parent-ID setzen
|
|
If EBENE2_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE2_RECID
|
|
CURRENT_PARENTID = EBENE2_RECID
|
|
End If
|
|
|
|
EBENE3_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId)
|
|
'Wenn bereits ein Record für Ebene 1 gewählt wurde dann eisnchränken
|
|
If EBENE2_RECID > 0 Then
|
|
Try
|
|
_sql = ClassDatabase.Execute_Scalar("SELECT SQL_SELECT_EBENE2 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId, True)
|
|
_sql = _sql.Replace("@RecordID", EBENE2_RECID)
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
Else
|
|
MsgBox("Entität kann nicht ohne Auswahl eines Ebene 2 Datensatzes gewählt werden!", MsgBoxStyle.Exclamation)
|
|
'Grid leeren
|
|
GridControlSelection.DataSource = Nothing
|
|
grvwSelection.Columns.Clear()
|
|
Me.Cursor = Cursors.Default
|
|
Exit Sub
|
|
End If
|
|
EBENE3_GRID_RESULT = Nothing
|
|
End Select
|
|
|
|
CURRENT_FORM_ID = FormId
|
|
CURRENT_ENTITYSTRING = ACT_EBENE_STRING
|
|
CURRENT_PARENTID = PARENT_RECORDID
|
|
act_FormViewID = ClassDatabase.Execute_Scalar("SELECT GUID FROM TBPMO_FORM_VIEW where FORM_ID = " & FormId)
|
|
'If EDIT_STATE = "none" Then
|
|
' 'Die Controls der Entität laden
|
|
' Load_Controls(act_FormViewID)
|
|
' set_pnlsize()
|
|
'End If
|
|
CURRENT_FORMVIEW_ID = act_FormViewID
|
|
|
|
'Überprüfen ob windream Dos angezeigt werden sollen?
|
|
'Check_windream_Show(act_FormViewID)
|
|
|
|
|
|
|
|
'If windream_Docshow = True Then
|
|
' Clear_Windream_ResultList()
|
|
' If WD_ShowEnitityDocs = True Then
|
|
' RUN_WD_SEARCH("", "ENTITY")
|
|
' End If
|
|
'End If
|
|
|
|
' Me.pnlDetails.Enabled = False
|
|
'Me.tsbtnshowWorkflowtasks.Enabled = False
|
|
'tsbtnRecordAdd.Enabled = True
|
|
|
|
|
|
Select Case CURRENT_FORM_TYPE
|
|
Case 5
|
|
'Nur eine Gruppen-Entität: d.h. es wird nur die Dateientab angezeigt
|
|
Console.WriteLine("OnlyGroupType")
|
|
|
|
'TabPageDetails.PageVisible = False
|
|
'Anzeige_Selected_Entity()
|
|
'tsbtnRecordAdd.Visible = False
|
|
'tsbtnRecorddelete.Visible = False
|
|
'tsbtnRecordSave.Visible = False
|
|
Case Else
|
|
'tsbtnRecordAdd.Visible = True
|
|
'tsbtnRecorddelete.Visible = True
|
|
'tsbtnRecordSave.Visible = True
|
|
'TabPageDetails.PageVisible = True
|
|
Dim Beschreibung = ClassDatabase.Execute_Scalar("SELECT FORM_TITLE FROM TBPMO_FORM_VIEW WHERE GUID = " & act_FormViewID)
|
|
'TabPageDetails.Text = "Detaileingabe zu " & Beschreibung
|
|
'Den Spaltennamen für die Selektion laden
|
|
sql = "SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & FormId
|
|
'Jetzt die Datensätze zur Entität laden
|
|
CURRENT_ENTITYSQL = _sql
|
|
Dim DTEntity As DataTable = ClassDatabase.Return_Datatable(CURRENT_ENTITYSQL, "LoadEntityData - Get DTEntity")
|
|
Dim primaryKey(1) As DataColumn
|
|
primaryKey(0) = DTEntity.Columns("Record-ID")
|
|
DTEntity.PrimaryKey = primaryKey
|
|
LoadGrid_Selection(_sql, DTEntity)
|
|
|
|
'If LOAD_DIRECT = True Then
|
|
' Dim sql1 = CURRENT_ENTITYSQL
|
|
' sql1.Replace("T.*", "TOP 1 [Record-ID]")
|
|
' Dim id = ClassDatabase.Execute_Scalar(sql1, True)
|
|
' If Not id Is Nothing Then
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(">> Load Record directly - RecordID: " & CURRENT_RECORD_ID, False)
|
|
' Load_Record_Data()
|
|
' End If
|
|
'Else
|
|
|
|
|
|
'End If
|
|
'Überprüfen ob es für diese Entität Wiedervorlagen gibt?
|
|
'Check_FOLLOWUP_IsConfigured(CURRENT_FORM_ID)
|
|
End Select
|
|
|
|
'Load_Templates()
|
|
|
|
Me.Cursor = Cursors.Default
|
|
'dataloaded = True
|
|
Catch ex As Exception
|
|
MsgBox("Error in Load_Entity_Data:" & vbNewLine & ex.Message, MsgBoxStyle.Exclamation)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function GET_GROUP_RECORD(FORM_ID As Integer)
|
|
Dim sqlRecord As String = "select guid from TBPMO_RECORD where Form_ID = " & FORM_ID
|
|
Dim recid = ClassDatabase.Execute_Scalar(sqlRecord, True)
|
|
If IsNothing(recid) Then
|
|
If ClassControlCommandsUI.CreateRecord(FORM_ID) = True Then
|
|
recid = ClassControlCommandsUI.GetLastRecord
|
|
If IsNothing(recid) Then
|
|
CURRENT_RECORD_ID = recid
|
|
ClassControlCommandsUI.ConnectRecord(CURRENT_PARENTID, CURRENT_RECORD_ID, "Group-Entity Link")
|
|
Else
|
|
Return False
|
|
End If
|
|
Else
|
|
|
|
Return False
|
|
End If
|
|
Else
|
|
Try
|
|
CURRENT_RECORD_ID = CInt(recid)
|
|
|
|
Catch ex As Exception
|
|
MsgBox("Error while getting CURRENT_RECORDID: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
End If
|
|
'Refresh_CreatedChangedRecordByID(CURRENT_RECORD_ID)
|
|
Return True
|
|
End Function
|
|
|
|
Private Function LoadGrid_Selection(Grid_SQL As String, Datatable_Grid As DataTable)
|
|
Try
|
|
DT_SELECTION = Datatable_Grid
|
|
EBENE_SQLRESULT = Grid_SQL
|
|
Dim i = EBENE_SQLRESULT.ToLower.IndexOf("from")
|
|
EBENE_SQLRESULT = EBENE_SQLRESULT.ToLower.Substring(i)
|
|
' Alle Checkboxen für aktuelle Ansicht heraussuchen
|
|
Dim sqlcheck As String = "SELECT CONTROL_COLUMN FROM VWPMO_VALUES WHERE CONTROL_TYPE_ID in (10,11) AND FORM_ID = " & CURRENT_FORM_ID
|
|
Dim dtcheck As DataTable = ClassDatabase.Return_Datatable(sqlcheck)
|
|
Dim listcheck As New List(Of String)
|
|
|
|
'Liste von allen Spaltentiteln mit Checkbox erstellen
|
|
If dtcheck.Rows.Count > 0 Then
|
|
For Each row As DataRow In dtcheck.Rows
|
|
listcheck.Add(row.Item(0))
|
|
Next
|
|
End If
|
|
|
|
'Duplikate entfernen
|
|
listcheck = listcheck.Distinct().ToList()
|
|
|
|
'Grid leeren
|
|
GridControlSelection.DataSource = Nothing
|
|
grvwSelection.Columns.Clear()
|
|
'Databinding Neu
|
|
Me.BindingSource_Entity.DataSource = Datatable_Grid
|
|
GridControlSelection.DataSource = BindingSource_Entity
|
|
|
|
' Den Editor Initialisieren und Optionen setzen
|
|
Dim CheckBoxEditorForDisplay = New RepositoryItemCheckEdit()
|
|
CheckBoxEditorForDisplay.ValueChecked = 1
|
|
CheckBoxEditorForDisplay.ValueUnchecked = 0
|
|
|
|
' Alle Checkbox Spalten durchgehen und CheckBoxEditor zuweisen
|
|
'For Each col As String In listcheck
|
|
' grvwSelection.GridControl.RepositoryItems.Add(CheckBoxEditorForDisplay)
|
|
|
|
' If Not IsNothing(grvwSelection.Columns(col)) Then
|
|
' grvwSelection.Columns(col).ColumnEdit = CheckBoxEditorForDisplay
|
|
' End If
|
|
'Next
|
|
grvwSelection.Columns("Record-ID").OptionsColumn.AllowShowHide = False
|
|
'Load_GridSelection_Layout()
|
|
'HideColumns()
|
|
Dim selnode As TreeNode = TreeViewLevelSelect.SelectedNode
|
|
Dim origtext As String = selnode.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
selnode.Text = existingstring & " (" & grvwSelection.RowCount & ")"
|
|
Else
|
|
selnode.Text = selnode.Text & " (" & grvwSelection.RowCount & ")"
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in LoadGrid_Selection:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
Return True
|
|
|
|
End Function
|
|
|
|
Sub Show_Selected_Record_Data(GridColumn_String As String, Optional DirectRecID As Integer = 0)
|
|
Try
|
|
'Me.pnlDetails.Visible = True
|
|
'ZeigeRecordLogsToolStripMenuItem.Enabled = False
|
|
If DirectRecID = 0 Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Record wird über Datagrid focusedRow geladen", False)
|
|
'Überhaupt Columns in Grid?
|
|
If grvwSelection.Columns.Count = 0 Then
|
|
'Me.pnlDetails.Enabled = False
|
|
'Me.tsbtnshowWorkflowtasks.Enabled = False
|
|
|
|
'tsstatus_Detail_show(True, "Keine Columns in Grid")
|
|
Exit Sub
|
|
End If
|
|
'Überhaupt Rows in Grid?
|
|
If grvwSelection.RowCount > 0 Then
|
|
Dim Grid_RecordID = grvwSelection.GetFocusedRowCellValue(grvwSelection.Columns(GridColumn_String))
|
|
If Grid_RecordID Is Nothing = False Then
|
|
SelectedRecordID = Grid_RecordID
|
|
CURRENT_RECORD_ID = Grid_RecordID
|
|
Else
|
|
'tsstatus_Detail_show(True, "Grid_RecordID konnte nicht gewählt werden!")
|
|
ClassLogger.Add(">> Grid_RecordID konnte nicht gewählt werden - SelectedRecord_ShowData", True)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
Else 'Record wird direkt geladen
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Record wird DIREKT geladen", False)
|
|
SelectedRecordID = DirectRecID
|
|
CURRENT_RECORD_ID = DirectRecID
|
|
End If
|
|
|
|
Dim Record_Changes As String = "SELECT count(GUID) FROM VWPMO_RECORD_CHANGES WHERE RECORD_ID = " & CURRENT_RECORD_ID
|
|
Dim RC = ClassDatabase.Execute_Scalar(Record_Changes)
|
|
If Not RC Is Nothing Then
|
|
If RC > 0 Then
|
|
'ZeigeRecordLogsToolStripMenuItem.Enabled = True
|
|
End If
|
|
End If
|
|
'Die aktuelle Ebene überprüfen und den Datensatz übergeben, ebenso den PARENT-Record setzen
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
PARENT_RECORDID = 0
|
|
EBENE1_RECID = SelectedRecordID
|
|
CURRENT_PARENTID = EBENE1_RECID
|
|
If Not EBENE1_COLUMNNAME Is Nothing Then
|
|
EBENE1_GRID_RESULT = Get_GridResult(EBENE1_COLUMNNAME)
|
|
|
|
|
|
Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
navPane.Categories.Clear()
|
|
navPane.Categories.Add(cat)
|
|
|
|
End If
|
|
Case 2
|
|
EBENE2_RECID = SelectedRecordID
|
|
If Not EBENE2_COLUMNNAME Is Nothing Then
|
|
EBENE2_GRID_RESULT = Get_GridResult(EBENE2_COLUMNNAME)
|
|
'Dim sql As String = "select @p " & EBENE_SQLRESULT & " where [Record-ID] = " & SelectedRecordID
|
|
'sql = sql.Replace("@p", EBENE2_COLUMNNAME)
|
|
'Dim result = ClassDatabase.Execute_Scalar(sql)
|
|
'EBENE2_GRID_RESULT = result 'grvwSelection.GetFocusedRowCellValue(grvwSelection.Columns(EBENE2_COLUMNNAME))
|
|
|
|
Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
navPane.Categories.Clear()
|
|
navPane.Categories.Add(cat)
|
|
|
|
Dim item As TileNavItem = LoadLevel2Nav()
|
|
cat.Items.Add(item)
|
|
|
|
|
|
End If
|
|
If EBENE1_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE1_RECID
|
|
CURRENT_PARENTID = EBENE1_RECID
|
|
Else
|
|
CURRENT_PARENTID = EBENE2_RECID
|
|
End If
|
|
Case 3
|
|
EBENE3_RECID = SelectedRecordID
|
|
If Not EBENE3_COLUMNNAME Is Nothing Then
|
|
EBENE3_GRID_RESULT = Get_GridResult(EBENE3_COLUMNNAME)
|
|
'EBENE3_GRID_RESULT = grvwSelection.GetFocusedRowCellValue(grvwSelection.Columns(EBENE3_COLUMNNAME))
|
|
|
|
Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
navPane.Categories.Clear()
|
|
navPane.Categories.Add(cat)
|
|
|
|
Dim item As TileNavItem = LoadLevel2Nav()
|
|
cat.Items.Add(item)
|
|
|
|
Dim subitem As TileNavSubItem = LoadLevel3Nav()
|
|
item.SubItems.Add(subitem)
|
|
|
|
End If
|
|
If EBENE2_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE2_RECID
|
|
CURRENT_PARENTID = EBENE2_RECID
|
|
End If
|
|
End Select
|
|
|
|
|
|
|
|
'Me.pnlDetails.Enabled = True
|
|
'Me.tsbtnshowWorkflowtasks.Enabled = True
|
|
'Me.tsbtnshowTaskoverview.Enabled = True
|
|
'tsstatus_Detail_show(False, "")
|
|
Catch ex As Exception
|
|
MsgBox("Error in SelectedRecord_ShowData:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Function Get_GridResult(Columnname As String)
|
|
Dim result As String = grvwSelection.GetFocusedRowCellValue(grvwSelection.Columns(Columnname))
|
|
If result = String.Empty Then
|
|
Return "No Column configured"
|
|
Else
|
|
Return result
|
|
End If
|
|
End Function
|
|
|
|
Function GetSelected_RecordID()
|
|
Try
|
|
If grvwSelection.Columns.Count = 0 Then
|
|
'Me.pnlDetails.Enabled = False
|
|
'Me.tsbtnshowWorkflowtasks.Enabled = False
|
|
'tsstatus_Detail_show(True, "Keine Columns in Grid")
|
|
Return Nothing
|
|
End If
|
|
'Überhaupt Rows in Grid?
|
|
If grvwSelection.RowCount > 0 Then
|
|
Dim Grid_RecordID = grvwSelection.GetFocusedRowCellValue(grvwSelection.Columns("Record-ID"))
|
|
If Grid_RecordID Is Nothing = False Then
|
|
Return Grid_RecordID
|
|
Else
|
|
'tsstatus_Detail_show(True, "Grid_RecordID konnte nicht gewählt werden!")
|
|
'ClassLogger.Add(">> Grid_RecordID konnte nicht gewählt werden - SelectedRecord_ShowData", True)
|
|
Return Nothing
|
|
End If
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub grvwSelection_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles grvwSelection.FocusedRowChanged
|
|
'If vFormClosing = True Or SaveRoutine_Active = True Then
|
|
' Exit Sub
|
|
'End If
|
|
|
|
'Check_Record_Changed()
|
|
Load_Record_Data()
|
|
|
|
'If dataloaded = True Then
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(">> grvwSelection_FocusedRowChanged - EditState: " & EDIT_STATE, False)
|
|
' Dim selRecID = GetSelected_RecordID()
|
|
' If Not selRecID Is Nothing And selRecID <> SelectedRecordID Or EDIT_STATE = "insert" Then
|
|
' Focused_Row_Column_Changed()
|
|
' Else
|
|
' 'Console.WriteLine("SelRecordID identisch")
|
|
' End If
|
|
'End If
|
|
End Sub
|
|
|
|
Sub Load_Record_Data()
|
|
Select Case EDIT_STATE
|
|
Case EditState.None
|
|
'Ganz normalerDatensatzwechsel Wechsel
|
|
Show_Selected_Record_Data("Record-ID")
|
|
'Refresh_Treeview_SelectedData()
|
|
'tslblStatusMain_show(False, "")
|
|
Case EditState.Insert
|
|
'Refresh_Treeview_SelectedData()
|
|
Case EditState.Update
|
|
' Refresh_Treeview_SelectedData()
|
|
End Select
|
|
'Select Case TCDetails.SelectedTabPageIndex
|
|
' Case 0
|
|
' 'Die Values in die Controls laden
|
|
' If EDIT_STATE = "none" Then
|
|
' 'TabPageDetails.Text = "Detaileingabe zu '" & ACT_EBENE_STRING & "' - Record(" & SelectedRecordID & ")"
|
|
' 'Die Daten auf dem Panel laden
|
|
' ClassControlValues.LoadControlValues(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
|
|
' 'Load_Control_Values(CtrlBuilder.AllControls)
|
|
' 'Refresh_Treeview_SelectedData()
|
|
' RECORD_CHANGED = False
|
|
' End If
|
|
' Case 1
|
|
' RUN_WD_SEARCH(WD_Suche, "RECORD")
|
|
' Case 2
|
|
' If FOLLOW_UPisActive = True Then Refresh_FollowUps()
|
|
'End Select
|
|
'DT_FU_Record = Nothing
|
|
'VerknüpfungenToolStripMenuItem.Enabled = True
|
|
|
|
'If FOLLOW_UPisActive = True Then Refresh_FollowUp_TabHeader()
|
|
'Refresh_CreatedChangedRecordByID(SelectedRecordID)
|
|
'Anzeige_Selected_Entity()
|
|
'Show_act_WFTask()
|
|
'Get_RecordCounts_Nodes()
|
|
|
|
'Refresh_TaskOverview()
|
|
End Sub
|
|
|
|
Private Sub TreeViewEbeneSelect_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeViewLevelSelect.AfterSelect
|
|
Load_Tree_View_Data()
|
|
End Sub
|
|
|
|
Private Sub btn_Refresh_ElementClick(sender As Object, e As NavElementEventArgs) Handles btn_Refresh.ElementClick
|
|
Load_Tree_View_Data()
|
|
End Sub
|
|
|
|
Private Sub btn_home_ElementClick(sender As Object, e As NavElementEventArgs) Handles btn_home.ElementClick
|
|
Load_Tree_View(CURRENT_CONSTRUCTOR_ID)
|
|
End Sub
|
|
|
|
|
|
End Class
|