Importund Bugfixing

This commit is contained in:
Digital Data - Marlon Schreiber 2019-05-22 11:44:12 +02:00
parent 5a7731d7bd
commit 0228272fa6
5 changed files with 155 additions and 129 deletions

View File

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

View File

@ -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,6 +638,7 @@ Public Class clsNI_WorkFile
End Function
Private Shared Sub File_SetBooleanIndex(ByVal _value As Boolean, ByVal _dok As WINDREAMLib.WMObject, ByVal _Indexname As String)
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
@ -653,6 +658,8 @@ Public Class clsNI_WorkFile
'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

View File

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

View File

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

View File

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