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
|
||||
'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 Const STATE_SUCCESS As String = "SUCCESS"
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
Public Class Search
|
||||
Public Id As Integer
|
||||
Public Title As String
|
||||
Public Description As String
|
||||
Public Caption As String
|
||||
Public SQLCommand As String
|
||||
Public ReturnType As Constants.ReturnTypeEnum
|
||||
Public ExpectedParameterCount As Integer
|
||||
Public UseMOTLogic As Boolean
|
||||
|
||||
Public Parameters As List(Of SearchParameter)
|
||||
|
||||
|
||||
@@ -240,7 +240,14 @@ Public Class frmMonitor
|
||||
If oSearch.SQLCommand.Length > 0 Then
|
||||
oSQL = Patterns.ReplaceControlValues(oSearch.SQLCommand, oControls)
|
||||
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
|
||||
|
||||
Dim oStartTime = Now
|
||||
@@ -271,7 +278,7 @@ Public Class frmMonitor
|
||||
For Each oColumn In TreeListResults.Columns
|
||||
oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName)
|
||||
Next
|
||||
GridBuilder.SetDateTimeColumns(TreeListResults)
|
||||
GridBuilder.SetDateTimeColumns(TreeListResults, "G")
|
||||
|
||||
Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE")
|
||||
For Each oNode As TreeListNode In TreeListResults.Nodes
|
||||
@@ -357,7 +364,7 @@ Public Class frmMonitor
|
||||
|
||||
GridControlResults.DataSource = oTable
|
||||
GridViewResults.PopulateColumns()
|
||||
GridBuilder.SetDateTimeColumns(GridViewResults)
|
||||
GridBuilder.SetDateTimeColumns(GridViewResults, "G")
|
||||
|
||||
For Each oColumn As GridColumn In GridViewResults.Columns
|
||||
If oColumn.ColumnType = GetType(Integer) Then
|
||||
@@ -1040,6 +1047,8 @@ Public Class frmMonitor
|
||||
|
||||
GridControl.DataSource = Table
|
||||
GridControl.DefaultView.PopulateColumns()
|
||||
'Hiermit wird das Datumsformat für Untertabellen auf lang gesetzt
|
||||
GridBuilder.SetDateTimeColumns(GridControl.DefaultView, "G")
|
||||
|
||||
Dim oTabPage = DirectCast(GridControl.Parent, XtraTabPage)
|
||||
oTabPage.PageVisible = True
|
||||
|
||||
@@ -9,6 +9,8 @@ Public Class SearchLoader
|
||||
Private ReadOnly Config As Config
|
||||
Private ReadOnly Database As MSSQLServer
|
||||
|
||||
Private _currentUserId As Int16 = 0
|
||||
|
||||
Public Searches As New List(Of Search)
|
||||
Public Parameters As New List(Of SearchParameter)
|
||||
Public ChartParameters As New List(Of ChartParameter)
|
||||
@@ -36,9 +38,10 @@ Public Class SearchLoader
|
||||
Dim oSearch = New Search With {
|
||||
.Id = oSearchId,
|
||||
.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)),
|
||||
.SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty),
|
||||
.UseMOTLogic = GetMOTLogicType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
|
||||
.Parameters = oParams
|
||||
}
|
||||
|
||||
@@ -55,6 +58,11 @@ Public Class SearchLoader
|
||||
Continue For
|
||||
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
|
||||
oSearch.ExpectedParameterCount = oSearch.SQLCommand.Split({"#CTRL#"}, StringSplitOptions.None).Length - 1
|
||||
|
||||
@@ -116,6 +124,27 @@ Public Class SearchLoader
|
||||
ChartParameters = oParameters
|
||||
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
|
||||
Select Case pTypeString
|
||||
Case "LIST"
|
||||
@@ -135,11 +164,30 @@ Public Class SearchLoader
|
||||
Return ReturnTypeEnum.TreeView
|
||||
Case "ChartView"
|
||||
Return ReturnTypeEnum.ChartView
|
||||
Case "TableMOT"
|
||||
Return ReturnTypeEnum.Table
|
||||
Case "TreeViewMOT"
|
||||
Return ReturnTypeEnum.TreeView
|
||||
Case "ChartViewMOT"
|
||||
Return ReturnTypeEnum.ChartView
|
||||
Case Else
|
||||
Return ReturnTypeEnum.Undefined
|
||||
End Select
|
||||
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
|
||||
Select Case pTypeString.ToUpper
|
||||
Case "BIT"
|
||||
|
||||
Reference in New Issue
Block a user