From 0228272fa671de529a6ddf34e0efbe64bcd09d6b Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Wed, 22 May 2019 11:44:12 +0200 Subject: [PATCH] Importund Bugfixing --- ToolCollection/My Project/AssemblyInfo.vb | 2 +- ToolCollection/clsNI_WorkFile.vb | 73 +++++++------ ToolCollection/frmDIHauptseite.vb | 76 ++++++------- ToolCollection/frmNIHauptseite.vb | 126 ++++++++++++---------- ToolCollection/frmNIVerknuepfungen.vb | 7 +- 5 files changed, 155 insertions(+), 129 deletions(-) diff --git a/ToolCollection/My Project/AssemblyInfo.vb b/ToolCollection/My Project/AssemblyInfo.vb index 5daf344..7de1440 100644 --- a/ToolCollection/My Project/AssemblyInfo.vb +++ b/ToolCollection/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/ToolCollection/clsNI_WorkFile.vb b/ToolCollection/clsNI_WorkFile.vb index 053b572..c24e9c3 100644 --- a/ToolCollection/clsNI_WorkFile.vb +++ b/ToolCollection/clsNI_WorkFile.vb @@ -9,8 +9,8 @@ Public Class clsNI_WorkFile Public Shared aktivesProfil As ClassNIProfil Public Shared _windream As ClassNIWindream Private Shared _XML As New ClassxmlZugriff - Public Shared _filevalidation As Boolean = False - Public Shared _fileerror As Boolean = False + Public Shared _SetFileValidation As Boolean = False + 'Public Shared _fileerror As Boolean = False Private Shared _WDFileINWORK As WMObject Private Shared _WDOrdnerpfad As String Private Shared _pathxmlfile As String @@ -32,7 +32,7 @@ Public Class clsNI_WorkFile Try errormsg = "" _file_Folderpath = "" - Dim error_WorkFile As Boolean = False + Dim oErrorInWorkFile As Boolean = False _WDFileINWORK = dokument _WDOrdnerpfad = Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & dokument.aPath) @@ -44,20 +44,18 @@ Public Class clsNI_WorkFile '============================================================================ 'Als erstes überprüfen ob eine Überprüfung des Indexes per SQL hinterlegt ist '============================================================================ - error_WorkFile = Check_Deskriptiven_Index() + oErrorInWorkFile = Check_Deskriptiven_Index() 'Wenn alles ok ist - gibt es False zurück - If error_WorkFile = False Then + If oErrorInWorkFile = False Then NI_Indexe = Nothing ' zum Speichern der Indexe NI_Values = Nothing ' zum Speichern der Werte 'Die Indexierungsschritte abarbeiten - error_WorkFile = Work_Verknuepfungen() + oErrorInWorkFile = Work_Verknuepfungen() - If error_WorkFile = False Then + If oErrorInWorkFile = False Then End If - End If - 'Wenn Fehler dann die Datei markieren - If error_WorkFile = True Then + Else 'Validation-Flags setzen SetValidation() End If @@ -118,14 +116,17 @@ Public Class clsNI_WorkFile 'Kein Ergebnis für den Deskriptiven Index also Kennzeichnen des Dokumentes über den Index der das Dokument für die Validierung kennzeichnet _Logger.Warn(" >> Der deskriptive Indexwert verweist auf KEINEN Eintrag in der Datenbank! - Markierung des Doks") errormsg &= " >> Der deskriptive Indexwert verweist auf KEINEN Eintrag in der Datenbank!" + _SetFileValidation = True Return True Case 1 _Logger.Warn(" - Der deskriptive Indexwert verweist genau auf EINEN Eintrag in der Datenbank - Alles OK") + _SetFileValidation = False Return 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(" >> Der deskriptive Indexwert verweist auf MEHR ALS EINEN Eintrag in der Datenbank oder es trat ein genereller Fehler auf!") errormsg &= " >> Der deskriptive Indexwert verweist auf MEHR ALS EINEN Eintrag in der Datenbank oder es trat ein genereller Fehler auf!" + _SetFileValidation = True Return True End Select @@ -191,8 +192,11 @@ Public Class clsNI_WorkFile End Sub Private Shared Sub SetValidation() - If _filevalidation = True Then File_SetBooleanIndex(True, _WDFileINWORK, aktivesProfil.IndexValidation) - If _fileerror = True Then File_SetBooleanIndex(True, _WDFileINWORK, aktivesProfil.IndexFehler) + If _SetFileValidation = True Then + File_SetBooleanIndex(True, _WDFileINWORK, aktivesProfil.IndexValidation) + File_SetBooleanIndex(True, _WDFileINWORK, aktivesProfil.IndexFehler) + End If + End Sub Private Shared Function Fulltext_init(_dokument As WMObject, fulltext As String) Try @@ -575,7 +579,7 @@ Public Class clsNI_WorkFile '1. aktives Dok SetValidation() '2. Indexierungs-Datei - If _filevalidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) + If _SetFileValidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) Return True Case 1 _Logger.Debug("- Der deskriptive Indexwert " & _NidxWert & " verweist genau auf EINEN Eintrag in der Datenbank - Alles OK") @@ -585,7 +589,7 @@ Public Class clsNI_WorkFile '1. aktives Dok SetValidation() '2. Indexierungs-Datei - If _filevalidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) + If _SetFileValidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) Return True Case 99 'Fehler in Überprüfung @@ -594,7 +598,7 @@ Public Class clsNI_WorkFile '1. aktives Dok SetValidation() '2. Indexierungs-Datei - If _filevalidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) + If _SetFileValidation = True Then File_SetBooleanIndex(True, _dokxml, aktivesProfil.IndexValidation) Return True End Select End If @@ -634,25 +638,28 @@ Public Class clsNI_WorkFile End Function Private Shared Sub File_SetBooleanIndex(ByVal _value As Boolean, ByVal _dok As WINDREAMLib.WMObject, ByVal _Indexname As String) - 'Überprüfen ob Validierung bereits gesetzt wurde? - Dim akt_Status As Boolean = CBool(_dok.GetVariableValue(_Indexname)) - If akt_Status <> _value Then - 'Validation muß angepasst werden - _Logger.Debug("- Validation/Error Index NOCH NICHT auf '" & _value.ToString & "' gesetzt") - Dim arrIndex() As String = Nothing - Dim arrValue() As String = Nothing - 'Nun die Datei indexieren - arrIndex = Nothing - arrValue = Nothing - ReDim Preserve arrIndex(0) - ReDim Preserve arrValue(0) - arrIndex(0) = _Indexname - arrValue(0) = _value.ToString - _windream.RunIndexing(_dok, arrIndex, arrValue, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString) - Else - 'Index muß nicht angepasst werden - _Logger.Debug("- Validation Index bereits auf '" & _value & "' gesetzt") + If _Indexname <> String.Empty Then + 'Überprüfen ob Validierung bereits gesetzt wurde? + Dim akt_Status As Boolean = CBool(_dok.GetVariableValue(_Indexname)) + If akt_Status <> _value Then + 'Validation muß angepasst werden + _Logger.Debug("- Validation/Error Index NOCH NICHT auf '" & _value.ToString & "' gesetzt") + Dim arrIndex() As String = Nothing + Dim arrValue() As String = Nothing + 'Nun die Datei indexieren + arrIndex = Nothing + arrValue = Nothing + ReDim Preserve arrIndex(0) + ReDim Preserve arrValue(0) + arrIndex(0) = _Indexname + arrValue(0) = _value.ToString + _windream.RunIndexing(_dok, arrIndex, arrValue, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString) + Else + 'Index muß nicht angepasst werden + _Logger.Debug("- Validation Index bereits auf '" & _value & "' gesetzt") + End If End If + End Sub Private Shared Sub Indexiere_ErrorIndex(ByVal _error As String, ByVal _dok As WINDREAMLib.WMObject, ByVal _Indexname As String) Try diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 0c27dd9..efec1ea 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -74,7 +74,7 @@ Public Class frmDIHauptseite Private bgwQuelldatei = "" Private bgwZielordner = "" - Private oWMStream_Result As Boolean = False + Private oWMStream_Result As Integer Private ErgebnisNochNichtLöschen As Boolean = False @@ -358,7 +358,7 @@ Public Class frmDIHauptseite End Sub Public Function func_check_file_use(ByVal filename) As Boolean - filename = filename.Replace("W:", "\\windream\objects") + filename = filename.Replace(My.Settings.vWLaufwerk, "\\windream\objects") Dim fs As Integer = FreeFile() Dim inuse As Boolean = False If File.Exists(filename) Then @@ -531,16 +531,16 @@ Public Class frmDIHauptseite 'File in Array speichern fileAusschluss_List.Add(filenameQuelle) - Me.oWMStream_Result = False + Me.oWMStream_Result = 0 Me.threadDateiimport.ReportProgress(Me.dateienImportiert / Me.dateienGesamt * 100) Me.dateienImportiert += 1 Else 'Datei nicht in Benutzung - Dim fi As IO.FileInfo = New IO.FileInfo(filenameQuelle) + Dim oFileInfo As IO.FileInfo = New IO.FileInfo(filenameQuelle) 'zeitdiff nur Zur sicherheit ob file gerade erst erstellt 'If My.Settings.vDItime_durationExists <> 0 Then - If selectedProfile.Verzoegerung <> 0 And DateDiff("s", fi.CreationTime, Now) < selectedProfile.Verzoegerung Then + If selectedProfile.Verzoegerung <> 0 And DateDiff("s", oFileInfo.CreationTime, Now) < selectedProfile.Verzoegerung Then 'Datei wurde erst "vor kurzem erstellt" - nicht berücksichtigen If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" ### Datei vor weniger als " & selectedProfile.Verzoegerung & " sec. erstellt ###", False) @@ -548,7 +548,7 @@ Public Class frmDIHauptseite End If 'File in Array speichern fileAusschluss_List.Add(filenameQuelle) - Me.oWMStream_Result = False + Me.oWMStream_Result = 0 Me.threadDateiimport.ReportProgress(Me.dateienImportiert / Me.dateienGesamt * 100) Me.dateienImportiert += 1 Else @@ -632,8 +632,9 @@ Public Class frmDIHauptseite DI_STREAMRESULTFILE = "" Me.oWMStream_Result = Stream_File(Me.bgwQuelldatei, oZielOrdner) 'Me.selectedProfile.OriginalZielordner 'DateiÜbertragen_Schleife(Me.bgwQuelldatei, Me.selectedProfile.OriginalZielordner) ' ' - ' dann windream-Festplatte voll - If Me.oWMStream_Result = False Then + CriticalErrorInBackgroundWorker = False + ' + If Me.oWMStream_Result = -2 Then Me.CriticalErrorInBackgroundWorker = True Else 'Schwerwiegender Fehler in der Dateiübertragung @@ -641,7 +642,7 @@ Public Class frmDIHauptseite End If ' hier nochmal prüfen, da der Fehler gerade erst aufgetreten sein kann If Not CriticalErrorInBackgroundWorker Then - If Me.oWMStream_Result = True Then + If Me.oWMStream_Result = 0 Then Try Dim extension As String = Replace(Path.GetExtension(DI_STREAMRESULTFILE), ".", "").ToUpper TBDD_REPORTING_IMPORTTableAdapter.Insert(DI_STREAMRESULTFILE, manProfile, DI_FILESIZE, DI_PAGECOUNT, extension) @@ -781,7 +782,7 @@ Public Class frmDIHauptseite Me.tvLog.Nodes.Add(dateiname.Substring(Me.txtQuellordner.Text.Length)) 'Console.WriteLine("######## TreeNode (" & dateiname.Substring(Me.txtQuellordner.Text.Length) & "): " & Me.übertragen_erfolgreich) - If Me.oWMStream_Result = True Then + If Me.oWMStream_Result = 0 Then If Me.TreeNodeInfos.Count > 0 Then 'Me.tvLog.Nodes(Me.dateienImportiert - 1).Nodes.Add(Me.TreeNodeInfos(Me.dateienImportiert - 1)(0)) @@ -1085,7 +1086,7 @@ Public Class frmDIHauptseite Directory.CreateDirectory(Zielverzeichnis) Catch ex As Exception ClassLoggerDI.Add(" - Unexpected Error in Creating Target Folder: " & vbNewLine & ex.Message) - Return False + Return -2 End Try End If _Step = "2.1" @@ -1100,7 +1101,7 @@ Public Class frmDIHauptseite Dim length As Long = info.Length If freeSpace < length Then MsgBox(" Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz") - Return False - 10 + Return -2 End If If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - Datei kopieren von " & filenameQuelle & " nach " & zielpfad.Substring(2) & "\" & Quelldatei_Name & ".", False) Dim oNewWMObject @@ -1186,8 +1187,8 @@ Public Class frmDIHauptseite ClassLoggerDI.Add(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") ClassLoggerDI.Add(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'", False) oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 ' MsgBox(Err.Description) End If _Step = "3.3" @@ -1197,8 +1198,8 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 'MsgBox(Err.Description) End If If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - oWMStream erzeugt", False) @@ -1209,8 +1210,8 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 'MsgBox(Err.Description) End If ' let fileIO object import the original file into windream @@ -1218,8 +1219,8 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 ' MsgBox(Err.Description) End If If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - Inhalt der Datei konnte übertragen werden", False) @@ -1230,8 +1231,8 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 'MsgBox(Err.Description) End If ' save new windream object @@ -1239,8 +1240,8 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 'MsgBox(Err.Description) End If If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - Datei konnte gespeichert werden", False) @@ -1251,21 +1252,20 @@ Public Class frmDIHauptseite If Err.Number > 0 Then ClassLoggerDI.Add(" FEHLER bei WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") oNewWMObject.Unlock() - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) - Return False + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) + Return -1 'MsgBox(Err.Description) End If If _windream.oWMSession.WMObjectExists(WMEntityDocument, endgültigerDateiname.Replace(My.Settings.vWLaufwerk & ":", ""), 0, 0) = False Then ClassLoggerDI.Add(Now.ToShortTimeString & " >> File '" & DI_STREAMRESULTFILE & "' should exist in windream but WMObjectExists returned 'false' ...", True) - Return False + Return -1 End If 'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist _Step = "3.7" If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - _Step: " & _Step, False) - If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - _Step: " & _Step, False) - Dim info2 As New FileInfo(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) + Dim info2 As New FileInfo(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) Dim length1 As Long = info2.Length If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - Length der Zieldatei: " & length1.ToString, False) If length1 > 0 And Err.Number = 0 Then @@ -1279,11 +1279,11 @@ Public Class frmDIHauptseite End Try Try ClassLoggerDI.Add(" FEHLER bei Dateiindexieren - Datei" & endgültigerDateiname & " wird wieder gelöscht!") - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) Catch ex As Exception ClassLoggerDI.Add(" Datei konnte nicht gelöscht werden! " & ex.Message) End Try - Return False + Return -1 End If Dim p As String If endgültigerDateiname.StartsWith("\") Then @@ -1298,31 +1298,31 @@ Public Class frmDIHauptseite DI_STREAMRESULTFILE = My.Settings.vWLaufwerk & ":" & p If _windream.oWMSession.WMObjectExists(WMEntityDocument, DI_STREAMRESULTFILE.Replace(My.Settings.vWLaufwerk & ":", ""), 0, 0) = True Then ClassLoggerDI.Add(Now.ToShortTimeString & " >> Datei '" & DI_STREAMRESULTFILE & "' wurde erfolgreich nach windream importiert!", False) - Return True + Return 0 Else ClassLoggerDI.Add(Now.ToShortTimeString & " >> File '" & DI_STREAMRESULTFILE & "' should exist in windream but WMObjectExists returned 'false' ...", True) - Return False + Return -1 End If Else _Step = "5" If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - _Step: " & _Step, False) - System.IO.File.Delete(My.Settings.vWLaufwerk & ":\" & endgültigerDateiname) + System.IO.File.Delete(My.Settings.vWLaufwerk & ":" & endgültigerDateiname) ClassLoggerDI.Add(" FEHLER bei Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht- Überprüfen Sie Log-File") - Return False + Return -1 End If Else - Return False + Return -1 End If Else If My.Settings.vLogErrorsonly = False Then ClassLoggerDI.Add(" - targetPath exisitiert NICHT", False) - Return False + Return -2 End If Catch ex As Exception ClassLoggerDI.Add("Unexpected Error in Stream_File: " & ex.Message, True) - Return True + Return -1 End Try diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index dd5a9bd..c4d5096 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -28,8 +28,9 @@ Public Class frmNIHauptseite Private manuallyRun As Boolean = False '#### Variablen für das Profil - Private Indexe() As String = Nothing ' zum Speichern der Indexe - Private NI_Values() As String = Nothing ' zum Speichern der Werte + Private myNIDatatable As DataTable + Private oNiArrayIndexe() As String = Nothing ' zum Speichern der Indexe + Private oNiArrayValues() As String = Nothing ' zum Speichern der Werte Public _MRDokumentart, _MRKundenKennzeichen, _MRDeskrIndex As String Private _MRlicense As Boolean = False Public Shared _MRKONVERT_FEHLER As Integer = 0 @@ -404,16 +405,14 @@ Public Class frmNIHauptseite ' nun Profilabhängige Parameter laden If aktivesProfil.IndexValidation <> "" Then _Logger.Debug("Dokumente sollen für Validierung markiert werden - Index: " & aktivesProfil.IndexValidation) - _clsWorkfile._filevalidation = True + _clsWorkfile._SetFileValidation = True Else - _clsWorkfile._filevalidation = False + _clsWorkfile._SetFileValidation = False End If _Logger.Debug($"clsWorkfile._filevalidation Checked...") If My.Settings.ERROR_INDEX <> "" Then _Logger.Debug("Error-msg shall be logged in index: " & My.Settings.ERROR_INDEX) - _clsWorkfile._fileerror = True - Else - _clsWorkfile._fileerror = False + End If _Logger.Debug($"clsWorkfile._fileerror Checked...") _Logger.Debug("Ni-Art: " & aktivesProfil.Ni_Art.ToLower) @@ -810,10 +809,14 @@ Public Class frmNIHauptseite Case "activedirectory" End Select + myNIDatatable = Nothing + Dim oDt As New DataTable + oDt.Columns.Add("Indexname") + oDt.Columns.Add("Value") + myNIDatatable = oDt - - Indexe = Nothing ' zum Speichern der Indexe - NI_Values = Nothing ' zum Speichern der Werte + oNiArrayIndexe = Nothing ' zum Speichern der Indexe + oNiArrayValues = Nothing ' zum Speichern der Werte Dim verknüpfungZähler As Integer = 0 @@ -827,37 +830,37 @@ Public Class frmNIHauptseite 'Regulären Ausdruck zum Auslesen der windream-Indexe definieren Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" ' SQL-String für aktuelle Verknüpfung laden - Dim SqlString As String = INDEX_SQL_BEFEHL.SelectAnweisung + Dim oSqlCommand As String = INDEX_SQL_BEFEHL.SelectAnweisung 'Ersetzen des Dateinamens - für CURSOR NachindexierungPr - If SqlString.Contains("[DATEINAME]") Then - SqlString = SqlString.Replace("[DATEINAME]", dokument.aName) + If oSqlCommand.Contains("[DATEINAME]") Then + oSqlCommand = oSqlCommand.Replace("[DATEINAME]", dokument.aName) End If - If SqlString.Contains("[FULLNAME]") Then - SqlString = SqlString.Replace("[FULLNAME]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath) + If oSqlCommand.Contains("[FULLNAME]") Then + oSqlCommand = oSqlCommand.Replace("[FULLNAME]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath) End If - If SqlString.Contains("[%DOCFilename]") Then - SqlString = SqlString.Replace("[%DOCFilename]", dokument.aName) + If oSqlCommand.Contains("[%DOCFilename]") Then + oSqlCommand = oSqlCommand.Replace("[%DOCFilename]", dokument.aName) End If - If SqlString.Contains("[%DOCFilenameoE]") Then + If oSqlCommand.Contains("[%DOCFilenameoE]") Then Dim Filename As String = aktivesDokument.aName.ToString.Substring(0, aktivesDokument.aName.LastIndexOf(".")) - SqlString = SqlString.Replace("[%DOCFilenameoE]", Path.GetFileNameWithoutExtension(Filename)) + oSqlCommand = oSqlCommand.Replace("[%DOCFilenameoE]", Path.GetFileNameWithoutExtension(Filename)) End If - If SqlString.Contains("[%DOCPath]") Then - SqlString = SqlString.Replace("[FULLNAME]", Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & dokument.aPath)) + If oSqlCommand.Contains("[%DOCPath]") Then + oSqlCommand = oSqlCommand.Replace("[FULLNAME]", Path.GetDirectoryName(My.Settings.vWLaufwerk & ":" & dokument.aPath)) End If - If SqlString.Contains("[%DATENow]") Then - SqlString = SqlString.Replace("[%DATENow]", Now.ToShortDateString) + If oSqlCommand.Contains("[%DATENow]") Then + oSqlCommand = oSqlCommand.Replace("[%DATENow]", Now.ToShortDateString) End If - If SqlString.Contains("[%DOCFULLPATH]") Then - SqlString = SqlString.Replace("[%DOCFULLPATH]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath) + If oSqlCommand.Contains("[%DOCFULLPATH]") Then + oSqlCommand = oSqlCommand.Replace("[%DOCFULLPATH]", My.Settings.MRWD_Laufwerk & ":" & dokument.aPath) End If ' 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(SqlString) + Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(oSqlCommand) ' alle Vorkommen der windream-Indexe im SQL-String durchlaufen For Each element As System.Text.RegularExpressions.Match In elemente @@ -888,12 +891,12 @@ Public Class frmNIHauptseite If IndexwertAusWindream Is Nothing And Not error_in_Indexierung Then ' IndexwertAusWindream ist Nothing (idxName_ohneSonderzeichen) _Logger.Warn("ACHTUNG: der einschränkende Wert aus Windream für Index '" & idxName_ohneSonderzeichen & "' ist EMPTY oder NOTHING") - _Logger.Warn("SQL-String bisher: " & SqlString) + _Logger.Warn("SQL-String bisher: " & oSqlCommand) ' wenn die Abfrage in windream kein Ergebnis gab, muss das error_in_Indexierungflag gesetzt werden error_in_Indexierung = True Else ' den Platzhalter im SQL-String durch den Wert ersetzen - SqlString = SqlString.Replace(element.Value, IndexwertAusWindream.ToString) + oSqlCommand = oSqlCommand.Replace(element.Value, IndexwertAusWindream.ToString) _Logger.Debug("SqlString.Replace(" & element.Value & ", " & IndexwertAusWindream.ToString) End If @@ -902,17 +905,17 @@ Public Class frmNIHauptseite ' wenn es sich um den Platzhalter für die Spalte handelt If element.Value.ToUpper = "[%SPALTE]" Then ' den Platzhalter für die auszulesende Spalte durch den Spaltennamen ersetzen - SqlString = SqlString.Replace(element.Value, INDEX_SQL_BEFEHL.Spalte) + oSqlCommand = oSqlCommand.Replace(element.Value, INDEX_SQL_BEFEHL.Spalte) ElseIf element.Value.ToUpper = "[%VIEW]" Then ' den Platzhalter für den auszulesenden View durch den Viewnamen ersetzen - SqlString = SqlString.Replace(element.Value, INDEX_SQL_BEFEHL.From) + oSqlCommand = oSqlCommand.Replace(element.Value, INDEX_SQL_BEFEHL.From) End If End If Next ' zum nächsten Wert in der SQL-Anweisung gehen - result &= vbNewLine & " " & SqlString + result &= vbNewLine & " " & oSqlCommand ' wenn kein error_in_Indexierung aufgetreten ist If error_in_Indexierung = False Then @@ -943,29 +946,29 @@ Public Class frmNIHauptseite _Logger.Debug("Anzahl Elemente: " & Anzahl_NI_Werte) 'MsgBox("Aha ein Vektorindex" & vbNewLine & "Anzahl Elemente: " & Anzahl_NI_Werte) - Dim selectstring = SqlString + Dim selectstring = oSqlCommand Dim i As Integer = 0 For Each obj As Object In Arr 'Im Select den Objektverweis mit Werta aus Vektorfeld ersetzen - SqlString = selectstring + oSqlCommand = selectstring ' MsgBox(obj.ToString) - SqlString = SqlString.Replace("System.Object[]", obj.ToString) + oSqlCommand = oSqlCommand.Replace("System.Object[]", obj.ToString) 'Select-Befehl an Array übergeben - selectArray(i) = SqlString + selectArray(i) = oSqlCommand '_Logger.Info("SELECT-BEFEHL: " & selectArray(i)) i += 1 Next Else ReDim Preserve selectArray(0) 'MsgBox("Nur ein Einfachindex :(" & vbNewLine & IndexwertAusWindream.ToString) - selectArray(0) = SqlString + selectArray(0) = oSqlCommand _Logger.Debug("Indexierung gegen einen Einfachindex") End If Else ReDim Preserve selectArray(0) 'MsgBox("Nur ein Einfachindex :(" & vbNewLine & IndexwertAusWindream.ToString) - selectArray(0) = SqlString - _Logger.Warn("IndexwertAusWindream Is Nothing: Select: '" & selectArray(0) & "'") + selectArray(0) = oSqlCommand + _Logger.Warn("IndexwertAusWindream Is Nothing: Select: '" & oSqlCommand & "'") End If @@ -1141,13 +1144,19 @@ Public Class frmNIHauptseite Try _Logger.Debug("Arraygößen werden angepasst:") ' die Arraygrößen anpassen - ReDim Preserve Indexe(verknüpfungZähler) - ReDim Preserve NI_Values(verknüpfungZähler) + ReDim Preserve oNiArrayIndexe(verknüpfungZähler) + ReDim Preserve oNiArrayValues(verknüpfungZähler) ' den angegebenen Index eintragen - Indexe(verknüpfungZähler) = INDEX_SQL_BEFEHL.Index + oNiArrayIndexe(verknüpfungZähler) = INDEX_SQL_BEFEHL.Index ' den, übergebenen/gefundenen IndexWert, eintragen - NI_Values(verknüpfungZähler) = Convert.ToString(_NidxWert) + oNiArrayValues(verknüpfungZähler) = Convert.ToString(_NidxWert) + + Dim oRow As DataRow = myNIDatatable.NewRow + oRow(0) = INDEX_SQL_BEFEHL.Index + oRow(1) = Convert.ToString(_NidxWert) + myNIDatatable.Rows.Add(oRow) + _Logger.Debug("INDEXWERT: '" & Convert.ToString(_NidxWert) & "'") verknüpfungZähler += 1 Catch ex As Exception @@ -1160,15 +1169,20 @@ Public Class frmNIHauptseite End If If IndexwertAusWindream.GetType.ToString.Contains("System.Object") Then ' die Arraygrößen anpassen - ReDim Preserve Indexe(verknüpfungZähler) - ReDim Preserve NI_Values(verknüpfungZähler) + ReDim Preserve oNiArrayIndexe(verknüpfungZähler) + ReDim Preserve oNiArrayValues(verknüpfungZähler) ' den angegebenen Index eintragen - Indexe(verknüpfungZähler) = INDEX_SQL_BEFEHL.Index + oNiArrayIndexe(verknüpfungZähler) = INDEX_SQL_BEFEHL.Index ' den, übergebenen/gefundenen IndexWert, eintragen - NI_Values(verknüpfungZähler) = Convert.ToString("") + oNiArrayValues(verknüpfungZähler) = Convert.ToString("") _Logger.Debug("Nachindexwert ist Object") verknüpfungZähler += 1 + + Dim oRow As DataRow = myNIDatatable.NewRow + oRow(0) = INDEX_SQL_BEFEHL.Index + oRow(1) = Convert.ToString("") + myNIDatatable.Rows.Add(oRow) Else '_Logger.Warn("SQL-Abfrage ergab kein Ergebnis") If aktivesProfil.Ni_Art.ToLower = "xml" Then @@ -1208,7 +1222,9 @@ Public Class frmNIHauptseite '############################################################################################### '#### Nachindexierung ########################################################################## Dim sw As New ClassStopwatch("RunIndexing_Case1") - error_in_Indexierung = Me._windreamNI.RunIndexing(dokument, Indexe, NI_Values, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString) + Dim mmdf = myNIDatatable.Rows.Count + + error_in_Indexierung = Me._windreamNI.RunIndexing(dokument, oNiArrayIndexe, oNiArrayValues, MyDataset, aktivesProfil.Profilname, aktivesProfil.DokumenttypString) Dim msg = sw.Done If msg <> "" Then _Logger.Info($"SWResult: {msg}") '#### Nachindexierung Ende ##################################################################### @@ -1217,12 +1233,12 @@ Public Class frmNIHauptseite _Logger.Debug("error_in_Indexierung is True - none of following steps will be run!") End If 'Wenn ein SQL-Ergebnis im Durchlauf einen Wert lieferte wird der finale Index auf True gesetzt - If NI_Values Is Nothing = False And Not error_in_Indexierung Then - If Me.aktivesProfil.finalerIndex <> "" And Not error_in_Indexierung And NI_Values.Length >= 1 And NI_Values(0) <> "" Then + If oNiArrayValues Is Nothing = False And Not error_in_Indexierung Then + If Me.aktivesProfil.finalerIndex <> "" And Not error_in_Indexierung And oNiArrayValues.Length >= 1 And oNiArrayValues(0) <> "" Then Me._windreamNI.SetfinalIndex(dokument, Me.aktivesProfil.finalerIndex, True) End If '###### Spezifisches SQL nach jeder Datei! - If Me.aktivesProfil.SQL_Anweisung IsNot Nothing And Not error_in_Indexierung And NI_Values.Length >= 1 And NI_Values(0) <> "" Then + If Me.aktivesProfil.SQL_Anweisung IsNot Nothing And Not error_in_Indexierung And oNiArrayValues.Length >= 1 And oNiArrayValues(0) <> "" Then If Me.aktivesProfil.SQL_Anweisung.StartsWith("EXECUTEVB") Then _Logger.Debug("Execute VB-Script after indexing......") Dim anweisung As String = Me.aktivesProfil.SQL_Anweisung.Replace("EXECUTEVB ", "") @@ -1384,11 +1400,11 @@ Public Class frmNIHauptseite End If End If Else - If IsNothing(NI_Values) Then + If IsNothing(oNiArrayValues) Then _Logger.Debug("NI_Values is nothing!") Else - _Logger.Debug("NI_Values.Length: " & NI_Values.Length) - _Logger.Debug("NI_Values(0): " & NI_Values(0)) + _Logger.Debug("NI_Values.Length: " & oNiArrayValues.Length) + _Logger.Debug("NI_Values(0): " & oNiArrayValues(0)) End If End If @@ -1405,7 +1421,7 @@ Public Class frmNIHauptseite End Try If valid = True Then 'nur Zurücksetzten wenn Wert zuweisbar - If (NI_Values.Length = 1 And NI_Values(0) = "") = False Then + If (oNiArrayValues.Length = 1 And oNiArrayValues(0) = "") = False Then _Logger.Debug("Dokument sollte validiert werden - Nun erfolgreich indexiert - also Index '" & aktivesProfil.IndexValidation & "' zurücksetzen!") 'Den Flag Validation wieder auf False setzen File_SetBooleanIndex(False, aktivesDokument, aktivesProfil.IndexValidation) @@ -1417,7 +1433,7 @@ Public Class frmNIHauptseite '###### Nachindexierung über XML - Löschen des Dokumentes ###### If unvollstaendig = False Then '##### Löschen der xml-Indexdatei - If NI_Values.Length = 1 And NI_Values(0) = "" Then + If oNiArrayValues.Length = 1 And oNiArrayValues(0) = "" Then _Logger.Debug("XML-Wert ist Leer und somit nicht auswertbar - Dok für Validierung markieren") 'Den Flag Validation auf True setzen File_SetBooleanIndex(True, aktivesDokument, aktivesProfil.IndexValidation) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index bbf4819..cd2c7a3 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -3355,8 +3355,11 @@ Public Class frmNIVerknuepfungen End Sub Sub Check_Save_VktInsState() If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then - Dim origstate = Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, - Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).getvktInsState + Dim par1 = Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text + Dim par2 = Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text + Dim par3 = Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text + Dim origstate = Me._selectedProfil._links.getLinkByValues(par1, par2, par3).getvktInsState + Dim vktState = Getvktinsert_State() If vktState <> origstate Then Changeinaction = True