MS 2.8.2 Fehlerhandling und Column-Formel Test bei Henning
This commit is contained in:
@@ -21,6 +21,7 @@ Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.Windream
|
||||
Imports DigitalData.Modules.ZooFlow
|
||||
Imports GdPicture.Internal.CAD.DWG.Entities
|
||||
|
||||
Public Class frmMain
|
||||
Private Property FormHelper As FormHelper
|
||||
@@ -36,7 +37,7 @@ Public Class frmMain
|
||||
Private YellowDocuments As Integer = 0
|
||||
Private GreenDocuments As Integer = 0
|
||||
Private GridViewItem_Clicked = Nothing
|
||||
Private GridCursorLocation As Point
|
||||
Private GridCursorLocation As System.Drawing.Point
|
||||
Private GRID_LOAD_TYPE As String = "OVERVIEW"
|
||||
Private GRID_INV_COL_REMOVED As Boolean = False
|
||||
Private NO_WORKFLOWITEMS As Boolean = False
|
||||
@@ -454,7 +455,7 @@ Public Class frmMain
|
||||
Timer_Inactivity_Reset_Disable("FormLoad")
|
||||
|
||||
'Restore_Form_Position()
|
||||
Dim oSavedPosition As Point = My.Settings.frmMainPosition
|
||||
Dim oSavedPosition As System.Drawing.Point = My.Settings.frmMainPosition
|
||||
|
||||
' Prüfen, ob die Position sichtbar ist
|
||||
If IsPositionVisible(oSavedPosition) Then
|
||||
@@ -539,10 +540,10 @@ Public Class frmMain
|
||||
|
||||
FormOpenClose = False
|
||||
End Sub
|
||||
Private Function IsPositionVisible(position As Point) As Boolean
|
||||
Private Function IsPositionVisible(position As System.Drawing.Point) As Boolean
|
||||
For Each scr As Screen In Screen.AllScreens
|
||||
If scr.WorkingArea.Contains(position) Then
|
||||
Return True ' Punkt ist sichtbar
|
||||
Return True ' Punkt ist auf diesem Bildschirm sichtbar
|
||||
End If
|
||||
Next
|
||||
Return False ' Punkt ist außerhalb aller sichtbaren Bereiche
|
||||
@@ -1430,7 +1431,6 @@ Public Class frmMain
|
||||
|
||||
' ========== UI VORBEREITEN (NUR BEI OVERVIEW) ==========
|
||||
Dim loadSuccess As Boolean = False
|
||||
|
||||
If GRID_LOAD_TYPE = "OVERVIEW" Then
|
||||
If LOG_HOTSPOTS Then
|
||||
LOGGER.Info("[PERF Decide_Load] ruft LoadOverviewData auf...")
|
||||
@@ -1441,6 +1441,8 @@ Public Class frmMain
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
Await Task.Yield()
|
||||
|
||||
' Daten laden
|
||||
loadSuccess = Await LoadOverviewData(pIsFormLoad, ForceReload)
|
||||
|
||||
@@ -1454,6 +1456,8 @@ Public Class frmMain
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
Await Task.Yield()
|
||||
|
||||
' Daten laden
|
||||
loadSuccess = Await LoadProfileData(ForceReload)
|
||||
End If
|
||||
@@ -1518,9 +1522,17 @@ Public Class frmMain
|
||||
' OVERVIEW DATEN LADEN - Spezialisiert auf Overview
|
||||
' ========================================
|
||||
Private Async Function LoadOverviewData(pFormLoad As Boolean, pForceReload As Boolean) As Task(Of Boolean)
|
||||
Dim perfStart As DateTime = DateTime.MinValue
|
||||
Dim perfStep As DateTime = DateTime.MinValue
|
||||
Dim gridUpdateStarted As Boolean = False
|
||||
Dim viewUpdateStarted As Boolean = False
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
perfStart = DateTime.Now
|
||||
perfStep = perfStart
|
||||
LOGGER.Info($"[PERF LoadOverviewData] START - pFormLoad:[{pFormLoad}] pForceReload:[{pForceReload}]")
|
||||
End If
|
||||
|
||||
Try
|
||||
' ========== GRID UPDATES VORBEREITEN ==========
|
||||
If GridControlWorkflows.Visible Then
|
||||
@@ -1541,8 +1553,22 @@ Public Class frmMain
|
||||
Return False
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Load_Profiles_for_User wird aufgerufen...")
|
||||
End If
|
||||
|
||||
Load_Profiles_for_User()
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Load_Profiles_for_User LANGSAM: {elapsed}ms (Schwellwert: 4000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Load_Profiles_for_User: {elapsed}ms")
|
||||
End If
|
||||
perfStep = DateTime.Now
|
||||
End If
|
||||
|
||||
' ========== SQL VORBEREITEN ==========
|
||||
Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
|
||||
|
||||
@@ -1557,9 +1583,25 @@ Public Class frmMain
|
||||
' SQL-Platzhalter ersetzen
|
||||
oSQLOverview = PrepareSQLWithReplacements(oSQLOverview)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim rowCount = If(DT_CURR_WF_ITEMS IsNot Nothing, DT_CURR_WF_ITEMS.Rows.Count, 0)
|
||||
LOGGER.Info($"[PERF LoadOverviewData] SQL-Abfrage für Workflows startet (aktuelle Rows: {rowCount})...")
|
||||
End If
|
||||
|
||||
' ========== DATEN ABRUFEN ==========
|
||||
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQLOverview)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
Dim rowCount = If(DT_CURR_WF_ITEMS IsNot Nothing, DT_CURR_WF_ITEMS.Rows.Count, 0)
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Datenbank-Abfrage für Workflows LANGSAM: {elapsed}ms ({rowCount} Zeilen) (Schwellwert: 4000ms) - SQL prüfen!")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Datenbank-Abfrage für Workflows: {elapsed}ms ({rowCount} Zeilen)")
|
||||
End If
|
||||
perfStep = DateTime.Now
|
||||
End If
|
||||
|
||||
If IsNothing(DT_CURR_WF_ITEMS) Then
|
||||
NO_WORKFLOWITEMS = True
|
||||
GridControlWorkflows.Visible = False
|
||||
@@ -1580,7 +1622,21 @@ Public Class frmMain
|
||||
End If
|
||||
|
||||
' ========== ICON-SPALTE VORBEREITEN ==========
|
||||
PrepareIconColumn()
|
||||
If LOG_HOTSPOTS Then
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Icon-Verarbeitung startet ({DT_CURR_WF_ITEMS.Rows.Count} Zeilen)...")
|
||||
End If
|
||||
|
||||
Await Task.Run(Sub() PrepareIconColumn())
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Icon-Verarbeitung LANGSAM: {elapsed}ms ({DT_CURR_WF_ITEMS.Rows.Count} Zeilen) (Schwellwert: 4000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Icon-Verarbeitung: {elapsed}ms")
|
||||
End If
|
||||
perfStep = DateTime.Now
|
||||
End If
|
||||
|
||||
' ========== GRID MIT DATEN FÜLLEN ==========
|
||||
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
|
||||
@@ -1589,9 +1645,32 @@ Public Class frmMain
|
||||
|
||||
Create_View_Caption()
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Grid-DataSource-Zuweisung LANGSAM: {elapsed}ms (Schwellwert: 4000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Grid-DataSource-Zuweisung: {elapsed}ms")
|
||||
End If
|
||||
perfStep = DateTime.Now
|
||||
End If
|
||||
|
||||
' ========== LAYOUT ANWENDEN ==========
|
||||
If LOG_HOTSPOTS Then
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Layout-Anwendung startet...")
|
||||
End If
|
||||
|
||||
Await ApplyGridLayout(pForceReload)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Layout-Wiederherstellung LANGSAM: {elapsed}ms (Schwellwert: 4000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Layout-Wiederherstellung: {elapsed}ms")
|
||||
End If
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -1609,9 +1688,17 @@ Public Class frmMain
|
||||
|
||||
' LoadingPanel verstecken (NUR HIER!)
|
||||
GridViewWorkflows.HideLoadingPanel()
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim totalElapsed = (DateTime.Now - perfStart).TotalMilliseconds
|
||||
If totalElapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ GESAMT LANGSAM: {totalElapsed}ms (Schwellwert: 4000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] GESAMT: {totalElapsed}ms")
|
||||
End If
|
||||
End If
|
||||
End Try
|
||||
End Function
|
||||
|
||||
' ========================================
|
||||
' PROFILE DATEN LADEN - Spezialisiert auf einzelnes Profil
|
||||
' ========================================
|
||||
@@ -1657,7 +1744,7 @@ Public Class frmMain
|
||||
End If
|
||||
|
||||
' ========== BASIC VIEW ERSTELLEN ==========
|
||||
CreateBasicViewForProfile()
|
||||
Await CreateBasicViewForProfile()
|
||||
|
||||
Return True
|
||||
|
||||
@@ -1793,7 +1880,7 @@ Public Class frmMain
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub CreateBasicViewForProfile()
|
||||
Private Async Function CreateBasicViewForProfile() As Task
|
||||
GridControlWorkflows.DataSource = Nothing
|
||||
Try
|
||||
GridViewWorkflows.Columns.Clear()
|
||||
@@ -1802,7 +1889,7 @@ Public Class frmMain
|
||||
LOGGER.Warn("⚠️ Could not clear GridViewWorkflows.Columns")
|
||||
End Try
|
||||
|
||||
PrepareIconColumn()
|
||||
Await Task.Run(Sub() PrepareIconColumn())
|
||||
|
||||
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
|
||||
GridControlWorkflows.DataSource = bindsourcegrid
|
||||
@@ -1820,7 +1907,7 @@ Public Class frmMain
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
End If
|
||||
End Sub
|
||||
End Function
|
||||
|
||||
Private Sub ApplyPostLoadSettings()
|
||||
If SHOW_MASS_VALIDATOR = False Then
|
||||
@@ -2099,45 +2186,100 @@ Public Class frmMain
|
||||
CURRENT_CLICKED_PROFILE_ID = oHitProfilID
|
||||
End If
|
||||
End If
|
||||
|
||||
' ========== GRUPPE VERARBEITEN (OPTIMIERT) ==========
|
||||
' ========== GRUPPE VERARBEITEN (MIT KORREKTER GRUPPEN-ERMITTLUNG) ==========
|
||||
If startedFrom = "CMGROUP" Then
|
||||
LOGGER.Debug("Loading Child DocIds..")
|
||||
LOGGER.Debug("Loading Child DocIds from focused expanded group..")
|
||||
Dim oIds As New List(Of Integer)
|
||||
Dim oGroupRowHandle = hitInfo.RowHandle
|
||||
Dim oChildRowCount = GridViewWorkflows.GetChildRowCount(oGroupRowHandle)
|
||||
Dim oGroupRowHandle As Integer
|
||||
|
||||
' OPTIMIERUNG: Kapazität vorbelegen
|
||||
oIds.Capacity = oChildRowCount
|
||||
|
||||
' OPTIMIERUNG: Direkte Schleife statt verschachtelter Logik
|
||||
If oChildRowCount > 0 Then
|
||||
For index = 0 To oChildRowCount - 1
|
||||
Dim oChildRowHandle = GridViewWorkflows.GetChildRowHandle(oGroupRowHandle, index)
|
||||
Dim oRow = GridViewWorkflows.GetRow(oChildRowHandle)
|
||||
If oRow IsNot Nothing Then
|
||||
Dim oDocId = oRow.Item("DocId")
|
||||
If oDocId IsNot Nothing Then
|
||||
oIds.Add(oDocId)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
' KRITISCH: Den RICHTIGEN Gruppen-Handle ermitteln
|
||||
If GridViewWorkflows.IsGroupRow(hitInfo.RowHandle) Then
|
||||
' User hat direkt auf die Gruppen-Zeile geklickt
|
||||
oGroupRowHandle = hitInfo.RowHandle
|
||||
LOGGER.Debug($"User clicked directly on group row, handle: {oGroupRowHandle}")
|
||||
Else
|
||||
' Fallback nur bei Bedarf
|
||||
For index = 0 To GridViewWorkflows.RowCount - 1
|
||||
Dim oRow = GridViewWorkflows.GetRow(index)
|
||||
If oRow Is Nothing Then Continue For
|
||||
' User hat auf eine Daten-Zeile INNERHALB einer Gruppe geklickt
|
||||
' → Parent-Gruppe ermitteln
|
||||
oGroupRowHandle = GridViewWorkflows.GetParentRowHandle(hitInfo.RowHandle)
|
||||
LOGGER.Debug($"User clicked on data row {hitInfo.RowHandle}, parent group handle: {oGroupRowHandle}")
|
||||
|
||||
Dim oProfileId = oRow.row.item("PROFILE_ID")
|
||||
If oProfileId Is Nothing Then Continue For
|
||||
|
||||
If CInt(oProfileId) = CURRENT_CLICKED_PROFILE_ID Then
|
||||
oIds.Add(oRow.item("DocId"))
|
||||
End If
|
||||
Next
|
||||
If Not GridViewWorkflows.IsGroupRow(oGroupRowHandle) Then
|
||||
LOGGER.Warn($"⚠️ Parent handle {oGroupRowHandle} is not a group row!")
|
||||
FormHelper.ShowWarningMessage("Bitte klicken Sie direkt auf die Gruppenzeile!", omsgTitleAttention)
|
||||
Exit Function
|
||||
End If
|
||||
End If
|
||||
|
||||
LOGGER.Debug("[{0}] DocIds loaded", oIds.Count)
|
||||
' Spalten-Objekt VOR der Schleife holen
|
||||
Dim docIdColumn As GridColumn = GridViewWorkflows.Columns.ColumnByFieldName("DocID")
|
||||
If docIdColumn Is Nothing Then
|
||||
docIdColumn = GridViewWorkflows.Columns.ColumnByFieldName("DOCID")
|
||||
End If
|
||||
If docIdColumn Is Nothing Then
|
||||
LOGGER.Error("⚠️ Column 'DocID' not found in GridView!")
|
||||
|
||||
' DEBUG: Alle verfügbaren Spalten ausgeben
|
||||
LOGGER.Debug("=== Available Columns ===")
|
||||
For Each col As GridColumn In GridViewWorkflows.Columns
|
||||
LOGGER.Debug($" {col.FieldName} (Caption: {col.Caption})")
|
||||
Next
|
||||
LOGGER.Debug("=== END Available Columns ===")
|
||||
|
||||
FormHelper.ShowInfoMessage("Column 'DocID' not found!", omsgTitleWarning)
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
' JETZT GetChildRowCount auf der RICHTIGEN Gruppe
|
||||
Dim oChildRowCount = GridViewWorkflows.GetChildRowCount(oGroupRowHandle)
|
||||
LOGGER.Debug($"Group handle {oGroupRowHandle} has {oChildRowCount} total child rows")
|
||||
|
||||
' WICHTIG: Wenn 0 Kinder → Gruppe ist zugeklappt oder leer
|
||||
If oChildRowCount = 0 Then
|
||||
' Versuche die Gruppe aufzuklappen
|
||||
LOGGER.Debug($"Expanding group at handle {oGroupRowHandle}...")
|
||||
GridViewWorkflows.ExpandGroupRow(oGroupRowHandle)
|
||||
|
||||
' UI-Thread Zeit geben
|
||||
Application.DoEvents()
|
||||
|
||||
' Erneut prüfen
|
||||
oChildRowCount = GridViewWorkflows.GetChildRowCount(oGroupRowHandle)
|
||||
LOGGER.Debug($"After expanding: {oChildRowCount} child rows")
|
||||
|
||||
If oChildRowCount = 0 Then
|
||||
LOGGER.Warn($"⚠️ Group has 0 children even after expanding")
|
||||
Dim omsg = "Die Gruppe ist leer!"
|
||||
FormHelper.ShowWarningMessage(omsg, omsgTitleAttention)
|
||||
Exit Function
|
||||
End If
|
||||
End If
|
||||
|
||||
' JETZT sollten Kinder vorhanden sein
|
||||
For childIndex = 0 To oChildRowCount - 1
|
||||
Dim oChildRowHandle = GridViewWorkflows.GetChildRowHandle(oGroupRowHandle, childIndex)
|
||||
|
||||
' WICHTIG: Nur Daten-Rows verarbeiten, KEINE Gruppen
|
||||
If Not GridViewWorkflows.IsDataRow(oChildRowHandle) Then
|
||||
LOGGER.Debug($"Skipping non-data row at child index {childIndex} (Handle: {oChildRowHandle})")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' DocId auslesen - MIT COLUMN-OBJEKT
|
||||
Try
|
||||
Dim oDocId = GridViewWorkflows.GetRowCellValue(oChildRowHandle, docIdColumn)
|
||||
|
||||
If oDocId IsNot Nothing AndAlso IsNumeric(oDocId) Then
|
||||
oIds.Add(CInt(oDocId))
|
||||
LOGGER.Debug($"Added DocId: {oDocId} from child index {childIndex} (Handle: {oChildRowHandle})")
|
||||
Else
|
||||
LOGGER.Warn($"⚠️ DocId is Nothing/Invalid at child index {childIndex}, Handle: {oChildRowHandle}")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Error($"Error reading DocId at child index {childIndex}: {ex.Message}")
|
||||
End Try
|
||||
Next
|
||||
|
||||
LOGGER.Debug($"[{oIds.Count}] DocIds collected from focused group")
|
||||
|
||||
If oIds.Count = 0 Then
|
||||
Dim omsg = String.Format(S.System_konnte_die_Profilworkflows_nicht_auswerten_, vbNewLine)
|
||||
@@ -2145,14 +2287,13 @@ Public Class frmMain
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
' ========== DB-OPERATIONEN OPTIMIERT ==========
|
||||
' ========== DB-OPERATIONEN ==========
|
||||
LOGGER.Debug("Cleaning up queued DocIds..")
|
||||
Dim oDelete = $"DELETE FROM TBPM_VALIDATION_PROFILE_GROUP_USER WHERE UserID = {USER_ID}"
|
||||
|
||||
If DatabaseFallback.ExecuteNonQueryECM(oDelete) = True Then
|
||||
LOGGER.Debug("Adding [{0}] queued DocIds..", oIds.Count)
|
||||
LOGGER.Debug("Adding {0} queued DocIds..", oIds.Count)
|
||||
|
||||
' OPTIMIERUNG: Batch-Insert statt einzelner Inserts
|
||||
Dim oInsertBatch As New System.Text.StringBuilder()
|
||||
oInsertBatch.AppendLine("INSERT INTO TBPM_VALIDATION_PROFILE_GROUP_USER ([PROFIL_ID],[DocID],[UserID],[ADDED_WHO]) VALUES")
|
||||
|
||||
@@ -2161,6 +2302,9 @@ Public Class frmMain
|
||||
oInsertBatch.AppendLine($"({CURRENT_CLICKED_PROFILE_ID},{oIds(i)},{USER_ID},'{USER_USERNAME}')")
|
||||
Next
|
||||
|
||||
' WICHTIG: Debug-Logging des Batch-Inserts
|
||||
LOGGER.Debug(String.Format("Batch-Insert {0}", oInsertBatch.ToString))
|
||||
|
||||
DatabaseFallback.ExecuteNonQueryECM(oInsertBatch.ToString())
|
||||
End If
|
||||
End If
|
||||
@@ -2999,7 +3143,7 @@ Public Class frmMain
|
||||
})
|
||||
End Sub
|
||||
Sub LoadVWPM_CONTROL_INDEX()
|
||||
Dim oSQL = $"SELECT * FROM VWPM_CONTROL_INDEX WITH (NOLOCK) ORDER BY PROFIL_ID,Y_LOC, X_LOC"
|
||||
Dim oSQL = $"SELECT * FROM VWPM_CONTROL_INDEX ORDER BY PROFIL_ID,Y_LOC, X_LOC"
|
||||
'DTVWCONTROLS_INDEX = DataASorDB.GetDatatable("DD_ECM", oSQL, "VWPM_CONTROL_INDEX", "")
|
||||
DTVWCONTROLS_INDEX = DatabaseFallback.GetDatatable("VWPM_CONTROL_INDEX", New GetDatatableOptions(oSQL, DatabaseType.ECM))
|
||||
End Sub
|
||||
@@ -3014,7 +3158,7 @@ Public Class frmMain
|
||||
|
||||
If pMode = "bwBasicData" Then bwBasicData.ReportProgress(10)
|
||||
If pMode <> "Load" Then
|
||||
ClassParamRefresh.Refresh_Params(DT_CHECKUSER_MODULE)
|
||||
ClassParamRefresh.Refresh_Params(DT_CHECKUSER_MODULE, pMode)
|
||||
End If
|
||||
|
||||
If pMode = "bwBasicData" Then bwBasicData.ReportProgress(20)
|
||||
@@ -3023,7 +3167,7 @@ Public Class frmMain
|
||||
LOGGER.Debug($"VWPM_PROFILE_ACTIVE-SELECT used from DD-SQL-Config..")
|
||||
Else
|
||||
oSQL = $"SELECT [dbo].[FNDD_LANGUAGE_PHRASE] ('PROFILE_TITLE' + CONVERT(VARCHAR(4),T.GUID),'{USER_LANGUAGE}','PM') as GROUP_TEXT_LANG, T.*
|
||||
FROM VWPM_PROFILE_ACTIVE T WITH (NOLOCK) WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] ({USER_ID}))"
|
||||
FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] ({USER_ID}))"
|
||||
|
||||
End If
|
||||
|
||||
@@ -3350,7 +3494,7 @@ FROM VWPM_PROFILE_ACTIVE T WITH (NOLOCK) WHERE T.GUID IN (SELECT PROFILE_ID FROM
|
||||
End Sub
|
||||
|
||||
Private Sub OutOfRangePMFixierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OutOfRangePMFixierenToolStripMenuItem.Click
|
||||
Dim myPoint As Point = New Point(50, 50)
|
||||
Dim myPoint As System.Drawing.Point = New System.Drawing.Point(50, 50)
|
||||
Me.Location = Screen.AllScreens(UBound(Screen.AllScreens)).Bounds.Location + myPoint
|
||||
BringMonitor2Front()
|
||||
End Sub
|
||||
|
||||
Reference in New Issue
Block a user