MS_18042016

This commit is contained in:
SchreiberM
2016-04-19 11:08:32 +02:00
parent 8ed70abb9a
commit 79942542e4
30 changed files with 5644 additions and 4517 deletions

View File

@@ -9,6 +9,7 @@ Imports DevExpress.XtraScheduler
Imports System.Text
Imports System.IO
Imports DevExpress.XtraGrid
Imports WINDREAMLib
Public Class frmConstructor_Main
@@ -69,6 +70,8 @@ Public Class frmConstructor_Main
Private RIGHT_VIEW_DOC As Boolean = True
Private RIGHT_DELETE_DOC As Boolean = False
Private RIGHT_ONLY_READ As Boolean = False
Private windream_Docshow As Boolean = False
Private WD_Suche As String
Private DocView
@@ -81,6 +84,7 @@ Public Class frmConstructor_Main
Private LinkParentID As Integer
Private CONTROL_DOCTYPE_MATCH As Integer = 0
Private FOLLOW_UPisActive As Boolean = False
Private DT_FU_Record As DataTable
@@ -94,6 +98,7 @@ Public Class frmConstructor_Main
Private IS_SINGLE_RECORD As Boolean = False
Private RECORD_ID As Integer
Private PARENT_ID As Integer
Private SQL_RIGHT_READ_AND_VIEW_ONLY As String = ""
Private FORM_TYPE As Integer
Private ENTITY_ID As Integer
@@ -116,6 +121,10 @@ Public Class frmConstructor_Main
End Enum
#End Region
Private Sub frmConstructor_Main_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop
End Sub
Private Sub frmForm_Constructor_Main_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
_FormClosing = True
' Check_Record_Changed()
@@ -141,7 +150,7 @@ Public Class frmConstructor_Main
MsgBox("Error while Loading Form part 1" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
' Bestimme Dinge ausblenden wenn kein admin
If USER_IS_ADMIN = True Then
@@ -676,6 +685,57 @@ Public Class frmConstructor_Main
VerknüpfungenAnzeigenToolStripMenuItem.Enabled = True
Show_Selected_Record_Data(Grid_RecordID, False)
RIGHT_ONLY_READ = False
RecordKopierenToolStripMenuItem.Enabled = True
tslblLocked.Visible = False
TabFollowUp.PageEnabled = True
Dim tempsql
If SQL_RIGHT_READ_AND_VIEW_ONLY <> "" Then
Try
tempsql = SQL_RIGHT_READ_AND_VIEW_ONLY
tempsql = tempsql.Replace("@RECORDID", RECORD_ID)
tempsql = tempsql.Replace("@RECORD_ID", RECORD_ID)
tempsql = tempsql.Replace("@USER_ID", USER_GUID)
tempsql = tempsql.Replace("@USER_GUID", USER_GUID)
''Regulären Ausdruck zum Auslesen der windream-Indexe definieren
'Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
'' einen Regulären Ausdruck laden
'Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
'' die Vorkommen im SQL-String auslesen
'Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(tempsql)
'' alle Vorkommen der windream-Indexe im SQL-String durchlaufen
''#####
'' alle Vorkommen der windream-Indexe im SQL-String durchlaufen
'For Each element As System.Text.RegularExpressions.Match In elemente
' Dim elementohneSZ = element.Value.Replace("[%", "")
' elementohneSZ = elementohneSZ.Replace("]", "")
' ' den Platzhalter für den auszulesenden View durch den Viewnamen ersetzen
' tempsql = tempsql.Replace(element.Value, controlvalue.ToString)
'Next
Try
RIGHT_ONLY_READ = CBool(ClassDatabase.Execute_Scalar(tempsql))
Catch ex As Exception
RIGHT_ONLY_READ = False
End Try
If RIGHT_ONLY_READ = True Then
tsButtonAdd.Enabled = False
tsButtonEdit.Enabled = False
tsButtonSave.Enabled = False
tsButtonDelete.Enabled = False
tslblLocked.Visible = True
RecordKopierenToolStripMenuItem.Enabled = False
TabFollowUp.PageEnabled = False
End If
Catch ex As Exception
MsgBox("unexpected Error in Check Read-Limitations:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add("Unexpected Error in Check Read-Limitations: " & ex.Message)
ClassLogger.Add("TempSQL so far: " & tempsql)
End Try
End If
If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Text.StartsWith("Posi") Then
Clear_GridPos_View()
Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID")
@@ -693,7 +753,9 @@ Public Class frmConstructor_Main
End If
If RECORD_ID > 0 Then
tsButtonEdit.Enabled = True
If RIGHT_ONLY_READ = False Then
tsButtonEdit.Enabled = True
End If
Get_RecordCounts_Nodes()
End If
End If
@@ -1257,18 +1319,36 @@ Public Class frmConstructor_Main
If result = MsgBoxResult.Yes Then
Dim del = "EXEC [dbo].[PRPMO_DELETE_RECORD] " & SELECTED_RECORD_ID
If ClassDatabase.Execute_non_Query(del, True) = True Then
RECORD_CHANGED = False
EDIT_STATE = EditState.None
CURRENT_RECORD_ENABLED = False
' Update_Record_Label(SELECTED_RECORD_ID)
msg = "Der Datensatz '" & SELECTED_RECORD_ID & "' wurde erfolgreich gelöscht - " & Now
If USER_LANGUAGE <> "de-DE" Then
msg = "The record and all dependencies for '" & SELECTED_RECORD_ID & "' were deleted - " & Now
End If
Update_Status_Label(True, msg, EditState.Update)
Update_Record_Label(SELECTED_RECORD_ID)
msg = "Wollen Sie die zugehörigen windream-Dateien ebenfalls löschen?"
If USER_LANGUAGE <> "de-DE" Then
msg = "Do You want to delete the related windream-documents?"
End If
Dim result1 As MsgBoxResult
result1 = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = MsgBoxResult.Yes Then
WD_DELETE_DOCS()
End If
SELECTED_RECORD_ID = 0
RECORD_ID = 0
CURRENT_RECORD_ID = 0
RECORD_CHANGED = False
Load_Tree_View_Data()
' Nach dem löschen muss die aktuelle Ansicht neugeladen werden
Load_Entity_Data(ACT_EBENE)
DisableEditMode()
RECORD_CHANGED = False
EDIT_STATE = EditState.None
End If
End If
@@ -1414,7 +1494,7 @@ Public Class frmConstructor_Main
RIGHT_DELETE_DOC = True
End If
Next
End If
tsButtonSave.Visible = True
tsButtonAdd.Visible = True
@@ -1454,6 +1534,8 @@ Public Class frmConstructor_Main
LOAD_DIRECT = ClassDatabase.Execute_Scalar("SELECT LOAD_DIRECT FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
CURRENT_CONSTRUCTOR_DETAIL_ID = ClassDatabase.Execute_Scalar("SELECT GUID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
POS_ENTITY = ClassDatabase.Execute_Scalar("SELECT POS_ENTITY FROM TBPMO_FORM WHERE GUID = " & ENTITY_ID)
CONTROL_DOCTYPE_MATCH = ClassDatabase.Execute_Scalar("SELECT CONTROL_DOCTYPE_MATCH FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
SQL_RIGHT_READ_AND_VIEW_ONLY = ClassDatabase.Execute_Scalar("SELECT SQL_RIGHT_READ_AND_VIEW_ONLY FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
If VIEW_ID_RUNTIME <> -1 Then
GRID_TYPE_ID = VIEW_ID_RUNTIME
Else
@@ -2626,7 +2708,7 @@ Public Class frmConstructor_Main
Dim sw As New Stopwatch
sw.Start()
Dim elapsed As Double
If ClassWindream.Init() = True Then
windream_inited = True
End If
@@ -2956,6 +3038,173 @@ Public Class frmConstructor_Main
If LogErrorsOnly = False Then ClassLogger.Add(" >> Run WD Search took " & Format(elapsed, "0.000000000") & " seconds", False)
Cursor = Cursors.Default
End Sub
Private Sub WD_DELETE_DOCS()
Dim sw As New Stopwatch
sw.Start()
Dim elapsed As Double
Dim Basesearch As String
Try
Dim windream_temp_search
If Not windream_Docshow = True Or Sett_LoadWD_Docs = False Then
Exit Sub
End If
Cursor = Cursors.WaitCursor
Dim DTWD As DataTable
Dim sql = "SELECT WINDREAM_SEARCH,SEARCH_PATTERN1,SEARCH_PATTERN2,SEARCH_PATTERN3,SEARCH_PATTERN4,SEARCH_PATTERN5 FROM TBPMO_FORM_VIEW WHERE WINDREAM_SEARCH <> '' AND FORM_ID = " & ENTITY_ID
DTWD = ClassDatabase.Return_Datatable(sql)
If DTWD.Rows.Count = 1 Then
If IsDBNull(DTWD.Rows(0).Item(0)) Then
Cursor = Cursors.Default
Exit Sub
End If
Else
Cursor = Cursors.Default
Exit Sub
End If
'Die SearchPatterns durchlaufen und zwischenspeichern
If IsDBNull(DTWD.Rows(0).Item(0)) Then
Cursor = Cursors.Default
Exit Sub
End If
Basesearch = DTWD.Rows(0).Item(0)
SP1 = DTWD.Rows(0).Item(1)
If IsDBNull(DTWD.Rows(0).Item(2)) Then
SP2 = ""
Else
SP2 = DTWD.Rows(0).Item(2)
End If
If IsDBNull(DTWD.Rows(0).Item(3)) Then
SP3 = ""
Else
SP3 = DTWD.Rows(0).Item(3)
End If
If IsDBNull(DTWD.Rows(0).Item(4)) Then
SP4 = ""
Else
SP4 = DTWD.Rows(0).Item(4)
End If
If IsDBNull(DTWD.Rows(0).Item(5)) Then
SP5 = ""
Else
SP5 = DTWD.Rows(0).Item(5)
End If
'Eine tempfile generieren
Dim tempFilename1 = My.Computer.FileSystem.GetTempFileName()
'Nur den Filenamen ohne Erweiterung
Dim tempName = Path.GetFileNameWithoutExtension(tempFilename1)
'tempfile lsöchen
If My.Computer.FileSystem.FileExists(tempFilename1) Then
My.Computer.FileSystem.DeleteFile(tempFilename1)
End If
Dim temppath = Path.GetTempPath
Dim EncodingFormat As Encoding
Dim WDUnicode = ClassDatabase.Execute_Scalar("SELECT WD_UNICODE FROM TBPMO_KONFIGURATION WHERE GUID = 1")
If WDUnicode = True Then
EncodingFormat = Encoding.GetEncoding(1252) '1252
If LogErrorsOnly = False Then ClassLogger.Add(" >> Unicode is used (Encoding.GetEncoding(1252))", False)
Else
If LogErrorsOnly = False Then ClassLogger.Add(" >> UTF8 (Encoding.GetEncoding(65001))", False)
EncodingFormat = Encoding.GetEncoding(65001)
End If
Dim fileContents As String
If LogErrorsOnly = False Then ClassLogger.Add(" >> ReadAlltext: " & windream_temp_search, False)
fileContents = My.Computer.FileSystem.ReadAllText(BaseSearch, EncodingFormat) ', System.Text.Encoding.Unicode
If LogErrorsOnly = False Then ClassLogger.Add(" >> fileContents geladen", False)
fileContents = fileContents.Replace("Í", "Ö")
Dim _sp1 = SP1
Dim _sp2 = SP2
Dim _sp3 = SP3
Dim _sp4 = SP4
Dim _sp5 = SP5
If _sp1.ToString <> String.Empty Then
_sp1 = Return_SearchPattern(_sp1.ToString)
fileContents = fileContents.Replace("%pattern1%", _sp1)
fileContents = fileContents.Replace("471101", _sp1)
End If
If _sp2.ToString <> String.Empty Then
_sp2 = Return_SearchPattern(_sp2.ToString)
If _sp2 = 0 Then
_sp2 = ""
End If
fileContents = fileContents.Replace("%pattern2%", _sp2)
fileContents = fileContents.Replace("471102", _sp2)
End If
If _sp3.ToString <> String.Empty Then
_sp3 = Return_SearchPattern(_sp3.ToString)
If _sp3 = 0 Then
_sp3 = ""
End If
fileContents = fileContents.Replace("%pattern3%", _sp3)
fileContents = fileContents.Replace("471103", _sp3)
End If
If _sp4.ToString <> String.Empty Then
_sp4 = Return_SearchPattern(_sp4.ToString)
If _sp4 = 0 Then
_sp4 = ""
End If
fileContents = fileContents.Replace("%pattern4%", _sp4)
fileContents = fileContents.Replace("471104", _sp4)
End If
If _sp5.ToString <> String.Empty Then
_sp5 = Return_SearchPattern(_sp5.ToString)
If _sp5 = 0 Then
_sp5 = ""
End If
fileContents = fileContents.Replace("%pattern5%", _sp5)
fileContents = fileContents.Replace("471105", _sp5)
End If
'Die windream File zusammensetzen
windream_temp_search = temppath & tempName & ".wdf"
TEMP_FILES.Add(windream_temp_search)
'Die File schreiben
My.Computer.FileSystem.WriteAllText(windream_temp_search, fileContents, False, EncodingFormat)
My.Computer.FileSystem.WriteAllText(temppath & "SEARCH_COPY.wdf", fileContents, False, EncodingFormat)
' XML-Datei öffnen und laden
Dim Stream As New IO.StreamReader(CStr(windream_temp_search), EncodingFormat)
Dim Reader As New System.Xml.XmlTextReader(Stream)
' XML-Datei initialisieren
Dim xml As New System.Xml.XmlDocument()
' XML-Datei öffnen und laden
xml.Load(Reader)
Reader.Close()
xml.Save(windream_temp_search)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Xml Generiert: " & windream_temp_search, False)
Dim windreamSucheErgebnisse As WINDREAMLib.WMObjects
Try
windreamSucheErgebnisse = ClassWindream.GetSearchDocuments(windream_temp_search)
Catch ex As Exception
MsgBox("Error in windreamSucheErgebnisse:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
elapsed = sw.Elapsed.TotalSeconds
If LogErrorsOnly = False Then ClassLogger.Add(" >> GetSearchDocuments took " & Format(elapsed, "0.000000000") & " seconds", False)
If windreamSucheErgebnisse.Count > 0 Then
For Each dok As WMObject In windreamSucheErgebnisse
Dim filename = "W:" & dok.aPath
Try
File.Delete(filename)
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Delete windream-file '" & filename & "- Error: " & ex.Message)
End Try
Next
End If
Cursor = Cursors.Default
Catch ex As Exception
MsgBox("Error in WD-Delete Docs:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add("Unexpected Error in Run WD Delete Docs: " & ex.Message)
End Try
elapsed = sw.Elapsed.TotalSeconds
sw.Stop()
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Run WD Delete Docs took " & Format(elapsed, "0.000000000") & " seconds", False)
Cursor = Cursors.Default
End Sub
Private Function Return_SearchPattern(ByVal content As String)
Select Case content.ToUpper
Case "@Record-ID".ToUpper
@@ -3158,20 +3407,32 @@ Public Class frmConstructor_Main
End If
End Sub
Sub Drag_Drop(e As DragEventArgs)
If act_FormViewID <> 0 Then
If act_FormViewID <> 0 And RIGHT_ONLY_READ = False Then
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
If ClassDatabase.Execute_Scalar(sql, True) = 0 Then
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
Exit Sub
End If
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
If RECORD_CHANGED = True Then
If Save_Record() = False Then
Exit Sub
End If
If RECORD_CHANGED = True Then
If Save_Record() = False Then
Exit Sub
End If
End If
CURRENT_CONTROL_DOCTYPE_MATCH = 0
If CONTROL_DOCTYPE_MATCH <> 0 Then
Try
CURRENT_CONTROL_DOCTYPE_MATCH = ""
CURRENT_CONTROL_DOCTYPE_MATCH = ClassControlValues.GetControlValuesREC_CONTROL(RECORD_ID, CONTROL_DOCTYPE_MATCH)
Catch ex As Exception
CURRENT_CONTROL_DOCTYPE_MATCH = 0
CURRENT_CONTROL_DOCTYPE_MATCH = ""
End Try
End If
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
Dim Wert As String = CType(e.Data.GetData(DataFormats.StringFormat), Object)
Console.WriteLine(Wert)
Console.WriteLine("DragDrop-Wert: " & Wert)
If Wert.Contains("SCAN") Then
Dim split() = Wert.Split(";")
If IsNumeric(split(1)) Then
@@ -3183,6 +3444,16 @@ Public Class frmConstructor_Main
RUN_WD_SEARCH(WD_Suche, "RECORD")
End If
ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then
CURRENT_RECORD_ID = RECORD_ID
If ClassDragDrop.Drop_File(e) = True Then
Check_Dropped_Files()
End If
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
CURRENT_RECORD_ID = RECORD_ID
If ClassDragDrop.Drop_File(e) = True Then
Check_Dropped_Files()
End If
End If
Else
CURRENT_RECORD_ID = RECORD_ID
@@ -3191,6 +3462,11 @@ Public Class frmConstructor_Main
End If
End If
Else
If RIGHT_ONLY_READ = True Then
ClassLogger.Add(">> RIGHT_ONLY_READ is set! No DragDrop allowed", False)
End If
End If
End Sub
Sub Check_Dropped_Files()