Monitor: Datumsspalten im langen Format / UserID des aktuellen Users kann verwendet werden / Speicheroptimierte Abfragen ohne Transaktion
This commit is contained in:
@@ -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