From d45f696564d62e92e261078b52a3af9b4192fc85 Mon Sep 17 00:00:00 2001 From: JenneJ Date: Tue, 12 Jan 2016 15:24:12 +0100 Subject: [PATCH] jj_12_01_16__2 --- app/DD-Record-Organiser/ClassControlLoader.vb | 23 ++++++++++++++----- .../frmForm_Constructor_Main_2.vb | 19 +++++---------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb index bef29ef..2b7c60c 100644 --- a/app/DD-Record-Organiser/ClassControlLoader.vb +++ b/app/DD-Record-Organiser/ClassControlLoader.vb @@ -14,6 +14,7 @@ End Class Public Class _ListControl : Inherits _BaseControl + Public Shared Function _GetDynamicValue(controlId As Integer, formId As Integer, recordId As Integer, parentRecordId As Integer) As DynamicValue Dim returnValue As DynamicValue @@ -70,7 +71,7 @@ End Try End Function - + End Class Public Structure DynamicValue @@ -174,8 +175,8 @@ Dim sw2 = Stopwatch.StartNew() - '' Damit beim Setzen von DisplayMember und ValueMember kein Fehler auftritt, - '' muss die Datasource zunächst geleert werden und der selected index auf -1 gesetzt werden. + ' Damit beim Setzen von DisplayMember und ValueMember kein Fehler auftritt, + ' muss die Datasource zunächst geleert werden und der selected index auf -1 gesetzt werden. control.DataSource = Nothing control.SelectedIndex = -1 @@ -261,15 +262,25 @@ If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then Dim dt As DataTable = dynamic.DataTable + Dim columnCount As Integer = dt.Columns.Count - control.DataSource = dt - If dt.Columns.Count = 1 Then + ' Damit beim Setzen von DisplayMember und ValueMember kein Fehler auftritt, + ' muss die Datasource zunächst geleert werden und der selected index auf -1 gesetzt werden. + control.DataSource = Nothing + control.SelectedIndex = -1 + + ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, + ' Dadurch ist das Laden der Datasource um einiges SCHNELLER + If columnCount = 1 Then control.DisplayMember = dt.Columns(0).ColumnName control.ValueMember = dt.Columns(0).ColumnName - ElseIf dt.Columns.Count = 2 Then + ElseIf columnCount = 2 Then control.DisplayMember = dt.Columns(1).ColumnName control.ValueMember = dt.Columns(0).ColumnName End If + + ' Als letztes setzen wir die DataSource + control.DataSource = dt End If Catch ex As Exception diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb index 5cdf93b..77a3039 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb @@ -856,15 +856,11 @@ Public Class frmForm_Constructor_Main_2 End Try End Sub Function ReturnAmountofRecords(EntityID As Integer, PARENT_ID As Integer) - Dim SW = Stopwatch.StartNew() - ' Statt eine Table zurückzugeben, können wir die anzahl der Zeilen auch in der Datenbank berechnen, ' dadurch wird die Abfrage um einiges schneller - 'Dim _sql As String = "SELECT T.* FROM VWTEMP_PMO_FORM" & EntityID & " AS T,TBPMO_RECORD_CONNECT T1 WHERE T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = @RecordID" - Dim __sql As String = "SELECT COUNT(*) FROM ( SELECT T.* FROM VWTEMP_PMO_FORM" & EntityID & " AS T,TBPMO_RECORD_CONNECT T1 WHERE T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = @RecordID ) x" - 'Abhängig von der Entität dieAnzahl der Datensätze laden + Dim SQL As String = "SELECT COUNT(*) FROM ( SELECT T.* FROM VWTEMP_PMO_FORM" & EntityID & " AS T,TBPMO_RECORD_CONNECT T1 WHERE T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = @RecordID ) x" - ' _sql = ClassDatabase.Execute_Scalar("SELECT SQL_SELECT_EBENE2 FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & EntityID) + 'Abhängig von der Entität dieAnzahl der Datensätze laden Select Case ACT_EBENE Case 1 If EBENE1_RECID = 0 Then @@ -872,7 +868,7 @@ Public Class frmForm_Constructor_Main_2 End If '_sql = _sql.Replace("@RecordID", EBENE1_RECID) - __sql = __sql.Replace("@RecordID", EBENE1_RECID) + SQL = SQL.Replace("@RecordID", EBENE1_RECID) Case 2 If EBENE2_RECID = 0 Then Return 99999999 @@ -881,22 +877,19 @@ Public Class frmForm_Constructor_Main_2 End If '_sql = _sql.Replace("@RecordID", EBENE2_RECID) - __sql = __sql.Replace("@RecordID", EBENE2_RECID) + SQL = SQL.Replace("@RecordID", EBENE2_RECID) Case 3 If EBENE3_RECID = 0 Then Return 99999999 End If '_sql = _sql.Replace("@RecordID", EBENE2_RECID) - __sql = __sql.Replace("@RecordID", EBENE2_RECID) + SQL = SQL.Replace("@RecordID", EBENE2_RECID) End Select 'Dim DT2 As DataTable = ClassDatabase.Return_Datatable(_sql, "ReturnAmountofRecords 1") - Dim count As Integer = ClassDatabase.Execute_Scalar(__sql) + Dim count As Integer = ClassDatabase.Execute_Scalar(SQL) - SW.Stop() - Console.WriteLine("ReturnAmountofRecords took {0} milliseconds", SW.ElapsedMilliseconds) - 'Return DT2.Rows.Count Return count End Function