Monitor: Datumsspalten im langen Format / UserID des aktuellen Users kann verwendet werden / Speicheroptimierte Abfragen ohne Transaktion
This commit is contained in:
@@ -1,11 +1,4 @@
|
|||||||
Namespace Constants
|
Namespace Constants
|
||||||
'Public Const STATE_SUCCESS As String = "SUCCESS"
|
|
||||||
'Public Const STATE_FAILURE As String = "FAILURE"
|
|
||||||
'Public Const STATE_WARNING As String = "WARNING"
|
|
||||||
'Public Const STATE_WAITING As String = "WAITING"
|
|
||||||
'Public Const STATE_HIGHLIGHT As String = "HIGHLIGHT"
|
|
||||||
'Public Const STATE_DEFAULT As String = "DEFAULT"
|
|
||||||
'Public Const STATE_USER As String = "USER"
|
|
||||||
|
|
||||||
Public Class State
|
Public Class State
|
||||||
Public Const STATE_SUCCESS As String = "SUCCESS"
|
Public Const STATE_SUCCESS As String = "SUCCESS"
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
Public Class Search
|
Public Class Search
|
||||||
Public Id As Integer
|
Public Id As Integer
|
||||||
Public Title As String
|
Public Title As String
|
||||||
Public Description As String
|
Public Caption As String
|
||||||
Public SQLCommand As String
|
Public SQLCommand As String
|
||||||
Public ReturnType As Constants.ReturnTypeEnum
|
Public ReturnType As Constants.ReturnTypeEnum
|
||||||
Public ExpectedParameterCount As Integer
|
Public ExpectedParameterCount As Integer
|
||||||
|
Public UseMOTLogic As Boolean
|
||||||
|
|
||||||
Public Parameters As List(Of SearchParameter)
|
Public Parameters As List(Of SearchParameter)
|
||||||
|
|
||||||
|
|||||||
@@ -240,7 +240,14 @@ Public Class frmMonitor
|
|||||||
If oSearch.SQLCommand.Length > 0 Then
|
If oSearch.SQLCommand.Length > 0 Then
|
||||||
oSQL = Patterns.ReplaceControlValues(oSearch.SQLCommand, oControls)
|
oSQL = Patterns.ReplaceControlValues(oSearch.SQLCommand, oControls)
|
||||||
Logger.Debug($"SQL after replacing placeholder: [{0}]", oSQL)
|
Logger.Debug($"SQL after replacing placeholder: [{0}]", oSQL)
|
||||||
oTable = Await Database.GetDatatableAsync(oSQL)
|
|
||||||
|
If oSearch.UseMOTLogic = True Then
|
||||||
|
' MOT-Abfragen müssen OHNE Transaktion aufgerufen werden
|
||||||
|
oTable = Await Database.GetDatatableWithoutTransactionAsync(oSQL)
|
||||||
|
Else
|
||||||
|
' sonstige Abfragen wie bisher mit Transaktion
|
||||||
|
oTable = Await Database.GetDatatableAsync(oSQL)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim oStartTime = Now
|
Dim oStartTime = Now
|
||||||
@@ -271,7 +278,7 @@ Public Class frmMonitor
|
|||||||
For Each oColumn In TreeListResults.Columns
|
For Each oColumn In TreeListResults.Columns
|
||||||
oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName)
|
oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName)
|
||||||
Next
|
Next
|
||||||
GridBuilder.SetDateTimeColumns(TreeListResults)
|
GridBuilder.SetDateTimeColumns(TreeListResults, "G")
|
||||||
|
|
||||||
Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE")
|
Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE")
|
||||||
For Each oNode As TreeListNode In TreeListResults.Nodes
|
For Each oNode As TreeListNode In TreeListResults.Nodes
|
||||||
@@ -357,7 +364,7 @@ Public Class frmMonitor
|
|||||||
|
|
||||||
GridControlResults.DataSource = oTable
|
GridControlResults.DataSource = oTable
|
||||||
GridViewResults.PopulateColumns()
|
GridViewResults.PopulateColumns()
|
||||||
GridBuilder.SetDateTimeColumns(GridViewResults)
|
GridBuilder.SetDateTimeColumns(GridViewResults, "G")
|
||||||
|
|
||||||
For Each oColumn As GridColumn In GridViewResults.Columns
|
For Each oColumn As GridColumn In GridViewResults.Columns
|
||||||
If oColumn.ColumnType = GetType(Integer) Then
|
If oColumn.ColumnType = GetType(Integer) Then
|
||||||
@@ -1040,6 +1047,8 @@ Public Class frmMonitor
|
|||||||
|
|
||||||
GridControl.DataSource = Table
|
GridControl.DataSource = Table
|
||||||
GridControl.DefaultView.PopulateColumns()
|
GridControl.DefaultView.PopulateColumns()
|
||||||
|
'Hiermit wird das Datumsformat für Untertabellen auf lang gesetzt
|
||||||
|
GridBuilder.SetDateTimeColumns(GridControl.DefaultView, "G")
|
||||||
|
|
||||||
Dim oTabPage = DirectCast(GridControl.Parent, XtraTabPage)
|
Dim oTabPage = DirectCast(GridControl.Parent, XtraTabPage)
|
||||||
oTabPage.PageVisible = True
|
oTabPage.PageVisible = True
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ Public Class SearchLoader
|
|||||||
Private ReadOnly Config As Config
|
Private ReadOnly Config As Config
|
||||||
Private ReadOnly Database As MSSQLServer
|
Private ReadOnly Database As MSSQLServer
|
||||||
|
|
||||||
|
Private _currentUserId As Int16 = 0
|
||||||
|
|
||||||
Public Searches As New List(Of Search)
|
Public Searches As New List(Of Search)
|
||||||
Public Parameters As New List(Of SearchParameter)
|
Public Parameters As New List(Of SearchParameter)
|
||||||
Public ChartParameters As New List(Of ChartParameter)
|
Public ChartParameters As New List(Of ChartParameter)
|
||||||
@@ -36,9 +38,10 @@ Public Class SearchLoader
|
|||||||
Dim oSearch = New Search With {
|
Dim oSearch = New Search With {
|
||||||
.Id = oSearchId,
|
.Id = oSearchId,
|
||||||
.Title = oRow.ItemEx("TITLE", String.Empty),
|
.Title = oRow.ItemEx("TITLE", String.Empty),
|
||||||
.Description = oRow.ItemEx("CAPTION", String.Empty),
|
.Caption = oRow.ItemEx("CAPTION", String.Empty),
|
||||||
.ReturnType = GetReturnType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
|
.ReturnType = GetReturnType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
|
||||||
.SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty),
|
.SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty),
|
||||||
|
.UseMOTLogic = GetMOTLogicType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
|
||||||
.Parameters = oParams
|
.Parameters = oParams
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,6 +58,11 @@ Public Class SearchLoader
|
|||||||
Continue For
|
Continue For
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If oSearch.SQLCommand.Contains("{#USER#USER_ID}") = True Then
|
||||||
|
SetUserID()
|
||||||
|
oSearch.SQLCommand = oSearch.SQLCommand.Replace("{#USER#USER_ID}", _currentUserId.ToString())
|
||||||
|
End If
|
||||||
|
|
||||||
' Anzahl der erwarteten Parameter
|
' Anzahl der erwarteten Parameter
|
||||||
oSearch.ExpectedParameterCount = oSearch.SQLCommand.Split({"#CTRL#"}, StringSplitOptions.None).Length - 1
|
oSearch.ExpectedParameterCount = oSearch.SQLCommand.Split({"#CTRL#"}, StringSplitOptions.None).Length - 1
|
||||||
|
|
||||||
@@ -116,6 +124,27 @@ Public Class SearchLoader
|
|||||||
ChartParameters = oParameters
|
ChartParameters = oParameters
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub SetUserID()
|
||||||
|
|
||||||
|
If (_currentUserId > 0) Then
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim oCurrentUsername As String = Environment.UserName
|
||||||
|
_currentUserId = 1
|
||||||
|
|
||||||
|
If String.IsNullOrEmpty(oCurrentUsername) = False Then
|
||||||
|
Dim oSql = "SELECT GUID FROM TBDD_USER WHERE USERNAME = '" + oCurrentUsername + "'"
|
||||||
|
Dim oSqlResult = CStr(Database.GetScalarValue(oSql))
|
||||||
|
Dim userID As Int16
|
||||||
|
If Int16.TryParse(oSqlResult, userID) = False Then
|
||||||
|
userID = 1
|
||||||
|
End If
|
||||||
|
_currentUserId = userID
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Function GetItemType(pTypeString As String) As ItemTypeEnum
|
Private Function GetItemType(pTypeString As String) As ItemTypeEnum
|
||||||
Select Case pTypeString
|
Select Case pTypeString
|
||||||
Case "LIST"
|
Case "LIST"
|
||||||
@@ -135,11 +164,30 @@ Public Class SearchLoader
|
|||||||
Return ReturnTypeEnum.TreeView
|
Return ReturnTypeEnum.TreeView
|
||||||
Case "ChartView"
|
Case "ChartView"
|
||||||
Return ReturnTypeEnum.ChartView
|
Return ReturnTypeEnum.ChartView
|
||||||
|
Case "TableMOT"
|
||||||
|
Return ReturnTypeEnum.Table
|
||||||
|
Case "TreeViewMOT"
|
||||||
|
Return ReturnTypeEnum.TreeView
|
||||||
|
Case "ChartViewMOT"
|
||||||
|
Return ReturnTypeEnum.ChartView
|
||||||
Case Else
|
Case Else
|
||||||
Return ReturnTypeEnum.Undefined
|
Return ReturnTypeEnum.Undefined
|
||||||
End Select
|
End Select
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Function GetMOTLogicType(pTypeString As String) As Boolean
|
||||||
|
|
||||||
|
If String.IsNullOrEmpty(pTypeString) Then
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
|
||||||
|
If pTypeString.Contains("MOT") Then
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return False
|
||||||
|
End Function
|
||||||
|
|
||||||
Private Function GetDataType(pTypeString As String) As DataTypeEnum
|
Private Function GetDataType(pTypeString As String) As DataTypeEnum
|
||||||
Select Case pTypeString.ToUpper
|
Select Case pTypeString.ToUpper
|
||||||
Case "BIT"
|
Case "BIT"
|
||||||
|
|||||||
Reference in New Issue
Block a user