diff --git a/app/DD-Record-Organiser/ModuleHelperMethods.vb b/app/DD-Record-Organiser/ModuleHelperMethods.vb index c08caac..31782a5 100644 --- a/app/DD-Record-Organiser/ModuleHelperMethods.vb +++ b/app/DD-Record-Organiser/ModuleHelperMethods.vb @@ -405,10 +405,13 @@ stopwatch.Start() End Sub - Public Sub Done() + Public Function Done() As Long stopwatch.Stop() - Console.WriteLine("{0} took {1} milliseconds to complete", label, stopwatch.ElapsedMilliseconds) - End Sub + Dim message = String.Format("{0} took {1} milliseconds to complete", label, stopwatch.ElapsedMilliseconds) + Console.WriteLine(message) + If LogErrorsOnly = False Then ClassLogger.Add(message, False) + Return stopwatch.ElapsedMilliseconds + End Function End Class diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index 68304c5..570b629 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -221,8 +221,8 @@ Public Class frmConstructor_Main 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' " & _ "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, CONSTRUCTORID) - 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) If DT_CONSTRUCT_VIEW.Rows.Count = 1 Then 'Load Input Grid @@ -241,7 +241,6 @@ Public Class frmConstructor_Main 'System.Windows.Forms.MessageBox.Show(ex.Message) End Try Me.Cursor = Cursors.Default - End Sub #Region "Layout" @@ -565,28 +564,6 @@ Public Class frmConstructor_Main 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) Try If GRID_TYPE = GridType.Grid Then @@ -594,19 +571,13 @@ Public Class frmConstructor_Main _VIEWNAME = "VWTEMP_PMO_FORM" & FormId.ToString _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" Else 'Tiles und Carousel bekommen Quick View - ' Define the filter - Dim DT As DataTable = DT_VWPMO_CONSTRUCTOR_FORMS - Dim filter As String = "FORM_ID = " & FormId & " AND SCREEN_ID = " & CURRENT_SCREEN_ID - ' Filter the rows using Select() method of DataTable - Dim FilteredRows As DataRow() = DT.Select(filter) + ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS + Dim query = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() + Select form + Where form.Item("FORM_ID") = FormId - For Each row As DataRow In FilteredRows - _ENTITYSQL = row("SQL_QUICK_VIEW") - ' ListBox1.Items.Add(String.Format("{0}, {1}", row("CompanyName"), row("City"))) - Next + _ENTITYSQL = query.Single().Item("SQL_QUICK_VIEW") - ' _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 _ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" If IS_SINGLE_RECORD = True Or FORM_TYPE = 5 Then @@ -1018,88 +989,83 @@ Public Class frmConstructor_Main End Sub Sub Load_Tree_View(ConstructorId As Integer) - Dim sw As New Stopwatch - sw.Start() + Dim sw As New SW("Load_Tree_View") + TreeViewMain.Nodes.Clear() - Dim SQL As String - Dim DT, DT2, DT3 As DataTable - ' Daten für Level1 Nodes Laden - SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & _ - "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) - DT = ClassDatabase.Return_Datatable(SQL) + ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS + Dim query1 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() + Select form + Order By form.Item("SEQUENCE") + Where form.Item("PARENT_ID") = 0 - If DT Is Nothing Then - Exit Sub - End If + Dim Rows1 = query1.ToList() - If DT.Rows.Count >= 1 Then - 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 + For Each Row1 In Rows1 - ' Rootnode erstellen und taggen - LEVEL1_NODE = New TreeNode(LEVEL1_TITLE) - LEVEL1_NODE.Tag = LEVEL1_ID + Dim LEVEL1_NODE As TreeNode + Dim LEVEL2_NODE As TreeNode + 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) - Dim SQL2 As String - ' Daten für Level2 Nodes Laden - 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) + ' Rootnode erstellen und taggen + LEVEL1_NODE = New TreeNode(LEVEL1_TITLE) + LEVEL1_NODE.Tag = LEVEL1_ID - If Not (DT2 Is Nothing) Then - For Each row As DataRow In DT2.Rows - 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") + ' TreeView Rootnode einfügen + TreeViewMain.Nodes.Add(LEVEL1_NODE) - ' 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 query2 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() + Select form + Order By form.Item("SEQUENCE") + Where form.Item("PARENT_ID") = LEVEL1_ID - ' Daten für Level3 Nodes laden - 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) + Dim Rows2 = query2.ToList() - For Each subrow As DataRow In DT3.Rows - Dim LEVEL3_TITLE As String = subrow.Item("CAPTION") - Dim LEVEL3_ID As Integer = subrow.Item("FORM_ID") + For Each Row2 In Rows2 - ' Node erstellen.. - LEVEL3_NODE = New TreeNode(LEVEL3_TITLE) - LEVEL3_NODE.Tag = LEVEL3_ID - ' ..und einfügen - LEVEL2_NODE.Nodes.Add(LEVEL3_NODE) - Next - Next + Dim LEVEL2_TITLE As String = Row2.Item("CAPTION").ToString + Dim LEVEL2_ID As Integer = Row2.Item("FORM_ID") + Dim LEVEL2_PARENT_ID As Integer = Row2.Item("PARENT_ID") - 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 - 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.Nodes(0).EnsureVisible() + + sw.Done() End Sub Sub Load_Tree_View_Data() Dim sw As New Stopwatch @@ -1122,8 +1088,14 @@ Public Class frmConstructor_Main Else ACT_EBENE = 1 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 elapsed = sw.Elapsed.TotalSeconds @@ -1145,6 +1117,12 @@ Public Class frmConstructor_Main Dim PARENT_ID As Integer Dim TYPE_ID As Integer 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 DT As DataTable = ClassDatabase.Return_Datatable(sql, "ShowNodeAmounts") PARENT_ID = DT.Rows(0).Item(0) @@ -1827,9 +1805,8 @@ Public Class frmConstructor_Main End Sub Sub Load_Entity_Data(ClickedLevel As Integer) Try - Dim sw As New Stopwatch - sw.Start() - Dim elapsed As Double + Dim sw As New SW("Load_Entity_Data") + Me.Cursor = Cursors.WaitCursor RECORD_CHANGED = False RECORD_ID = 0 @@ -1837,14 +1814,28 @@ Public Class frmConstructor_Main 'Setzen von Rechten 'GetSet_Rights() '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) 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) - 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 GRID_TYPE_ID = VIEW_ID_RUNTIME Else @@ -1870,8 +1861,15 @@ Public Class frmConstructor_Main End Select SELECTED_RECORD_ID = 0 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 MsgBox("Error in GetParentID for selectedNode - Check Logfile", MsgBoxStyle.Exclamation) Exit Sub @@ -1879,8 +1877,7 @@ Public Class frmConstructor_Main 'Abhängig von der Entität die Selektierungs-Daten laden 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 ENTITY_RECORD_COUNT = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBPMO_RECORD where FORM_ID = " & ENTITY_ID, True) Select Case ClickedLevel @@ -1902,7 +1899,13 @@ Public Class frmConstructor_Main '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 = " & 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 = "" EBENE3_COLUMNNAME = "" EBENE2_GRID_RESULT = Nothing @@ -1949,7 +1952,12 @@ Public Class frmConstructor_Main ' End If '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 = "" EBENE2_GRID_RESULT = Nothing EBENE3_GRID_RESULT = Nothing @@ -1959,7 +1967,12 @@ Public Class frmConstructor_Main ACT_EBENE_STRING = EBENE3_ENTITY 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 If EBENE2_RECID > 0 Then 'Parent-ID setzen @@ -1995,8 +2008,7 @@ Public Class frmConstructor_Main EBENE3_GRID_RESULT = Nothing 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 PARENT_ID = PARENT_RECORDID 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.Stop() - sw.Reset() - If LogErrorsOnly = False Then ClassLogger.Add(" >> Load_Entity_Data took " & Format(elapsed, "0.000000000") & " seconds", False) + sw.Done() + If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then Reload_Entity_while_Control_Load() End If @@ -3276,14 +3286,14 @@ Public Class frmConstructor_Main End If TabWindream.Text = stg & " (" & windreamSucheErgebnisse.Count & ")" - ' AxObjectListControl.SetIconMode(True) - ' AxObjectListControl.RemoveAllColumnHeader() - ' Me.AxObjectListControl.SetSession(ClassWindream.oSession, "", "") + AxObjectListControl.SetIconMode(True) + AxObjectListControl.RemoveAllColumnHeader() + Me.AxObjectListControl.SetSession(ClassWindream.oSession, "", "") 'Change the status icon 'ICON STATES: - ' Me.AxObjectListControl.SetStatusIcon(0) + Me.AxObjectListControl.SetStatusIcon(0) 'Change the icon - ' Me.AxObjectListControl.SetStatusIcon(2) + Me.AxObjectListControl.SetStatusIcon(2) Try Dim sql_ResultList = "select * from TBPMO_WINDREAM_RESULTLIST_CONFIG where guid = 1" @@ -3305,7 +3315,7 @@ Public Class frmConstructor_Main 'You need to use the column name here 'Please note that some attributes or indices will not be displayed 'Try not to add the same header twice, it will throw cause problems if you do that - ' Me.AxObjectListControl.AddColumnHeader(ColumnName, Width) + Me.AxObjectListControl.AddColumnHeader(ColumnName, Width) anzparam += 1 End If End If @@ -3343,7 +3353,7 @@ Public Class frmConstructor_Main 'You need to use the column name here 'Please note that some attributes or indices will not be displayed 'Try not to add the same header twice, it will throw cause problems if you do that - ' Me.AxObjectListControl.AddColumnHeader(spar, width) + Me.AxObjectListControl.AddColumnHeader(spar, width) Next End If @@ -3355,22 +3365,22 @@ Public Class frmConstructor_Main Dim results As WINDREAMLib.WMObjects = windreamSucheErgebnisse If LogErrorsOnly = False Then ClassLogger.Add(" >> results loaded ", False) 'Set the contents without displaying them - ' AxObjectListControl.SetContentsEx(results) + AxObjectListControl.SetContentsEx(results) 'Change the icon - 'AxObjectListControl.SetStatusIcon(5) + AxObjectListControl.SetStatusIcon(5) 'Display the results... 'The Previous Object Count Dim poc As Integer = 0 'Display new objects, as long as the objectcount changes after displaying the objects - 'Do Until (poc <> AxObjectListControl.GetObjectCount) - ' poc = AxObjectListControl.GetObjectCount - ' 'If you want, you can display more items at a timeRefresh_FollowUp_TabHeader - ' 'But do not display to many at a time or the user interface could freeze - ' 'Maybe try 50 - ' AxObjectListControl.DisplayResults(WDResultListCount) - 'Loop - ' AxObjectListControl.SetStatusIcon(3) + Do Until (poc <> AxObjectListControl.GetObjectCount) + poc = AxObjectListControl.GetObjectCount + 'If you want, you can display more items at a timeRefresh_FollowUp_TabHeader + 'But do not display to many at a time or the user interface could freeze + 'Maybe try 50 + AxObjectListControl.DisplayResults(WDResultListCount) + Loop + AxObjectListControl.SetStatusIcon(3) Else Dim msg = "Windream-Dokumente für Record: " & RECORD_ID & " - Keine Dateien gefunden" If USER_LANGUAGE <> "de-DE" Then @@ -3905,7 +3915,7 @@ Public Class frmConstructor_Main ClassLogger.Add(" >> Undefined Search-pattern in windream-search config: " & content, True) End Select End Function - Private Sub AxObjectListControl_ItemClicked(sender As Object, e As EventArgs) + Private Sub AxObjectListControl_ItemClicked(sender As Object, e As EventArgs) Handles AxObjectListControl.ItemClicked CheckDocView() End Sub @@ -3914,8 +3924,8 @@ Public Class frmConstructor_Main Dim sw As New Stopwatch sw.Start() - ' AxObjectListControl.RemoveAllColumnHeader() - ' Me.AxObjectListControl.ClearResultList() + AxObjectListControl.RemoveAllColumnHeader() + Me.AxObjectListControl.ClearResultList() Dim stg As String = "windream-Dateien" If USER_LANGUAGE <> "de-DE" Then stg = "windream-files" @@ -3932,10 +3942,10 @@ Public Class frmConstructor_Main End Sub Sub CheckDocView() - ' Dim _index = AxObjectListControl.GetFirstSelectedObject - ' Dim path As String = AxObjectListControl.GetObjectPath(_index) - ' path = path.Replace("?", vWLaufwerk) - ' DocViewString = path + Dim _index = AxObjectListControl.GetFirstSelectedObject + Dim path As String = AxObjectListControl.GetObjectPath(_index) + path = path.Replace("?", vWLaufwerk) + DocViewString = path If WD_ShowDocs = True Then CloseWDDocview() @@ -4669,16 +4679,28 @@ Public Class frmConstructor_Main Dim sw As Stopwatch = Stopwatch.StartNew() 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 - If dt.Rows.Count >= 1 Then - Dim tn As TreeNode = TreeViewMain.Nodes(0) - TreeViewMain.SelectedNode = tn - TreeViewMain.Select() - End If + ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS + Dim result = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() + Select form + Order By form.Item("SEQUENCE") + Where form.Item("PARENT_ID") = 0 + + If result.Count >= 1 Then + Dim tn As TreeNode = TreeViewMain.Nodes(0) + TreeViewMain.SelectedNode = tn + TreeViewMain.Select() 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 sw.Stop() 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() Try ' 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' " & _ - "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 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) + 'Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, "Parent-Data") - 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) & "]" + ' TODO: LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS + Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() + 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() If Not IsNothing(Parent_ID) And Not IsNothing(Colname) Then + Dim sql If Colname = "[]" Then - sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString + Sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString Else 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 - sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString + Sql = "select * from VWTEMP_PMO_FORM" & Parent_ID.ToString End Try 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 GridViewParent.Columns.Clear() 'Databinding Neu @@ -4987,15 +5018,15 @@ Public Class frmConstructor_Main ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub - Private Sub AxObjectListControl_CausesValidationChanged(sender As Object, e As EventArgs) + Private Sub AxObjectListControl_CausesValidationChanged(sender As Object, e As EventArgs) Handles AxObjectListControl.CausesValidationChanged Console.WriteLine("CausesValidationChanged") End Sub - Private Sub AxObjectListControl_SettingFlagChanged(sender As Object, e As EventArgs) + Private Sub AxObjectListControl_SettingFlagChanged(sender As Object, e As EventArgs) Handles AxObjectListControl.SettingFlagChanged Console.WriteLine("SettingFlagChanged") End Sub - Private Sub AxObjectListControl_Validated(sender As Object, e As EventArgs) + Private Sub AxObjectListControl_Validated(sender As Object, e As EventArgs) Handles AxObjectListControl.Validated Console.WriteLine("Validated") End Sub