jj 23.05 datatable performance

This commit is contained in:
JenneJ 2016-05-23 16:44:49 +02:00
parent b141e20f58
commit 49e5e40b54
2 changed files with 176 additions and 142 deletions

View File

@ -405,10 +405,13 @@
stopwatch.Start() stopwatch.Start()
End Sub End Sub
Public Sub Done() Public Function Done() As Long
stopwatch.Stop() stopwatch.Stop()
Console.WriteLine("{0} took {1} milliseconds to complete", label, stopwatch.ElapsedMilliseconds) Dim message = String.Format("{0} took {1} milliseconds to complete", label, stopwatch.ElapsedMilliseconds)
End Sub Console.WriteLine(message)
If LogErrorsOnly = False Then ClassLogger.Add(message, False)
Return stopwatch.ElapsedMilliseconds
End Function
End Class End Class

View File

@ -221,7 +221,7 @@ Public Class frmConstructor_Main
Me.VWPMO_WF_ACTIVETableAdapter.Connection.ConnectionString = MyConnectionString Me.VWPMO_WF_ACTIVETableAdapter.Connection.ConnectionString = MyConnectionString
Dim SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _ Dim SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, CONSTRUCTORID) "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, CONSTRUCTORID)
sd()
DT_VWPMO_CONSTRUCTOR_FORMS = ClassDatabase.Return_Datatable(SQL) DT_VWPMO_CONSTRUCTOR_FORMS = ClassDatabase.Return_Datatable(SQL)
DT_CONSTRUCT_VIEW = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WHERE GUID = " & CONSTRUCTORID) DT_CONSTRUCT_VIEW = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WHERE GUID = " & CONSTRUCTORID)
If DT_CONSTRUCT_VIEW.Rows.Count = 1 Then If DT_CONSTRUCT_VIEW.Rows.Count = 1 Then
@ -241,7 +241,6 @@ Public Class frmConstructor_Main
'System.Windows.Forms.MessageBox.Show(ex.Message) 'System.Windows.Forms.MessageBox.Show(ex.Message)
End Try End Try
Me.Cursor = Cursors.Default Me.Cursor = Cursors.Default
End Sub End Sub
#Region "Layout" #Region "Layout"
@ -565,28 +564,6 @@ Public Class frmConstructor_Main
End Sub End Sub
'Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer)
' If GRID_TYPE = GridType.Grid Then
' _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T"
' Else 'Tiles und Carousel bekommen Quick View
' _ENTITYSQL = String.Format("SELECT SQL_QUICK_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND FORM_ID = {1}", ConstructorId, FormId)
' _ENTITYSQL = ClassDatabase.Execute_Scalar(_ENTITYSQL, True)
' If _ENTITYSQL = String.Empty Then
' _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T"
' If IS_SINGLE_RECORD = True Or FORM_TYPE = 5 Then
' Else
' GRID_TYPE = GridType.Grid
' GridControlMain.MainView = grvwGrid
' VIEW_ID = 3
' End If
' GridControlMain.MainView = grvwGrid
' End If
' End If
'End Function
Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer, ConstructorDetailID As Integer) Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer, ConstructorDetailID As Integer)
Try Try
If GRID_TYPE = GridType.Grid Then If GRID_TYPE = GridType.Grid Then
@ -594,19 +571,13 @@ Public Class frmConstructor_Main
_VIEWNAME = "VWTEMP_PMO_FORM" & FormId.ToString _VIEWNAME = "VWTEMP_PMO_FORM" & FormId.ToString
_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T"
Else 'Tiles und Carousel bekommen Quick View Else 'Tiles und Carousel bekommen Quick View
' Define the filter ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim DT As DataTable = DT_VWPMO_CONSTRUCTOR_FORMS Dim query = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Dim filter As String = "FORM_ID = " & FormId & " AND SCREEN_ID = " & CURRENT_SCREEN_ID Select form
' Filter the rows using Select() method of DataTable Where form.Item("FORM_ID") = FormId
Dim FilteredRows As DataRow() = DT.Select(filter)
For Each row As DataRow In FilteredRows _ENTITYSQL = query.Single().Item("SQL_QUICK_VIEW")
_ENTITYSQL = row("SQL_QUICK_VIEW")
' ListBox1.Items.Add(String.Format("{0}, {1}", row("CompanyName"), row("City")))
Next
' _ENTITYSQL = String.Format("SELECT SQL_QUICK_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND FORM_ID = {1} AND SCREEN_ID = {2}", ConstructorId, FormId, CURRENT_SCREEN_ID)
' _ENTITYSQL = ClassDatabase.Execute_Scalar(_ENTITYSQL, True)
If _ENTITYSQL = String.Empty Then If _ENTITYSQL = String.Empty Then
_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T"
If IS_SINGLE_RECORD = True Or FORM_TYPE = 5 Then If IS_SINGLE_RECORD = True Or FORM_TYPE = 5 Then
@ -1018,88 +989,83 @@ Public Class frmConstructor_Main
End Sub End Sub
Sub Load_Tree_View(ConstructorId As Integer) Sub Load_Tree_View(ConstructorId As Integer)
Dim sw As New Stopwatch Dim sw As New SW("Load_Tree_View")
sw.Start()
TreeViewMain.Nodes.Clear() TreeViewMain.Nodes.Clear()
Dim SQL As String
Dim DT, DT2, DT3 As DataTable
' Daten für Level1 Nodes Laden ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _ Dim query1 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
"from VWPMO_CONSTRUCTOR_FORMS WHERE PARENT_ID = 0 AND CONSTRUCT_ID = {2} AND SCREEN_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, ConstructorId, CURRENT_SCREEN_ID) Select form
DT = ClassDatabase.Return_Datatable(SQL) Order By form.Item("SEQUENCE")
Where form.Item("PARENT_ID") = 0
If DT Is Nothing Then Dim Rows1 = query1.ToList()
Exit Sub
End If
If DT.Rows.Count >= 1 Then For Each Row1 In Rows1
For Each Row1 As DataRow In DT.Rows
Dim LEVEL1_NODE As TreeNode
Dim LEVEL2_NODE As TreeNode
Dim LEVEL3_NODE As TreeNode
Dim LEVEL1_TITLE = Row1.Item("CAPTION").ToString
Dim LEVEL1_ID = Row1.Item("FORM_ID").ToString
' Rootnode erstellen und taggen Dim LEVEL1_NODE As TreeNode
LEVEL1_NODE = New TreeNode(LEVEL1_TITLE) Dim LEVEL2_NODE As TreeNode
LEVEL1_NODE.Tag = LEVEL1_ID Dim LEVEL3_NODE As TreeNode
' TreeView Rootnode einfügen Dim LEVEL1_TITLE = Row1.Item("CAPTION").ToString
Dim LEVEL1_ID = Row1.Item("FORM_ID").ToString
TreeViewMain.Nodes.Add(LEVEL1_NODE) ' Rootnode erstellen und taggen
Dim SQL2 As String LEVEL1_NODE = New TreeNode(LEVEL1_TITLE)
' Daten für Level2 Nodes Laden LEVEL1_NODE.Tag = LEVEL1_ID
SQL2 = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {2} AND PARENT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, ConstructorId, LEVEL1_ID)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level2 Nodes SQL: " & SQL2, False)
DT2 = ClassDatabase.Return_Datatable(SQL2)
If Not (DT2 Is Nothing) Then ' TreeView Rootnode einfügen
For Each row As DataRow In DT2.Rows TreeViewMain.Nodes.Add(LEVEL1_NODE)
Dim LEVEL2_TITLE As String = row.Item("CAPTION").ToString
Dim LEVEL2_ID As Integer = row.Item("FORM_ID")
Dim LEVEL2_PARENT_ID As Integer = row.Item("PARENT_ID")
' Node erstellen.. ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
LEVEL2_NODE = New TreeNode(LEVEL2_TITLE) Dim query2 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
LEVEL2_NODE.Tag = LEVEL2_ID Select form
' ..und einfügen Order By form.Item("SEQUENCE")
LEVEL1_NODE.Nodes.Add(LEVEL2_NODE) Where form.Item("PARENT_ID") = LEVEL1_ID
' Daten für Level3 Nodes laden Dim Rows2 = query2.ToList()
SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {2} AND PARENT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, ConstructorId, LEVEL2_ID)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level3 Nodes SQL " & SQL, False)
DT3 = ClassDatabase.Return_Datatable(SQL)
For Each subrow As DataRow In DT3.Rows For Each Row2 In Rows2
Dim LEVEL3_TITLE As String = subrow.Item("CAPTION")
Dim LEVEL3_ID As Integer = subrow.Item("FORM_ID")
' Node erstellen.. Dim LEVEL2_TITLE As String = Row2.Item("CAPTION").ToString
LEVEL3_NODE = New TreeNode(LEVEL3_TITLE) Dim LEVEL2_ID As Integer = Row2.Item("FORM_ID")
LEVEL3_NODE.Tag = LEVEL3_ID Dim LEVEL2_PARENT_ID As Integer = Row2.Item("PARENT_ID")
' ..und einfügen
LEVEL2_NODE.Nodes.Add(LEVEL3_NODE)
Next
Next
End If ' Node erstellen..
LEVEL2_NODE = New TreeNode(LEVEL2_TITLE)
LEVEL2_NODE.Tag = LEVEL2_ID
' ..und einfügen
LEVEL1_NODE.Nodes.Add(LEVEL2_NODE)
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim query3 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Order By form.Item("SEQUENCE")
Where form.Item("PARENT_ID") = LEVEL2_ID
Dim Rows3 = query3.ToList()
For Each Row3 In Rows3
Dim LEVEL3_TITLE As String = Row3.Item("CAPTION")
Dim LEVEL3_ID As Integer = Row3.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 Next
Next
TreeViewMain.ExpandAll()
TreeViewMain.Nodes(0).EnsureVisible()
Dim elapsed As Double
elapsed = sw.Elapsed.TotalSeconds
sw.Stop()
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >> TreeView Load took " & Format(elapsed, "0.000000000") & " seconds", False)
End If
TreeViewMain.ExpandAll() TreeViewMain.ExpandAll()
TreeViewMain.Nodes(0).EnsureVisible()
sw.Done()
End Sub End Sub
Sub Load_Tree_View_Data() Sub Load_Tree_View_Data()
Dim sw As New Stopwatch Dim sw As New Stopwatch
@ -1122,8 +1088,14 @@ Public Class frmConstructor_Main
Else Else
ACT_EBENE = 1 ACT_EBENE = 1
End If End If
Dim Sql = "SELECT GUID from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
CONSTRUCTOR_DETAIL_ID = ClassDatabase.Execute_Scalar(Sql, True) Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
'Dim Sql = "SELECT GUID from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
'CONSTRUCTOR_DETAIL_ID = ClassDatabase.Execute_Scalar(Sql, True)
Dim elapsed As Double Dim elapsed As Double
elapsed = sw.Elapsed.TotalSeconds elapsed = sw.Elapsed.TotalSeconds
@ -1145,6 +1117,12 @@ Public Class frmConstructor_Main
Dim PARENT_ID As Integer Dim PARENT_ID As Integer
Dim TYPE_ID As Integer Dim TYPE_ID As Integer
If a = 0 Then If a = 0 Then
'Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
' Select form
' Where form.Item("FORM_ID") = childNodeLevel1.Tag).Single()
'PARENT_ID = result.Item("PARENT_ID")
'TYPE_ID = result.Item("FORM_TYPE_ID")
Dim sql As String = "SELECT PARENT_ID, FORM_TYPE_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & childNodeLevel1.Tag & " AND SCREEN_ID = " & CURRENT_SCREEN_ID Dim sql As String = "SELECT PARENT_ID, FORM_TYPE_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & childNodeLevel1.Tag & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, "ShowNodeAmounts") Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, "ShowNodeAmounts")
PARENT_ID = DT.Rows(0).Item(0) PARENT_ID = DT.Rows(0).Item(0)
@ -1827,9 +1805,8 @@ Public Class frmConstructor_Main
End Sub End Sub
Sub Load_Entity_Data(ClickedLevel As Integer) Sub Load_Entity_Data(ClickedLevel As Integer)
Try Try
Dim sw As New Stopwatch Dim sw As New SW("Load_Entity_Data")
sw.Start()
Dim elapsed As Double
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
RECORD_CHANGED = False RECORD_CHANGED = False
RECORD_ID = 0 RECORD_ID = 0
@ -1837,14 +1814,28 @@ Public Class frmConstructor_Main
'Setzen von Rechten 'Setzen von Rechten
'GetSet_Rights() 'GetSet_Rights()
'VerknüpfungenToolStripMenuItem.Enabled = False 'VerknüpfungenToolStripMenuItem.Enabled = False
Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
LOAD_DIRECT = result.Item("LOAD_DIRECT")
CURRENT_CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
CONTROL_DOCTYPE_MATCH = result.Item("CONTROL_DOCTYPE_MATCH")
SQL_RIGHT_READ_AND_VIEW_ONLY = result.Item("SQL_RIGHT_READ_AND_VIEW_ONLY")
SQL_RIGHT_WINDREAM_FORBIDDEN = result.Item("SQL_RIGHT_WINDREAM_VIEW")
'LOAD_DIRECT = ClassDatabase.Execute_Scalar("SELECT LOAD_DIRECT FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
'CURRENT_CONSTRUCTOR_DETAIL_ID = ClassDatabase.Execute_Scalar("SELECT GUID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
'CONTROL_DOCTYPE_MATCH = ClassDatabase.Execute_Scalar("SELECT CONTROL_DOCTYPE_MATCH FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
'SQL_RIGHT_READ_AND_VIEW_ONLY = ClassDatabase.Execute_Scalar("SELECT SQL_RIGHT_READ_AND_VIEW_ONLY FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
'SQL_RIGHT_WINDREAM_FORBIDDEN = ClassDatabase.Execute_Scalar("SELECT SQL_RIGHT_WINDREAM_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
FORM_TYPE = ClassDatabase.Execute_Scalar("SELECT FORM_TYPE_ID FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID) FORM_TYPE = ClassDatabase.Execute_Scalar("SELECT FORM_TYPE_ID FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID)
IS_SINGLE_RECORD = ClassDatabase.Execute_Scalar("SELECT SINGLE_RECORD FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID) IS_SINGLE_RECORD = ClassDatabase.Execute_Scalar("SELECT SINGLE_RECORD FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID)
LOAD_DIRECT = ClassDatabase.Execute_Scalar("SELECT LOAD_DIRECT FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
CURRENT_CONSTRUCTOR_DETAIL_ID = ClassDatabase.Execute_Scalar("SELECT GUID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
POS_ENTITY = ClassDatabase.Execute_Scalar("SELECT POS_ENTITY FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID) POS_ENTITY = ClassDatabase.Execute_Scalar("SELECT POS_ENTITY FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID)
CONTROL_DOCTYPE_MATCH = ClassDatabase.Execute_Scalar("SELECT CONTROL_DOCTYPE_MATCH FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
SQL_RIGHT_READ_AND_VIEW_ONLY = ClassDatabase.Execute_Scalar("SELECT SQL_RIGHT_READ_AND_VIEW_ONLY FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
SQL_RIGHT_WINDREAM_FORBIDDEN = ClassDatabase.Execute_Scalar("SELECT SQL_RIGHT_WINDREAM_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
If VIEW_ID_RUNTIME <> -1 Then If VIEW_ID_RUNTIME <> -1 Then
GRID_TYPE_ID = VIEW_ID_RUNTIME GRID_TYPE_ID = VIEW_ID_RUNTIME
Else Else
@ -1870,8 +1861,15 @@ Public Class frmConstructor_Main
End Select End Select
SELECTED_RECORD_ID = 0 SELECTED_RECORD_ID = 0
Dim DT As DataTable Dim DT As DataTable
Dim sql As String = "SELECT PARENT_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
Dim PARENT_ID = ClassDatabase.Execute_Scalar(sql) ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim result1 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
Dim PARENT_ID = result1.Item("PARENT_ID")
'Dim sql As String = "SELECT PARENT_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
'Dim PARENT_ID = ClassDatabase.Execute_Scalar(sql)
If PARENT_ID Is Nothing Then If PARENT_ID Is Nothing Then
MsgBox("Error in GetParentID for selectedNode - Check Logfile", MsgBoxStyle.Exclamation) MsgBox("Error in GetParentID for selectedNode - Check Logfile", MsgBoxStyle.Exclamation)
Exit Sub Exit Sub
@ -1879,8 +1877,7 @@ Public Class frmConstructor_Main
'Abhängig von der Entität die Selektierungs-Daten laden 'Abhängig von der Entität die Selektierungs-Daten laden
Get_Grid_Sql(CONSTRUCTORID, ENTITY_ID, CURRENT_CONSTRUCTOR_DETAIL_ID) Get_Grid_Sql(CONSTRUCTORID, ENTITY_ID, CURRENT_CONSTRUCTOR_DETAIL_ID)
elapsed = sw.Elapsed.TotalSeconds
If LogErrorsOnly = False Then ClassLogger.Add(" >> Get_Grid_Sql took " & Format(elapsed, "0.000000000") & " seconds", False)
'Anzahl der Datensätze 'Anzahl der Datensätze
ENTITY_RECORD_COUNT = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBPMO_RECORD where FORM_ID = " & ENTITY_ID, True) ENTITY_RECORD_COUNT = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBPMO_RECORD where FORM_ID = " & ENTITY_ID, True)
Select Case ClickedLevel Select Case ClickedLevel
@ -1902,7 +1899,13 @@ Public Class frmConstructor_Main
'tslblEntity2.Visible = False 'tslblEntity2.Visible = False
'tslblEntity3.Visible = False 'tslblEntity3.Visible = False
EBENE1_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
Dim result2 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
EBENE1_COLUMNNAME = result2.Item("COLUMN_NAME1")
'EBENE1_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
EBENE2_COLUMNNAME = "" EBENE2_COLUMNNAME = ""
EBENE3_COLUMNNAME = "" EBENE3_COLUMNNAME = ""
EBENE2_GRID_RESULT = Nothing EBENE2_GRID_RESULT = Nothing
@ -1949,7 +1952,12 @@ Public Class frmConstructor_Main
' End If ' End If
'End Select 'End Select
EBENE2_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID) Dim result3 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
EBENE2_COLUMNNAME = result3.Item("COLUMN_NAME1")
'EBENE2_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
EBENE3_COLUMNNAME = "" EBENE3_COLUMNNAME = ""
EBENE2_GRID_RESULT = Nothing EBENE2_GRID_RESULT = Nothing
EBENE3_GRID_RESULT = Nothing EBENE3_GRID_RESULT = Nothing
@ -1959,7 +1967,12 @@ Public Class frmConstructor_Main
ACT_EBENE_STRING = EBENE3_ENTITY ACT_EBENE_STRING = EBENE3_ENTITY
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level 3 selected in TreeView", False) If LogErrorsOnly = False Then ClassLogger.Add(" >> Level 3 selected in TreeView", False)
EBENE3_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID) Dim result4 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
EBENE3_COLUMNNAME = result4.Item("COLUMN_NAME1")
'EBENE3_COLUMNNAME = ClassDatabase.Execute_Scalar("SELECT COLUMN_NAME1 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
'Wenn bereits ein Record für Ebene 1 gewählt wurde dann eisnchränken 'Wenn bereits ein Record für Ebene 1 gewählt wurde dann eisnchränken
If EBENE2_RECID > 0 Then If EBENE2_RECID > 0 Then
'Parent-ID setzen 'Parent-ID setzen
@ -1995,8 +2008,7 @@ Public Class frmConstructor_Main
EBENE3_GRID_RESULT = Nothing EBENE3_GRID_RESULT = Nothing
End Select End Select
elapsed = sw.Elapsed.TotalSeconds - elapsed
If LogErrorsOnly = False Then ClassLogger.Add(" >> Select Case entities took " & Format(elapsed, "0.000000000") & " seconds", False)
_ENTITYSTRING = ACT_EBENE_STRING _ENTITYSTRING = ACT_EBENE_STRING
PARENT_ID = PARENT_RECORDID PARENT_ID = PARENT_RECORDID
act_FormViewID = ClassDatabase.Execute_Scalar("SELECT GUID FROM TBPMO_FORM_VIEW where FORM_ID = " & ENTITY_ID) act_FormViewID = ClassDatabase.Execute_Scalar("SELECT GUID FROM TBPMO_FORM_VIEW where FORM_ID = " & ENTITY_ID)
@ -2157,10 +2169,8 @@ Public Class frmConstructor_Main
elapsed = sw.Elapsed.TotalSeconds sw.Done()
sw.Stop()
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Load_Entity_Data took " & Format(elapsed, "0.000000000") & " seconds", False)
If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then
Reload_Entity_while_Control_Load() Reload_Entity_while_Control_Load()
End If End If
@ -4669,16 +4679,28 @@ Public Class frmConstructor_Main
Dim sw As Stopwatch = Stopwatch.StartNew() Dim sw As Stopwatch = Stopwatch.StartNew()
Dim elapsed As Double Dim elapsed As Double
Dim sql As String = "SELECT * from VWPMO_CONSTRUCTOR_FORMS WHERE PARENT_ID = 0 AND CONSTRUCT_ID = " & CONSTRUCTORID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID & " ORDER BY SEQUENCE"
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
If Not IsNothing(dt) Then ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
If dt.Rows.Count >= 1 Then Dim result = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Dim tn As TreeNode = TreeViewMain.Nodes(0) Select form
TreeViewMain.SelectedNode = tn Order By form.Item("SEQUENCE")
TreeViewMain.Select() Where form.Item("PARENT_ID") = 0
End If
If result.Count >= 1 Then
Dim tn As TreeNode = TreeViewMain.Nodes(0)
TreeViewMain.SelectedNode = tn
TreeViewMain.Select()
End If End If
'Dim sql As String = "SELECT * from VWPMO_CONSTRUCTOR_FORMS WHERE PARENT_ID = 0 AND CONSTRUCT_ID = " & CONSTRUCTORID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID & " ORDER BY SEQUENCE"
'Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
'If Not IsNothing(dt) Then
' If dt.Rows.Count >= 1 Then
' Dim tn As TreeNode = TreeViewMain.Nodes(0)
' TreeViewMain.SelectedNode = tn
' TreeViewMain.Select()
' End If
'End If
elapsed = sw.Elapsed.TotalSeconds elapsed = sw.Elapsed.TotalSeconds
sw.Stop() sw.Stop()
If LogErrorsOnly = False Then ClassLogger.Add(String.Format(" >> Load_Level1 took {0} to load", Format(elapsed, "0.000000000") & " seconds"), False) If LogErrorsOnly = False Then ClassLogger.Add(String.Format(" >> Load_Level1 took {0} to load", Format(elapsed, "0.000000000") & " seconds"), False)
@ -4832,25 +4854,34 @@ Public Class frmConstructor_Main
Sub Load_ParentConnections() Sub Load_ParentConnections()
Try Try
' SELECT COLUMN_NAME1 FROM VWTEMP_cPMO_FORM ' SELECT COLUMN_NAME1 FROM VWTEMP_cPMO_FORM
Dim sql = String.Format("SELECT TOP 1 PARENT_ID, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'FORM_TITLE' " & _ 'Dim sql = String.Format("SELECT TOP 1 PARENT_ID, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'FORM_TITLE' " & _
"from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {2} AND SCREEN_ID = {3} AND FORM_ID = {4}", USER_LANGUAGE, CURRENT_SCREEN_ID, CONSTRUCTORID, CURRENT_SCREEN_ID, ENTITY_ID) ' "from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {2} AND SCREEN_ID = {3} AND FORM_ID = {4}", USER_LANGUAGE, CURRENT_SCREEN_ID, CONSTRUCTORID, CURRENT_SCREEN_ID, ENTITY_ID)
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, "Parent-Data") 'Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, "Parent-Data")
Dim Parent_ID = DT.Rows(0).Item(0) ' TODO: LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim Title = DT.Rows(0).Item(1) Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Dim Colname = "[" & ClassDatabase.Execute_Scalar("SELECT TOP 1 COLUMN_NAME1 from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & Parent_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, True) & "]" Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
Dim Parent_ID = result.Item("PARENT_ID")
Dim Title = result.Item("CAPTION")
Dim Colname = "[" & result.Item("COLUMN_NAME1") & "]"
'Dim Parent_ID = DT.Rows(0).Item(0)
'Dim Title = DT.Rows(0).Item(1)
'Dim Colname = "[" & ClassDatabase.Execute_Scalar("SELECT TOP 1 COLUMN_NAME1 from VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & Parent_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, True) & "]"
'Load_GridViewParentEntity_Layout() 'Load_GridViewParentEntity_Layout()
If Not IsNothing(Parent_ID) And Not IsNothing(Colname) Then If Not IsNothing(Parent_ID) And Not IsNothing(Colname) Then
Dim sql
If Colname = "[]" Then If Colname = "[]" Then
sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString Sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString
Else Else
Try Try
sql = "select [Record-ID], " & Colname & " from VWTEMP_PMO_FORM" & Parent_ID.ToString Sql = "select [Record-ID], " & Colname & " from VWTEMP_PMO_FORM" & Parent_ID.ToString
Catch ex As Exception Catch ex As Exception
sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString Sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString
End Try End Try
End If End If
Dim DTGrid As DataTable = ClassDatabase.Return_Datatable(sql, "VariableSelect ParentEntity") Dim DTGrid As DataTable = ClassDatabase.Return_Datatable(Sql, "VariableSelect ParentEntity")
GridControlParent.DataSource = Nothing GridControlParent.DataSource = Nothing
GridViewParent.Columns.Clear() GridViewParent.Columns.Clear()
'Databinding Neu 'Databinding Neu