Monitor: Datumsspalten im langen Format / UserID des aktuellen Users kann verwendet werden / Speicheroptimierte Abfragen ohne Transaktion

This commit is contained in:
2026-03-06 12:26:18 +01:00
parent 6912f290cd
commit fca7d1e0ff
4 changed files with 63 additions and 12 deletions

View File

@@ -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"