MS 2.9.4 SQL Timeout auf 120sec

This commit is contained in:
SchreiberM 2023-09-26 15:54:26 +02:00
parent 7bcf839cb3
commit 43e7dcf068
10 changed files with 264 additions and 286 deletions

View File

@ -11,19 +11,7 @@ Public Class ClassMO_REOld
End Sub
Public Shared Function Return_Datatable(Select_anweisung As String)
Try
Dim sw As New ClassStopwatch("Return_Datatable")
Dim SQLconnection As New SqlClient.SqlConnection(My.Settings.DDECMConString)
Dim SQLcommand As New SqlCommand(Select_anweisung, SQLconnection)
SQLconnection.Open()
Dim adapter1 As SqlDataAdapter = New SqlDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnection.Close()
Dim msg = sw.Done
If msg <> "" Then _Logger.Debug($"SWResult: {msg}")
Return dt
Return DB_ECM.GetDatatable(Select_anweisung)
Catch ex As Exception
_Logger.Error(ex)
@ -32,16 +20,8 @@ Public Class ClassMO_REOld
End Function
Public Shared Function Execute_Command(ExecuteCMD As String)
Try
Dim sw As New ClassStopwatch("Execute_MSSQL_Command")
Dim SQLconnection As New SqlClient.SqlConnection(My.Settings.DDECMConString)
Dim SQLcommand As New SqlCommand(ExecuteCMD, SQLconnection)
SQLconnection.Open()
SQLcommand.ExecuteNonQuery()
SQLcommand.Dispose()
SQLconnection.Close()
Dim msg = sw.Done
If msg <> "" Then _Logger.Debug($"SWResult: {msg}")
Return True
Return DB_ECM.ExecuteNonQuery(ExecuteCMD)
Catch ex As Exception
_Logger.Error(ex)
@ -49,156 +29,156 @@ Public Class ClassMO_REOld
Return False
End Try
End Function
Public Shared Function RUN_MO_RE(ByVal dokument As WMObject, ByVal vDatei As String, ByVal _MRDOKART As Object, ByVal _MRKUNDE As Object) As String
Try
Dim DT As New DataTable
Dim _MRDeskrIndex
Dim _path, _praefix, _kunde, _ziel As String
'Public Shared Function RUN_MO_RE(ByVal dokument As WMObject, ByVal vDatei As String, ByVal _MRDOKART As Object, ByVal _MRKUNDE As Object) As String
' Try
' Dim DT As New DataTable
' Dim _MRDeskrIndex
' Dim _path, _praefix, _kunde, _ziel As String
_Logger.Debug(">> Ausgelesener Kundenidentifikator: " & _MRKUNDE)
_Logger.Debug(">> Ausgelesene Dokumentart: " & _MRDOKART)
Dim oSelect As String
If _MRKUNDE Is Nothing Or _MRKUNDE = "" Then
'Auslesen der MORE-Konfiguration für Kunde und Standard
oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = 'STANDARD')"
DT = Return_Datatable(oSelect)
_Logger.Debug(oSelect)
Else
If _MRKUNDE = "Standard-VZ" Then _MRKUNDE = "Standard"
oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = UPPER('" & _MRKUNDE.ToString & "'))"
'Auslesen der MORE-Konfiguration für Kunde und Dokart
DT = Return_Datatable(oSelect)
_Logger.Debug("Select2: " & oSelect)
End If
If DT.Rows.Count = 0 Then
_Logger.Debug("Für Kunden keine Daten - also Standard lesen")
oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = 'STANDARD')"
'Für diesen Kunden wurde keine Konfiguration gefunden also den Standard laden
DT = Return_Datatable(oSelect)
_Logger.Debug("Select3: " & oSelect)
End If
' _Logger.Debug(">> Ausgelesener Kundenidentifikator: " & _MRKUNDE)
' _Logger.Debug(">> Ausgelesene Dokumentart: " & _MRDOKART)
' Dim oSelect As String
' If _MRKUNDE Is Nothing Or _MRKUNDE = "" Then
' 'Auslesen der MORE-Konfiguration für Kunde und Standard
' oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = 'STANDARD')"
' DT = Return_Datatable(oSelect)
' _Logger.Debug(oSelect)
' Else
' If _MRKUNDE = "Standard-VZ" Then _MRKUNDE = "Standard"
' oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = UPPER('" & _MRKUNDE.ToString & "'))"
' 'Auslesen der MORE-Konfiguration für Kunde und Dokart
' DT = Return_Datatable(oSelect)
' _Logger.Debug("Select2: " & oSelect)
' End If
' If DT.Rows.Count = 0 Then
' _Logger.Debug("Für Kunden keine Daten - also Standard lesen")
' oSelect = "SELECT * FROM VWMO_RE_DOKUMENTARTZUORDNUNG WHERE (DOKUMENTART = '" & _MRDOKART.ToString & "') AND (UPPER(KUNDEN_NAME) = 'STANDARD')"
' 'Für diesen Kunden wurde keine Konfiguration gefunden also den Standard laden
' DT = Return_Datatable(oSelect)
' _Logger.Debug("Select3: " & oSelect)
' End If
If DT.Rows.Count = 1 Then
'Es liegt sowohl Kunde als auch Dokumentart vor
Try
_Logger.Debug("Versuch für den Index " & DT.Rows(0).Item("INDEXNAME").ToString & " den Indexwert auszulesen")
Dim sw As New ClassStopwatch($"GetVariableValue _MRDeskrIndex({DT.Rows(0).Item("INDEXNAME").ToString})")
_MRDeskrIndex = dokument.GetVariableValue(DT.Rows(0).Item("INDEXNAME").ToString)
Dim msg = sw.Done
If msg <> String.Empty Then _Logger.Info(msg)
Catch ex As Exception
_Logger.Warn("Achtung: ein eindeutiger/deskriptiver Indexwert existiert noch nicht! Dokument kann nicht verschoben und umbenannt werden!")
Return False
End Try
_Logger.Debug("Ausgelesener Deskriptiver Index: " & _MRDeskrIndex)
' If DT.Rows.Count = 1 Then
' 'Es liegt sowohl Kunde als auch Dokumentart vor
' Try
' _Logger.Debug("Versuch für den Index " & DT.Rows(0).Item("INDEXNAME").ToString & " den Indexwert auszulesen")
' Dim sw As New ClassStopwatch($"GetVariableValue _MRDeskrIndex({DT.Rows(0).Item("INDEXNAME").ToString})")
' _MRDeskrIndex = dokument.GetVariableValue(DT.Rows(0).Item("INDEXNAME").ToString)
' Dim msg = sw.Done
' If msg <> String.Empty Then _Logger.Info(msg)
' Catch ex As Exception
' _Logger.Warn("Achtung: ein eindeutiger/deskriptiver Indexwert existiert noch nicht! Dokument kann nicht verschoben und umbenannt werden!")
' Return False
' End Try
' _Logger.Debug("Ausgelesener Deskriptiver Index: " & _MRDeskrIndex)
'Datei-Paramter auslesen
Dim extension As String = Path.GetExtension(vDatei)
Dim myFolderPath As String
myFolderPath = Path.GetDirectoryName(vDatei)
' 'Datei-Paramter auslesen
' Dim extension As String = Path.GetExtension(vDatei)
' Dim myFolderPath As String
' myFolderPath = Path.GetDirectoryName(vDatei)
Dim _WDLaufwerk, _newfilename As String
_WDLaufwerk = My.Settings.MRWD_Laufwerk
_path = DT.Rows(0).Item("DOKUMENTARTORDNER")
' Dim _WDLaufwerk, _newfilename As String
' _WDLaufwerk = My.Settings.MRWD_Laufwerk
' _path = DT.Rows(0).Item("DOKUMENTARTORDNER")
'####### _path anpassen evtl Unterordner
'Unterordner Index 1
Dim _UOindex As String = DT.Rows(0).Item("UO_IDX1")
Dim _UOindex_Value As String = ""
If _UOindex <> "" Then
Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
_UOindex_Value = dokument.GetVariableValue(_UOindex)
Dim msg = sw.Done
If msg <> String.Empty Then _Logger.Info(msg)
If Not _UOindex_Value Is Nothing Then
_path &= "\" & _UOindex_Value
If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
_Logger.Debug("Unterordner 1 soll erzeugt werden - Path '" & _path & "'")
End If
End If
'Unterordner Index 2
_UOindex = DT.Rows(0).Item("UO_IDX2")
If _UOindex <> "" Then
Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
_UOindex_Value = dokument.GetVariableValue(_UOindex)
Dim msg = sw.Done
If msg <> String.Empty Then _Logger.Info(msg)
If Not _UOindex_Value Is Nothing Then
_path &= "\" & _UOindex_Value
If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
_Logger.Debug("Unterordner 2 soll erzeugt werden - Path '" & _path & "'")
End If
End If
' '####### _path anpassen evtl Unterordner
' 'Unterordner Index 1
' Dim _UOindex As String = DT.Rows(0).Item("UO_IDX1")
' Dim _UOindex_Value As String = ""
' If _UOindex <> "" Then
' Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
' _UOindex_Value = dokument.GetVariableValue(_UOindex)
' Dim msg = sw.Done
' If msg <> String.Empty Then _Logger.Info(msg)
' If Not _UOindex_Value Is Nothing Then
' _path &= "\" & _UOindex_Value
' If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
' _Logger.Debug("Unterordner 1 soll erzeugt werden - Path '" & _path & "'")
' End If
' End If
' 'Unterordner Index 2
' _UOindex = DT.Rows(0).Item("UO_IDX2")
' If _UOindex <> "" Then
' Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
' _UOindex_Value = dokument.GetVariableValue(_UOindex)
' Dim msg = sw.Done
' If msg <> String.Empty Then _Logger.Info(msg)
' If Not _UOindex_Value Is Nothing Then
' _path &= "\" & _UOindex_Value
' If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
' _Logger.Debug("Unterordner 2 soll erzeugt werden - Path '" & _path & "'")
' End If
' End If
_UOindex = DT.Rows(0).Item("UO_IDX3")
If _UOindex <> "" Then
Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
_UOindex_Value = dokument.GetVariableValue(_UOindex)
Dim msg = sw.Done
If msg <> String.Empty Then _Logger.Info(msg)
If Not _UOindex_Value Is Nothing Then
_path &= "\" & _UOindex_Value
If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
_Logger.Debug("Unterordner 3 soll erzeugt werden - Path '" & _path & "'")
End If
End If
' _UOindex = DT.Rows(0).Item("UO_IDX3")
' If _UOindex <> "" Then
' Dim sw As New ClassStopwatch($"GetVariableValue _UOindex({_UOindex})")
' _UOindex_Value = dokument.GetVariableValue(_UOindex)
' Dim msg = sw.Done
' If msg <> String.Empty Then _Logger.Info(msg)
' If Not _UOindex_Value Is Nothing Then
' _path &= "\" & _UOindex_Value
' If _path.Contains(" 00:00:00") Then _path = _path.Replace(" 00:00:00", "")
' _Logger.Debug("Unterordner 3 soll erzeugt werden - Path '" & _path & "'")
' End If
' End If
'#####
' '#####
_kunde = DT.Rows(0).Item("KUNDEN_NAME")
_praefix = DT.Rows(0).Item("PRAEFIX")
'Dem Neuen Dateinamen schon mal das Präfix mitgeben
_newfilename = _praefix
_newfilename = _newfilename & _MRDeskrIndex & extension
' _kunde = DT.Rows(0).Item("KUNDEN_NAME")
' _praefix = DT.Rows(0).Item("PRAEFIX")
' 'Dem Neuen Dateinamen schon mal das Präfix mitgeben
' _newfilename = _praefix
' _newfilename = _newfilename & _MRDeskrIndex & extension
_Logger.Debug("Ausgelesener Pfad: " & _path)
_Logger.Debug("Neuer Dateiname: " & _newfilename)
' _Logger.Debug("Ausgelesener Pfad: " & _path)
' _Logger.Debug("Neuer Dateiname: " & _newfilename)
'### VERSIONIERUNG ###
Dim version As Integer = 2
Dim Stammname As String = _newfilename.Substring(0, _newfilename.LastIndexOf("."))
Dim neuername As String = _newfilename.Substring(0, _newfilename.LastIndexOf("."))
'Überprüfen ob File existiert
Do While file_exists(_path & "\" & neuername & extension, False) = True
neuername = Stammname & "~" & version
_newfilename = neuername & extension
version = version + 1
Loop
_ziel = _path & "\" & _newfilename
' '### VERSIONIERUNG ###
' Dim version As Integer = 2
' Dim Stammname As String = _newfilename.Substring(0, _newfilename.LastIndexOf("."))
' Dim neuername As String = _newfilename.Substring(0, _newfilename.LastIndexOf("."))
' 'Überprüfen ob File existiert
' Do While file_exists(_path & "\" & neuername & extension, False) = True
' neuername = Stammname & "~" & version
' _newfilename = neuername & extension
' version = version + 1
' Loop
' _ziel = _path & "\" & _newfilename
If My.Settings.vLogErrorsonly = False Then
If neuername.Contains("~") Then _Logger.Info("Neuer Dateiname: " & _newfilename)
' If My.Settings.vLogErrorsonly = False Then
' If neuername.Contains("~") Then _Logger.Info("Neuer Dateiname: " & _newfilename)
_Logger.Debug("Neuer Dateiname: " & _newfilename)
_Logger.Debug("Quelle: " & vDatei)
_Logger.Debug("Ziel: " & _ziel)
End If
' _Logger.Debug("Neuer Dateiname: " & _newfilename)
' _Logger.Debug("Quelle: " & vDatei)
' _Logger.Debug("Ziel: " & _ziel)
' End If
If myFolderPath <> _path Then
_windreamNI.NEW_MOVE_FILE(_ziel, vDatei, "MO_RE")
'ClassLoggerNI.Add(" ######### Erfolgsmeldung - Datei wurde erfolgreich umbenannt und verschoben ###########")
Else
_Logger.Info("Verschieben nicht notwendig: Ordnerpfad identisch!")
Dim sw As New ClassStopwatch("RenameFile")
My.Computer.FileSystem.RenameFile(vDatei, _newfilename)
_Logger.Debug("Erfolgsmeldung - Datei wurde erfolgreich umbenannt")
Dim msg = sw.Done
If msg <> "" Then _Logger.Debug($"SWResult: {msg}")
End If
Execute_Command("INSERT INTO TBMO_RE_HISTORY (FILE_ORIGINAL, FILE_NEW, KUNDE, INDEX1, INDEX2, ERSTELLTWER) VALUES " &
"('" & vDatei & "','" & _ziel & "','" & _kunde & "','" & _MRDeskrIndex & "','" & _MRDOKART & "','ToolCollection MORE')")
Return _ziel
Else
_Logger.Info("MO_RE Result was not 1 row: check select..." & oSelect)
Return False
End If
Catch ex As Exception
_Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
' If myFolderPath <> _path Then
' _windreamNI.NEW_MOVE_FILE(_ziel, vDatei, "MO_RE")
' 'ClassLoggerNI.Add(" ######### Erfolgsmeldung - Datei wurde erfolgreich umbenannt und verschoben ###########")
' Else
' _Logger.Info("Verschieben nicht notwendig: Ordnerpfad identisch!")
' Dim sw As New ClassStopwatch("RenameFile")
' My.Computer.FileSystem.RenameFile(vDatei, _newfilename)
' _Logger.Debug("Erfolgsmeldung - Datei wurde erfolgreich umbenannt")
' Dim msg = sw.Done
' If msg <> "" Then _Logger.Debug($"SWResult: {msg}")
' End If
' Execute_Command("INSERT INTO TBMO_RE_HISTORY (FILE_ORIGINAL, FILE_NEW, KUNDE, INDEX1, INDEX2, ERSTELLTWER) VALUES " &
' "('" & vDatei & "','" & _ziel & "','" & _kunde & "','" & _MRDeskrIndex & "','" & _MRDOKART & "','ToolCollection MORE')")
' Return _ziel
' Else
' _Logger.Info("MO_RE Result was not 1 row: check select..." & oSelect)
' Return False
' End If
' Catch ex As Exception
' _Logger.Error(ex)
' MsgBox(ex.Message, MsgBoxStyle.Critical)
' Return False
' End Try
'End Function
Private Shared Function file_exists(ByVal _file As String, ByVal suche As Boolean)
Try
_file = _file.Replace("W:", "\\windream\objects")

View File

@ -536,6 +536,7 @@ Public Class ClassNIDatenbankzugriff
Try
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = selectAnweisung
SQLcommand.CommandTimeout = 120
Catch ex As Exception
_Logger.Error(ex)
@ -692,7 +693,7 @@ Public Class ClassNIDatenbankzugriff
' die nötigen Variablen definieren
Dim Connection As SqlConnection = Nothing
' Dim ConnectionString As SqlConnectionStringBuilder = Nothing
Dim Command As SqlCommand = Nothing
Dim oSQLCommand As SqlCommand = Nothing
Dim DataAdapter As SqlDataAdapter = Nothing
'' ConnectionString aufbauen (aus Settings auslesen)
@ -724,7 +725,8 @@ Public Class ClassNIDatenbankzugriff
' SQL-Abfrage definieren
Try
Command = New SqlCommand(sqlcommand, Connection)
oSQLCommand = New SqlCommand(sqlcommand, Connection)
Catch ex As Exception
_Logger.Error(ex)
' DB-Connection schliessen
@ -733,10 +735,10 @@ Public Class ClassNIDatenbankzugriff
End Try
' *** Ausführen des Command ***
If Command IsNot Nothing Then
If oSQLCommand IsNot Nothing Then
Try
Command.ExecuteNonQuery()
oSQLCommand.ExecuteNonQuery()
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
Return 1
@ -760,28 +762,6 @@ Public Class ClassNIDatenbankzugriff
End Try
End Function
Public Shared Function Return_Datatable(pSQLCommand As String) As DataTable
Try
Dim sw As New ClassStopwatch("Return_Datatable")
Dim SQLconnection As New SqlClient.SqlConnection(My.Settings.DDECMConString)
Dim SQLcommand As New SqlCommand(pSQLCommand, SQLconnection)
SQLcommand.CommandTimeout = 600
SQLconnection.Open()
Dim adapter1 As SqlDataAdapter = New SqlDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnection.Close()
Dim msg = sw.Done
If msg <> "" Then _Logger.Debug($"SWResult: {msg}")
Return dt
Catch ex As Exception
_Logger.Error(ex)
_Logger.Error($"SQL Return Datatable [{pSQLCommand}]")
Return Nothing
End Try
End Function
Public Function CheckIndex_MSSSQL(Profilname As String, ByVal scalar_select As String, ByVal datasource As String, ByVal User As String, ByVal pw As String, ByVal init_Cata As String)
Try
_Logger.Debug("MSSQL-Command: " & scalar_select)

View File

@ -1015,13 +1015,11 @@ Public Class ClassNIWindream
Return Nothing
End Try
End Function
Public Function NEW_MOVE_FILE(targetpath As String, sourcepath As String, oMethod As String) As Boolean
Public Function NEW_MOVE_FILE(targetpath As String, sourcepath As String, oMethod As String, pFileName As String) As Boolean
Dim oWMFile As WINDREAMLib.WMObject
Try
If My.Settings.vLogErrorsonly = False Then
_Logger.Info($"targetpath ({targetpath})")
_Logger.Info($"sourcepath ({sourcepath})")
End If
_Logger.Debug($"targetpath ({targetpath})")
_Logger.Debug($"sourcepath ({sourcepath})")
Dim sw As New ClassStopwatch("NEW_MOVE_FILE")
@ -1035,11 +1033,18 @@ Public Class ClassNIWindream
sourcepath = sourcepath.Replace("\\windream\objects", "")
sourcepath = sourcepath.Replace("W:\", "\")
targetpath = targetpath.Replace("\\", "\")
Const WMEntityDocument = 1
Dim IndexwertAusWindream As Object = Nothing
_Logger.Debug($"NEW_MOVE_FILE getting WMObject for: {sourcepath}")
oWMFile = oWMSession.GetWMObjectByPath(WMEntityDocument, sourcepath)
Try
oWMFile = oWMSession.GetWMObjectByPath(WMEntityDocument, sourcepath)
Catch ex As Exception
_Logger.Warn($"Error in NEW_MOVE_FILE - GetWMObjectByPath [{pFileName}] - Source[{sourcepath}]")
Return False
End Try
If oWMFile.lock Then
oWMFile.aPath = targetpath
oWMFile.Save()
@ -1055,6 +1060,7 @@ Public Class ClassNIWindream
End If
Catch ex As Exception
_Logger.Error(ex)
_Logger.Warn($"Error in NEW_MOVE_FILE pFileName [{pFileName}] - [{targetpath}]")
If Not IsNothing(oWMFile) Then
oWMFile.unlock()
End If

View File

@ -358,7 +358,7 @@ Public Class ClassWD_Rechte
End If
ElseIf _GruppenUserRecht.ToString.ToLower.StartsWith("select") Then
_GruppenUserRecht = _GruppenUserRecht.ToString.Replace("[%Dokument-ID]", CURRENT_DOCID)
_GruppenUserRecht = database.Return_Datatable(_GruppenUserRecht)
_GruppenUserRecht = DB_ECM.GetDatatable(_GruppenUserRecht)
End If
Dim oType = _GruppenUserRecht.GetType.ToString
If oType = "System.Data.DataTable" Then

View File

@ -74,6 +74,7 @@ Public Class ClassWindream_allgemein
'MsgBox("windrem init 'ed")
Catch ex As Exception
clsHelper.Add_Application_log("Unexpected error in Windream.Init(CreateObjects): " & ex.Message)
EMAIL_DD.Send_EMail("Unexpected error in Windream.Init(CreateObjects): " & ex.Message, "WMInit77")
Return False
End Try
@ -99,7 +100,7 @@ Public Class ClassWindream_allgemein
If Me.oWMSession.aLoggedin = False Then
clsHelper.Add_Application_log("Unexpected error in Windream.Init(oSession.aloggedIn): Could not check session-state")
EMAIL_DD.Send_EMail("Unexpected error in Windream.Init(oSession.aloggedIn): Could not check session-state", "clswmallgInit")
Return False
End If
@ -144,7 +145,7 @@ Public Class ClassWindream_allgemein
Else
If Not ex.Message.Contains("Already logged in") Then
clsHelper.Add_Application_log("Unexpected error in Windream.Init(Already logged in): " & ex.Message)
EMAIL_DD.Send_EMail("Unexpected error in Windream.Init(Already logged in): " & ex.Message, "clswmallgInit2")
Else
Return True
End If
@ -497,6 +498,7 @@ Public Class ClassWindream_allgemein
Return server 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception
clsHelper.Add_Application_log("Unexpected error in Windream.GetCurrentServer: " & ex.Message)
EMAIL_DD.Send_EMail("Unexpected error in Windream.GetCurrentServer: " & ex.Message, "GetCurrentServer")
'MsgBox("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Servers")
End Try

View File

@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.9.2.0")>
<Assembly: AssemblyFileVersion("2.9.2.0")>
<Assembly: AssemblyVersion("2.9.4.0")>
<Assembly: AssemblyFileVersion("2.9.4.0")>

View File

@ -428,12 +428,12 @@ Public Class frmDIHauptseite
Me.ImportFileList = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*")
End If
Dim oError As Boolean = False
Dim DT_TBTC_DI_REGEX_MATCH As DataTable
Try
Me.TBTC_DI_REGEX_MATCHTableAdapter.Connection.ConnectionString = My.Settings.DDECMConString
Me.TBTC_DI_REGEX_MATCHTableAdapter.Fill(Me.MyDataset.TBTC_DI_REGEX_MATCH, Me.selectedProfile.OriginalProfilname)
Dim oSQl = $"SELECT * FROM TBTC_DI_REGEX_MATCH WHERE PROFILE_NAME = '{Me.selectedProfile.OriginalProfilname}'"
DT_TBTC_DI_REGEX_MATCH = DB_ECM.GetDatatable(oSQl)
Catch ex As Exception
ClassLoggerDI.Add($"Error while connecting via My.Settings.DDECMConString [{My.Settings.DDECMConString}]" + ex.Message)
ClassLoggerDI.Add($"ErrorMessage: {ex.Message}")
ClassLoggerDI.Add($"ErrorMessageProfil_Durchlauf: {ex.Message}")
oError = True
End Try
@ -511,8 +511,8 @@ Public Class frmDIHauptseite
For Each oFilenameQuelle As String In Me.ImportFileList
fileAusschliessen = False
Dim oFilenameOnly = Path.GetFileName(oFilenameQuelle)
If Me.MyDataset.TBTC_DI_REGEX_MATCH.Rows.Count = 1 Then
If Regex.IsMatch(oFilenameOnly, MyDataset.TBTC_DI_REGEX_MATCH.Rows(0).Item("REGEX")) = False Then
If DT_TBTC_DI_REGEX_MATCH.Rows.Count = 1 Then
If Regex.IsMatch(oFilenameOnly, DT_TBTC_DI_REGEX_MATCH.Rows(0).Item("REGEX")) = False Then
ClassLoggerDI.Add($" >> Regex not Matching for file {oFilenameOnly}!", False)
fileAusschliessen = True
End If
@ -1059,7 +1059,11 @@ Public Class frmDIHauptseite
'########
Dim Zielverzeichnis As String = zielpfad
endgültigerDateiname = Zielverzeichnis.Substring(2) & "\" & Quelldatei_Name
If endgültigerDateiname.StartsWith("\\") Then
endgültigerDateiname = endgültigerDateiname.Substring(2)
End If
endgültigerDateiname = endgültigerDateiname.Replace("Windream\Objects\", "")
DetailLog("endgültigerDateiname: " + endgültigerDateiname)
DetailLog("Zielverzeichnis erzeugt")
If Directory.Exists(Zielverzeichnis) = False Then
'Try to create the directory.

View File

@ -120,13 +120,13 @@ Public Class frmNIHauptseite
End If
End Sub
Private Sub frmNIHauptseite_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Try
'LoadAllModules()
TBTC_MOVE_RENAMETableAdapter.Connection.ConnectionString = My.Settings.DDECMConString
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei frmNIHauptseite_Load")
_Logger.Warn("Fehler bei frmNIHauptseite_Load: " & ex.Message)
End Try
'Try
' 'LoadAllModules()
' TBTC_MOVE_RENAMETableAdapter.Connection.ConnectionString = My.Settings.DDECMConString
'Catch ex As Exception
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei frmNIHauptseite_Load")
' _Logger.Warn("Fehler bei frmNIHauptseite_Load: " & ex.Message)
'End Try
End Sub
'Private Function return_conn(ByVal dbart As String)
' Select Case dbart
@ -339,10 +339,9 @@ Public Class frmNIHauptseite
If clsHelper.file_exists(Me.aktivesProfil.WindreamSuche, "NI") = False AndAlso Me.aktivesProfil.WindreamSuche.ToLower.Contains("select") = False Then
_Logger.Warn("Windream Suche für Profil: " & profil.Profilname & " konnte nicht ausgeführt werden! Die Datei " & Me.aktivesProfil.WindreamSuche & " existiert nicht!")
' wenn die gesuchte File eine Suche ist: per MAil informierne und Indexierung abbrechen
If My.Settings.vMailsenden = True Then
EMAIL_DD.Send_EMail("Fehler bei Nachindexierung: <br> >> Profil: " & Me.aktivesProfil.Profilname & "<br> >> Die windream-Suche : " & Me.aktivesProfil.WindreamSuche & " konnte nicht gefunden werden!" &
"<br> >> Mögliche Fehlerursache: Das W-Laufwerk ist nicht verfügbar!", "WMissing")
End If
EMAIL_DD.Send_EMail("Fehler bei Nachindexierung: <br> >> Profil: " & Me.aktivesProfil.Profilname & "<br> >> Die windream-Suche : " & Me.aktivesProfil.WindreamSuche & " konnte nicht gefunden werden!" &
"<br> >> Mögliche Fehlerursache: Das W-Laufwerk ist nicht verfügbar!", "WMissing")
Abbruch_NI("Windream-Suche konnte nicht gefunden werden!", True, False)
clsHelper.Add_Application_log("Nachindexierung wurde abgebrochen, da eine Windream-Suche (" & Me.aktivesProfil.WindreamSuche & ") nicht gefunden werden konnte")
@ -798,9 +797,8 @@ Public Class frmNIHauptseite
Catch ex As Exception
errormsg = " FEHLER bei Check_Desk_Index (GetVariableValue für Index '" & aktivesProfil.Desk_windreamIndex & "'): " & ex.Message
_Logger.Warn(errormsg)
If My.Settings.vMailsenden = True Then
EMAIL_DD.Send_EMail("Beim Indexieren der Datei " & dokument.aName.ToString & " ist ein Fehler aufgetreten Check_Desk_Index (GetVariableValue): " & ex.Message, "Check_Desk_Index")
End If
EMAIL_DD.Send_EMail("Beim Indexieren der Datei " & dokument.aName.ToString & " ist ein Fehler aufgetreten Check_Desk_Index (GetVariableValue): " & ex.Message, "Check_Desk_Index")
' wenn ein Fehler aufgetreten ist, muss das Flag gesetzt werden
Return True
@ -815,7 +813,7 @@ Public Class frmNIHauptseite
End If
End Function
' Indexiert die windream-Suchergebnisse
Public Sub IndexiereVerarbeiteDokument(ByVal dokument As WMObject)
Public Sub IndexiereVerarbeiteDokument(ByVal pMyWMDoc As WMObject)
Dim oResultNachindexierung = Nothing
Try
@ -837,10 +835,10 @@ Public Class frmNIHauptseite
Dim eindeutigerWertausWindream As String
Dim _pathxmlfile As String
'Liefert nur den PFad des aktiven Dokumens
Dim ordnerpfad As String = IO.Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & dokument.aPath)
Dim ordnerpfad As String = IO.Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & pMyWMDoc.aPath)
_Logger.Debug("OrdnerPfad der Datei: " & ordnerpfad)
Try
CURRENT_DOCID = CInt(dokument.GetVariableValue("Dokument-ID"))
CURRENT_DOCID = CInt(pMyWMDoc.GetVariableValue("Dokument-ID"))
Catch ex As Exception
CURRENT_DOCID = 0
End Try
@ -856,15 +854,15 @@ Public Class frmNIHauptseite
Try
_fulltext = New clsNIFulltext(_MyLogger)
_Logger.Debug(">> _fulltext initialized.")
fulltext = dokument.GetVariableValue(aktivesProfil.Desk_windreamIndex)
fulltext = pMyWMDoc.GetVariableValue(aktivesProfil.Desk_windreamIndex)
If Len(fulltext) > 0 Then
_Logger.Info($"{aktivesProfil.Desk_windreamIndex} is empty...")
Else
_Logger.Info($"## No fulltext from [{aktivesProfil.Desk_windreamIndex}] extracted!")
fulltext = dokument.GetVariableValue("Manueller Volltext")
fulltext = pMyWMDoc.GetVariableValue("Manueller Volltext")
End If
If Len(fulltext) > 0 Then
Volltext_indexer(dokument, fulltext)
Volltext_indexer(pMyWMDoc, fulltext)
Else
_Logger.Info($"## Even no fulltext from Manueller Volltext extracted!")
End If
@ -899,13 +897,13 @@ Public Class frmNIHauptseite
Else
' den Wert des deskriptiven Indexes für das aktuelle Dokument auslesen
odescIndexValue = dokument.GetVariableValue(aktivesProfil.Desk_windreamIndex)
oResultCheck = Check_DeskIndexValue(odescIndexValue, aktivesProfil.checkIndexsql, dokument)
odescIndexValue = pMyWMDoc.GetVariableValue(aktivesProfil.Desk_windreamIndex)
oResultCheck = Check_DeskIndexValue(odescIndexValue, aktivesProfil.checkIndexsql, pMyWMDoc)
End If
Catch ex As Exception
_Logger.Warn($" Error getting {dokument.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf KEINEN Eintrag in der Datenbank!")
_Logger.Warn($" Error getting {pMyWMDoc.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf KEINEN Eintrag in der Datenbank!")
End Try
@ -914,18 +912,18 @@ Public Class frmNIHauptseite
Select Case oResultCheck
Case 0
'Kein Ergebnis für den Deskriptiven Index also Kennzeichnen des Dokumentes über den Index der das Dokument für die Validierung kennzeichnet
_Logger.Warn($"{dokument.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf KEINEN Eintrag in der Datenbank!")
_Logger.Warn($"{pMyWMDoc.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf KEINEN Eintrag in der Datenbank!")
fehlermsg &= " >> Der deskriptive Indexwert " & odescIndexValue & " verweist auf KEINEN Eintrag in der Datenbank!"
'Fehler = True
unvollstaendig = True
File_SetBooleanIndex(True, aktivesDokument, aktivesProfil.IndexValidation)
SetErrorMeldung("Value '" & odescIndexValue & "' not found in Database", aktivesDokument, My.Settings.ERROR_INDEX)
Case 1
_Logger.Debug($"{dokument.aName} # Der deskriptive Indexwert '{odescIndexValue}' verweist genau auf EINEN Eintrag in der Datenbank - Alles OK")
_Logger.Debug($"{pMyWMDoc.aName} # Der deskriptive Indexwert '{odescIndexValue}' verweist genau auf EINEN Eintrag in der Datenbank - Alles OK")
unvollstaendig = False
Case 2
'Mehr als ein Ergebnis für den Deskriptiven Index also Kennzeichnen des Dokumentes über den Index der das Dokument für die Validierung kennzeichnet
_Logger.Warn($"{dokument.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf MEHR ALS EINEN Eintrag in der Datenbank oder es trat ein genereller Fehler auf!")
_Logger.Warn($"{pMyWMDoc.aName} # Der deskriptive Indexwert '{odescIndexValue}' of Index [{aktivesProfil.Desk_windreamIndex}] verweist auf MEHR ALS EINEN Eintrag in der Datenbank oder es trat ein genereller Fehler auf!")
fehlermsg &= " >> Der deskriptive Indexwert " & odescIndexValue & " verweist auf MEHR ALS EINEN Eintrag in der Datenbank oder es trat ein genereller Fehler auf!"
oUnexpectedError = True
unvollstaendig = True
@ -942,7 +940,7 @@ Public Class frmNIHauptseite
End Try
End If
Case "xml" '#### Indexierung über xml-Dokument
_pathxmlfile = ordnerpfad & "\" & System.IO.Path.GetFileNameWithoutExtension(dokument.aPath) & "."
_pathxmlfile = ordnerpfad & "\" & System.IO.Path.GetFileNameWithoutExtension(pMyWMDoc.aPath) & "."
If aktivesProfil.xmlEnd = "xml (ZugFerd)" Then
_pathxmlfile &= "xml"
Else
@ -950,7 +948,7 @@ Public Class frmNIHauptseite
End If
If clsHelper.file_exists(_pathxmlfile, "NI") = False Then
_pathxmlfile = ordnerpfad & "\" & System.IO.Path.GetFileNameWithoutExtension(dokument.aPath) & "." & "xfres"
_pathxmlfile = ordnerpfad & "\" & System.IO.Path.GetFileNameWithoutExtension(pMyWMDoc.aPath) & "." & "xfres"
If clsHelper.file_exists(_pathxmlfile, "NI") = False Then
_Logger.Warn("ACHTUNG 1: Nachindexdatei '" & _pathxmlfile & "' existiert nicht!")
' Markierung des Dokumentes
@ -991,14 +989,14 @@ Public Class frmNIHauptseite
If Len(oSqlCommand) > 0 Then
'Ersetzen des Dateinamens - für CURSOR NachindexierungPr
If oSqlCommand.Contains("[DATEINAME]") Then
oSqlCommand = oSqlCommand.Replace("[DATEINAME]", dokument.aName)
oSqlCommand = oSqlCommand.Replace("[DATEINAME]", pMyWMDoc.aName)
End If
If oSqlCommand.Contains("[FULLNAME]") Then
oSqlCommand = oSqlCommand.Replace("[FULLNAME]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath)
oSqlCommand = oSqlCommand.Replace("[FULLNAME]", My.Settings.MRWD_Laufwerk & ":" & pMyWMDoc.aPath)
End If
If oSqlCommand.Contains("[DOCFilename]") Then
oSqlCommand = oSqlCommand.Replace("[DOCFilename]", dokument.aName)
oSqlCommand = oSqlCommand.Replace("[DOCFilename]", pMyWMDoc.aName)
End If
If oSqlCommand.Contains("[DOCFilenameoE]") Then
Dim Filename As String = aktivesDokument.aName.ToString.Substring(0, aktivesDokument.aName.LastIndexOf("."))
@ -1006,13 +1004,13 @@ Public Class frmNIHauptseite
End If
If oSqlCommand.Contains("[DOCPath]") Then
oSqlCommand = oSqlCommand.Replace("[DOCPath]", Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & dokument.aPath))
oSqlCommand = oSqlCommand.Replace("[DOCPath]", Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & pMyWMDoc.aPath))
End If
If oSqlCommand.Contains("[%DATENow]") Then
oSqlCommand = oSqlCommand.Replace("[%DATENow]", Now.ToShortDateString)
End If
If oSqlCommand.Contains("[DOCFULLPATH]") Then
oSqlCommand = oSqlCommand.Replace("[DOCFULLPATH]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath)
oSqlCommand = oSqlCommand.Replace("[DOCFULLPATH]", My.Settings.MRWD_Laufwerk & ":" & pMyWMDoc.aPath)
End If
_Logger.Debug($"oSqlCommand after Replace 1([{oSqlCommand}])")
' einen Regulären Ausdruck laden
@ -1030,7 +1028,7 @@ Public Class frmNIHauptseite
_Logger.Debug("### Working on Index(" & idxName_ohneSonderzeichen & ")...###")
Try
' den Wert des deskriptiven Indexes für das aktuelle Dokument auslesen
IndexwertAusWindream = dokument.GetVariableValue(idxName_ohneSonderzeichen)
IndexwertAusWindream = pMyWMDoc.GetVariableValue(idxName_ohneSonderzeichen)
If element.ToString = aktivesProfil.Desk_windreamIndex Then
eindeutigerWertausWindream = IndexwertAusWindream
End If
@ -1041,9 +1039,8 @@ Public Class frmNIHauptseite
result &= vbNewLine & " - Schwerwiegender Fehler bei Auslesen des einschränkenden Wertes aus Index':" & idxName_ohneSonderzeichen & "'"
oUnexpectedError = True
fehlermsg &= vbNewLine & "Schwerwiegender Fehler bei Auslesen des einschränkenden Wertes aus Index':" & idxName_ohneSonderzeichen & "' - Fehler: " & ex.Message
If My.Settings.vMailsenden = True Then
EMAIL_DD.Send_EMail(fehlermsg, "GettingWMIndexInfo")
End If
EMAIL_DD.Send_EMail(fehlermsg, "GettingWMIndexInfo")
End Try
' wenn beim Auslesen des Wertes für den aktuellen windream-Index kein Fehler auftrat
@ -1157,7 +1154,7 @@ Public Class frmNIHauptseite
oResultNachindexierung = database.GetValueFromOracleDb(aktivesProfil.Profilname, selectArray(i), Me.aktivesProfil.DataSource, aktivesProfil.InitialCatalog, aktivesProfil.UserId, aktivesProfil.Password, MyDataset, INDEX_SQL_BEFEHL.Index, Quelle_is_vektor)
ElseIf Me.aktivesProfil.DbArt = "MS-SQL" Then
_Logger.Debug($"Executing MSSQL ...")
oResultNachindexierung = database.GetValueFromMssqlDb(dokument.aName, aktivesProfil.Profilname, selectArray(i), Me.aktivesProfil.DataSource, aktivesProfil.UserId, aktivesProfil.Password, MyDataset, aktivesProfil.InitialCatalog, INDEX_SQL_BEFEHL.Index, Quelle_is_vektor)
oResultNachindexierung = database.GetValueFromMssqlDb(pMyWMDoc.aName, aktivesProfil.Profilname, selectArray(i), Me.aktivesProfil.DataSource, aktivesProfil.UserId, aktivesProfil.Password, MyDataset, aktivesProfil.InitialCatalog, INDEX_SQL_BEFEHL.Index, Quelle_is_vektor)
ElseIf Me.aktivesProfil.DbArt = "ODBC" Then
oResultNachindexierung = database.GetValueFromOdbcDb(aktivesProfil.Profilname, selectArray(i), Me.aktivesProfil.DataSource, aktivesProfil.UserId, aktivesProfil.Password, INDEX_SQL_BEFEHL.Index)
' MsgBox(oResultNachindexierung)
@ -1169,14 +1166,14 @@ Public Class frmNIHauptseite
Next
Case "xml"
'#### Indexierung über xml-Dokument
Dim dok As String = System.IO.Path.GetFileNameWithoutExtension(dokument.aPath)
Dim dok As String = System.IO.Path.GetFileNameWithoutExtension(pMyWMDoc.aPath)
'Indexierung über luratech-Ergebnis Files
If aktivesProfil.xmlEnd = "xffres" Then
_Logger.Debug("Indexierung über XML-Dokument Abby/Luratech")
'Dateipfad für xffres/xml-Datei zusammenbauen
If File.Exists(_pathxmlfile) Then
'Übergabe der Dateiparameter und des xml-Knotens
oResultNachindexierung = Trim(xml.GetValueFromLuratechxml(System.IO.Path.GetFileNameWithoutExtension(dokument.aPath) & "." & aktivesProfil.xmlEnd, _pathxmlfile, INDEX_SQL_BEFEHL.Spalte, aktivesProfil.Profilname))
oResultNachindexierung = Trim(xml.GetValueFromLuratechxml(System.IO.Path.GetFileNameWithoutExtension(pMyWMDoc.aPath) & "." & aktivesProfil.xmlEnd, _pathxmlfile, INDEX_SQL_BEFEHL.Spalte, aktivesProfil.Profilname))
'wert aus Luratech darf nicht leer sein
If oResultNachindexierung Is Nothing Then
File_SetBooleanIndex(True, aktivesDokument, aktivesProfil.IndexValidation)
@ -1224,7 +1221,7 @@ Public Class frmNIHauptseite
_dokxml = _windreamNI.oWMSession.GetWMObjectByPath(ConstWMEntityDocument, _pathxmlfile.Substring(2))
'Überprüfen ob deskriptiver Wert eindeutig?
_Logger.Debug("Überprüfung ob deskriptiver Wert eindeutig?")
Dim Check As Integer = Check_DeskIndexValue(oResultNachindexierung, aktivesProfil.checkIndexsql, dokument)
Dim Check As Integer = Check_DeskIndexValue(oResultNachindexierung, aktivesProfil.checkIndexsql, pMyWMDoc)
Select Case Check
Case 0
'Kein Ergebnis für den Deskriptiven Index also Kennzeichnen des Dokumentes über den Index der das Dokument für die Validierung kennzeichnet
@ -1243,7 +1240,7 @@ Public Class frmNIHauptseite
ReDim Preserve arrValue(0)
arrIndex(0) = INDEX_SQL_BEFEHL.Index
arrValue(0) = oResultNachindexierung.ToString
Me._windreamNI.RunIndexing(dokument, arrIndex, arrValue, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString)
Me._windreamNI.RunIndexing(pMyWMDoc, arrIndex, arrValue, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString)
_Logger.Debug("Der falsche OCR-Wert: '" & oResultNachindexierung.ToString & "' wurde eingetragen")
Else
fehlermsg &= vbNewLine & " - Der deskriptive Indexwert " & oResultNachindexierung & " verweist auf keinen Eintrag in der Datenbank!"
@ -1404,7 +1401,7 @@ Public Class frmNIHauptseite
'###############################################################################################
'#### Nachindexierung ##########################################################################
Dim sw As New ClassStopwatch("RunIndexing_Case1")
oUnexpectedError = Me._windreamNI.RunIndexing(dokument, myNIArrayIndexe, myNIArrayValues, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString)
oUnexpectedError = Me._windreamNI.RunIndexing(pMyWMDoc, myNIArrayIndexe, myNIArrayValues, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString)
Dim msg = sw.Done
If msg <> "" Then
Stopwatch1 = $"{msg}"
@ -1417,7 +1414,7 @@ Public Class frmNIHauptseite
'Wenn ein SQL-Ergebnis im Durchlauf einen Wert lieferte wird der finale Index auf True gesetzt
If myNIArrayValues Is Nothing = False And Not oUnexpectedError Then
If Me.aktivesProfil.finalerIndex <> "" And Not oUnexpectedError And myNIArrayValues.Length >= 1 And myNIArrayValues(0) <> "" Then
Me._windreamNI.SetfinalIndex(dokument, Me.aktivesProfil.finalerIndex, True)
Me._windreamNI.SetfinalIndex(pMyWMDoc, Me.aktivesProfil.finalerIndex, True)
End If
'###### Spezifisches SQL nach jeder Datei!
If Me.aktivesProfil.SQL_Anweisung IsNot Nothing And Not oUnexpectedError And myNIArrayValues.Length >= 1 And myNIArrayValues(0) <> "" Then
@ -1447,7 +1444,7 @@ Public Class frmNIHauptseite
If elementOhneSonderzeichen.StartsWith("ddv") Then
Dim ddvariable As String = ""
elementOhneSonderzeichen = elementOhneSonderzeichen.Replace("ddv", "")
Dim filepath = My.Settings.vWLaufwerk & ":" & dokument.aPath
Dim filepath = My.Settings.vWLaufwerk & ":" & pMyWMDoc.aPath
Select Case elementOhneSonderzeichen
Case "FULLFILENAME"
ddvariable = filepath
@ -1459,7 +1456,7 @@ Public Class frmNIHauptseite
Else
Try
' den Wert des deskriptiven Indexes für das aktuelle Dokument auslesen
IndexwertAusWindream = dokument.GetVariableValue(elementOhneSonderzeichen)
IndexwertAusWindream = pMyWMDoc.GetVariableValue(elementOhneSonderzeichen)
Catch ex As Exception
' wenn ein Fehler aufgetreten ist, muss das Flag gesetzt werden
oUnexpectedError = True
@ -1627,7 +1624,7 @@ Public Class frmNIHauptseite
elementOhneSonderzeichen = elementOhneSonderzeichen.Replace("]", "")
Try
' den Wert des deskriptiven Indexes für das aktuelle Dokument auslesen
IndexwertAusWindream = dokument.GetVariableValue(elementOhneSonderzeichen)
IndexwertAusWindream = pMyWMDoc.GetVariableValue(elementOhneSonderzeichen)
Catch ex As Exception
' wenn ein Fehler aufgetreten ist, muss das Flag gesetzt werden
oUnexpectedError = True
@ -1677,7 +1674,7 @@ Public Class frmNIHauptseite
Dim valid As Boolean
Try
'Überprüfen ob Validierung auf False steht?
valid = dokument.GetVariableValue(aktivesProfil.IndexValidation) '_windreamNI.GetValueforIndex(dokument.aPath & dokument.aName, aktivesProfil.vSQL_Anweisung)
valid = pMyWMDoc.GetVariableValue(aktivesProfil.IndexValidation) '_windreamNI.GetValueforIndex(dokument.aPath & dokument.aName, aktivesProfil.vSQL_Anweisung)
Catch ex As Exception
_Logger.Warn("Schwerwiegender Fehler bei Auslesen des Validierungswertes:" & ex.Message)
End Try
@ -1701,7 +1698,7 @@ Public Class frmNIHauptseite
File_SetBooleanIndex(True, aktivesDokument, aktivesProfil.IndexValidation)
'Fehlermarkierung setzen
_Logger.Debug("Indexierung der xffres-Datei '" & System.IO.Path.GetFileNameWithoutExtension(dokument.aName) & "." & aktivesProfil.xmlEnd & "' - für die Validierung kennzeichnen")
_Logger.Debug("Indexierung der xffres-Datei '" & System.IO.Path.GetFileNameWithoutExtension(pMyWMDoc.aName) & "." & aktivesProfil.xmlEnd & "' - für die Validierung kennzeichnen")
'Nun die xffres Datei indexieren
Dim _dokxml As WINDREAMLib.WMObject
_dokxml = Nothing
@ -1726,7 +1723,7 @@ Public Class frmNIHauptseite
'MsgBox("Fehler" & vbNewLine & _MRKONVERT_FEHLER & vbNewLine & aktivesProfil.vSQL_Anweisung)
Select Case _MRKONVERT_FEHLER
Case 1
Dim valid As Boolean = dokument.GetVariableValue(aktivesProfil.IndexValidation) '_windreamNI.GetValueforIndex(dokument.aPath & dokument.aName, aktivesProfil.vSQL_Anweisung)
Dim valid As Boolean = pMyWMDoc.GetVariableValue(aktivesProfil.IndexValidation) '_windreamNI.GetValueforIndex(dokument.aPath & dokument.aName, aktivesProfil.vSQL_Anweisung)
If valid = True Then
_Logger.Info("Konvertierungsfehler bei Nachindexierung xml - Index '" & aktivesProfil.IndexValidation & "' für Validierung bereits auf True gesetzt")
Else
@ -1753,11 +1750,10 @@ Public Class frmNIHauptseite
End If
Else
If unvollstaendig = False And Me.aktivesProfil.Ni_Art.ToLower <> "fulltext" Then
_Logger.Warn("Fehler bei IndexiereVerarbeiteDokument für die Datei: " & dokument.aName.ToString)
_Logger.Warn("Fehler bei IndexiereVerarbeiteDokument für die Datei: " & pMyWMDoc.aName.ToString)
_Logger.Warn("Fehlermeldung: " & fehlermsg)
If My.Settings.vMailsenden = True Then
EMAIL_DD.Send_EMail("Fehler in IndexiereVerarbeiteDokument für die Datei: " & dokument.aName.ToString & "<br> Profilname: " & aktivesProfil.Profilname & " <br> Fehlermeldung: " & fehlermsg, "IndexiereVerarbeiteDokument1760")
End If
EMAIL_DD.Send_EMail("Fehler in IndexiereVerarbeiteDokument für die Datei: " & pMyWMDoc.aName.ToString & "<br> Profilname: " & aktivesProfil.Profilname & " <br> Fehlermeldung: " & fehlermsg, "IndexiereVerarbeiteDokument1760")
End If
End If
'#### Ende Nachindexierung
@ -1771,7 +1767,7 @@ Public Class frmNIHauptseite
'Move and Rename ausführen
If LICENSE_MoveRename = True And Not oUnexpectedError And unvollstaendig = False Then
Dim swMoveandrename As New ClassStopwatch("MoveandRename")
oUnexpectedError = FNMoveRename(dokument)
oUnexpectedError = FNMoveRename(pMyWMDoc)
Dim msg1 = swMoveandrename.Done
If msg1 <> "" Then
@ -1795,7 +1791,7 @@ Public Class frmNIHauptseite
'Die Objekttypindizes laden
Dim Dindexe = _windream.GetIndicesByObjecttype(Me.aktivesProfil.DokumenttypString, False, "NI")
If IsArray(Oindexe) And IsArray(Dindexe) Then
OrdnerIndizes_zuweisen(dokument)
OrdnerIndizes_zuweisen(pMyWMDoc)
Else
_Logger.Debug("IsArray(Oindexe) = False")
End If
@ -1809,7 +1805,8 @@ Public Class frmNIHauptseite
If oUnexpectedError = False And unvollstaendig = False Then
Dim sw As New ClassStopwatch("Move2Folder")
_Logger.Debug("Move 2 Folder ist aktiviert")
Dim err As Boolean = Move2Folder(Me.aktivesDokument.aName, My.Settings.MRWD_Laufwerk & ":" & dokument.aPath)
Dim oDescriptiveIndexValue = pMyWMDoc.GetVariableValue(aktivesProfil.Desk_windreamIndex)
Dim err As Boolean = Move2Folder(aktivesDokument.aName, My.Settings.MRWD_Laufwerk & ":" & pMyWMDoc.aPath.ToString, oDescriptiveIndexValue.ToString)
Dim msg = sw.Done
If msg <> "" Then
Stopwatch1 += vbNewLine & $"{msg}"
@ -1826,13 +1823,14 @@ Public Class frmNIHauptseite
If oUnexpectedError = False And aktivesProfil.CrFolderIndex <> "" And unvollstaendig = False Then
Dim docpath As String
If moved_Folder = "" Then
docpath = My.Settings.MRWD_Laufwerk & ":" & dokument.aPath
docpath = My.Settings.MRWD_Laufwerk & ":" & pMyWMDoc.aPath
Else
docpath = moved_Folder
End If
Dim err As Boolean = CrFolderForIndex(docpath)
Dim oMyDocumentName = pMyWMDoc.aName
Dim err As Boolean = CrFolderForIndex(docpath, oMyDocumentName)
If err = True Then
EMAIL_DD.Send_EMail("Fehler bei Create Folder for Index bei der Datei: '" & dokument.aName.ToString & "'<br> Fehler: Die Datei wurde indexiert aber der Ordner konnte nicht erstellt werden!", "CrFolderForIndex")
EMAIL_DD.Send_EMail("Fehler bei Create Folder for Index bei der Datei: '" & pMyWMDoc.aName.ToString & "'<br> Fehler: Die Datei wurde indexiert aber der Ordner konnte nicht erstellt werden!", "CrFolderForIndex")
End If
Else
@ -1843,7 +1841,7 @@ Public Class frmNIHauptseite
If oUnexpectedError = False And aktivesProfil.NachbearbeitungAD = True And unvollstaendig = False Then
_Logger.Debug("Nachbearbeitung AD ist aktiviert")
Dim sw As New ClassStopwatch("AD-Rework")
Nachbearbeitung_AD(dokument)
Nachbearbeitung_AD(pMyWMDoc)
Dim msg = sw.Done
If msg <> "" Then
Stopwatch1 += vbNewLine & $"{msg}"
@ -1860,7 +1858,7 @@ Public Class frmNIHauptseite
aktivesDokument.unlock()
End If
Catch ex As Exception
_Logger.Warn("Unexpected error in final Unlocking: " & ex.Message)
_Logger.Info("### Unexpected error in final Unlocking: " & ex.Message)
End Try
swMessage = swWorkDocument_All.Done
If swMessage <> "" Then
@ -1870,7 +1868,7 @@ Public Class frmNIHauptseite
Catch ex As Exception
_Logger.Error(ex)
_Logger.Warn($"oResultNachindexierung so far: {oResultNachindexierung.ToString}")
EMAIL_DD.Send_EMail("Schwerwiegender Fehler bei IndexiereVerarbeiteDokument - <br> Profil: " & aktivesProfil.Profilname & "<br> Datei: " & dokument.aName.ToString & "<br> Fehler: " & ex.Message, "IndexiereVerarbeiteDokument1874")
EMAIL_DD.Send_EMail("Schwerwiegender Fehler bei IndexiereVerarbeiteDokument - <br> Profil: " & aktivesProfil.Profilname & "<br> Datei: " & pMyWMDoc.aName.ToString & "<br> Fehler: " & ex.Message, "IndexiereVerarbeiteDokument1874")
End Try
End Sub
Private Function FolderForIndex(oDynamicFolder As String, myWMDocument As WMObject) As String
@ -1977,18 +1975,20 @@ Public Class frmNIHauptseite
Try
Dim oReturnString As String
Dim oActWMPath As String = "\\windream\objects" & myWMDocument.aPath
Dim oExtension As String = System.IO.Path.GetExtension(oActWMPath)
TBTC_MOVE_RENAMETableAdapter.Connection.ConnectionString = My.Settings.DDECMConString
Me.TBTC_MOVE_RENAMETableAdapter.Fill(Me.MyDataset.TBTC_MOVE_RENAME, aktivesProfil.Profilname)
Dim oSQL = $"SELECT * FROM TBTC_MOVE_RENAME WHERE PROFILE_NAME = '{aktivesProfil.Profilname}'"
Dim oDT_TBTC_MOVE_RENAME As DataTable = DB_ECM.GetDatatable(oSQL)
Dim oVERSIONOFF As Boolean
If MyDataset.TBTC_MOVE_RENAME.Rows.Count = 1 Then
_Logger.Debug($"Found a Move and Rename Definition: [{MyDataset.TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX")}]")
oVERSIONOFF = MyDataset.TBTC_MOVE_RENAME.Rows(0).Item("VERSION_OFF")
If oDT_TBTC_MOVE_RENAME.Rows.Count = 1 Then
_Logger.Debug($"Found a Move and Rename Definition: [{oDT_TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX")}]")
oVERSIONOFF = oDT_TBTC_MOVE_RENAME.Rows(0).Item("VERSION_OFF")
Dim oTargetpath As String
'Regulären Ausdruck zum Auslesen der Indexe definieren
Dim oPRegex As String = "\[%{1}[a-zA-Z0-9ß\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
If MyDataset.TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX") <> "" Then
oTargetpath = MyDataset.TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX")
If oDT_TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX") <> "" Then
oTargetpath = oDT_TBTC_MOVE_RENAME.Rows(0).Item("FOLDER_FOR_INDEX")
oTargetpath = FolderForIndex(oTargetpath, myWMDocument)
Else
oTargetpath = Path.GetDirectoryName(oActWMPath)
@ -1998,28 +1998,30 @@ Public Class frmNIHauptseite
End If
'schonmal den gesamten Pfad laden
Dim oNamenkonvention As String = oTargetpath & "\" & MyDataset.TBTC_MOVE_RENAME.Rows(0).Item("NAMECONVENTION") & oExtension
Dim oNamenkonvention As String = oTargetpath & "\" & oDT_TBTC_MOVE_RENAME.Rows(0).Item("NAMECONVENTION") & oExtension
' einen Regulären Ausdruck laden
Dim oRegularExpression As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(oPRegex)
' die Vorkommen im SQL-String auslesen
Dim oMatchelements As System.Text.RegularExpressions.MatchCollection = oRegularExpression.Matches(oNamenkonvention)
'####
If oMatchelements.Count = 0 Then
_Logger.Info("No RegularExpression Fileds in Nameconvention!", False)
_Logger.Info("No RegularExpression fields in nameconvention!", False)
End If
' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
For Each oElement As System.Text.RegularExpressions.Match In oMatchelements
Select Case oElement.Value.Substring(2, 1)
'Manueller Indexwert
Case "m"
_Logger.Debug("Index will be checked...")
Dim oWMIndexname = oElement.Value.Substring(3, oElement.Value.Length - 4)
_Logger.Debug($"FNMoveRename: Index {oWMIndexname} will be checked...")
Dim oWMIndexValue As String = myWMDocument.GetVariableValue(oWMIndexname)
If oWMIndexValue <> String.Empty Then
Dim oClearedContent As String = String.Join("", oWMIndexValue.Split(Path.GetInvalidFileNameChars()))
If oClearedContent <> oWMIndexValue Then
_Logger.Info($"Cleaned the WMContent with GetInvalidFileNameChars from [{oWMIndexValue}] to [{oClearedContent}]")
_Logger.Debug($"Cleaned the WMContent with GetInvalidFileNameChars from [{oWMIndexValue}] to [{oClearedContent}]")
oWMIndexValue = oClearedContent
End If
Dim firstVectorValue = oWMIndexValue.Split("~").First()
@ -2112,7 +2114,7 @@ Public Class frmNIHauptseite
Next
oReturnString = oNamenkonvention
Else
If MyDataset.TBTC_MOVE_RENAME.Rows.Count = 0 Then
If oDT_TBTC_MOVE_RENAME.Rows.Count = 0 Then
Return False
Else
oReturnString = oActWMPath
@ -2144,7 +2146,7 @@ Public Class frmNIHauptseite
If File.Exists(oNewPathFilename) Then
Try
_Logger.Info("MOVERENAME-VERSIONING is OFF - Deleting existing file...")
_Logger.Debug("MOVERENAME-VERSIONING is OFF - Deleting existing file...")
File.Delete(oNewPathFilename)
Catch ex As Exception
_Logger.Warn($"Could Not delete file As VERSIONOFF Is True [{ex.Message}]")
@ -2163,9 +2165,7 @@ Public Class frmNIHauptseite
oReturnString = oNewPathFilename
End If
End If
If _windreamNI.NEW_MOVE_FILE(oReturnString, oActWMPath, "MO_RE") = True Then
If _windreamNI.NEW_MOVE_FILE(oReturnString, oActWMPath, "MO_RE", myWMDocument.aName) = True Then
Return False
Else
Return True
@ -2970,7 +2970,7 @@ Public Class frmNIHauptseite
' Return False
' End Try
'End Function
Private Function Move2Folder(ByVal vDateiName As String, ByVal vFilestring As String)
Private Function Move2Folder(ByVal vDateiName As String, ByVal vFilestring As String, pFileName As String)
Try
_Logger.Debug("Move2Folder gestartet")
Dim extension As String = Path.GetExtension(vDateiName)
@ -2985,7 +2985,8 @@ Public Class frmNIHauptseite
_Ziel = neuername
version = version + 1
Loop
If _windreamNI.NEW_MOVE_FILE(_Ziel, vFilestring, "Move2Folder") = True Then
If _windreamNI.NEW_MOVE_FILE(_Ziel, vFilestring, "Move2Folder", pFileName) = True Then
If clsHelper.file_exists(vFilestring, "NI") = True Then
_Logger.Info("Datei existiert trotz Move noch am ursprünglichen Ort noch....wird gelöscht wenn an Ziel existiert....", False)
If clsHelper.file_exists(_Ziel, "NI") = True Then
@ -3003,7 +3004,7 @@ Public Class frmNIHauptseite
End Function
Private Function CrFolderForIndex(ByVal fullfilename As String)
Private Function CrFolderForIndex(fullfilename As String, pFileName As String)
Try
fullfilename = fullfilename.Replace("W:\", "\\windream\objects\")
@ -3134,7 +3135,7 @@ Public Class frmNIHauptseite
oWM_Target = neuername
Loop
_windreamNI.NEW_MOVE_FILE(oWM_Target, fullfilename, "FolderForIndex")
_windreamNI.NEW_MOVE_FILE(oWM_Target, fullfilename, "FolderForIndex", pFileName)
Else
_Logger.Info("(CrFolderForIndex) Quell- und Zielordner identisch")
If Path.GetFileName(fullfilename) <> Path.GetFileName(oWM_Target) And File.Exists(oWM_Target) Then

View File

@ -94,6 +94,11 @@ Public Class frmStart
End If
Next
DB_ECM = New MSSQLServer(_MyLogger, oServer, oDB, oUSer, oPW)
If DB_ECM.DBInitialized Then
_Logger.Info("DB ECM SUCCESSFULLY INITIIALIZED")
Else
_Logger.Warn("ATTENTION: DB DD_ECM NOT INITIIALIZED")
End If
End If
Catch ex As Exception