This commit is contained in:
SchreiberM
2015-08-19 14:36:21 +02:00
parent 1910ac0a74
commit 524552a2da
25 changed files with 3961 additions and 3397 deletions

View File

@@ -5,6 +5,8 @@ Imports System.Text.RegularExpressions
Imports Independentsoft
Imports Oracle.ManagedDataAccess.Client
Imports System.Text
Imports System.Security.AccessControl
Imports System.Security.Principal
Public Class frmIndex
#Region "+++++ Variablen ++++++"
@@ -155,7 +157,7 @@ Public Class frmIndex
g.Dispose()
End If
Get_NextComboBoxResults(cmb)
SendKeys.Send("{TAB}")
End If
@@ -334,7 +336,7 @@ Public Class frmIndex
' Return 99
' End Try
' End Function
Function GetManIndex_Value(indexname As String)
Function GetManIndex_Value(indexname As String, RequestFor As String)
Try
Dim DT As DataTable
Dim DR As DataRow
@@ -342,18 +344,40 @@ Public Class frmIndex
For Each DR In DT.Rows
If DR.Item("INDEXNAME").ToString.ToLower = indexname.ToLower Then
If DR.Item("Indexiert") = True Then
If DR.Item("Indexwert").ToString <> String.Empty Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Manueller Index: " & indexname, False)
If LogErrorsOnly = False Then ClassLogger.Add(" ...Zurückgegebener manueller Indexwert: " & DR.Item("Indexwert"), False)
Return DR.Item("Indexwert")
Else
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & indexname & "')", MyConnectionString, True)
If optional_index = False Then
ClassLogger.Add(" >> Achtung, der Indexwert des manuellen Indexes '" & indexname & "' ist String.empty!", False)
showlblhinweis("Indexiert = True - Der Index: " & DR.Item("INDEXNAME") & " wurde nicht ordnungsgemäss indexiert! - Automatischer Index konnte nicht gesetzt werden!")
End If
Return ""
End If
If LogErrorsOnly = False Then ClassLogger.Add(" ...Manueller Index: " & indexname, False)
Select Case RequestFor
Case "FILE"
If DR.Item("Indexwert_File").ToString <> String.Empty Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Es liegt ein separater nachbearbeiteter Wert für die Dateibenennung vor: " & DR.Item("Indexwert_File").ToString, False)
If LogErrorsOnly = False Then ClassLogger.Add(" ...Zurückgegebener NachbearbeitungsWert: " & DR.Item("Indexwert_File"), False)
Return DR.Item("Indexwert_File")
Else
If DR.Item("Indexwert").ToString <> String.Empty Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Zurückgegebener manueller Indexwert: " & DR.Item("Indexwert"), False)
Console.WriteLine("Rückgabe manueller wert: " & DR.Item("Indexwert"))
Return DR.Item("Indexwert")
Else
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & indexname & "')", MyConnectionString, True)
If optional_index = False Then
ClassLogger.Add(" >> Achtung, der Indexwert des manuellen Indexes '" & indexname & "' ist String.empty!", False)
showlblhinweis("Indexiert = True - Der Index: " & DR.Item("INDEXNAME") & " wurde nicht ordnungsgemäss indexiert! - Automatischer Index konnte nicht gesetzt werden!")
End If
Return ""
End If
End If
Case Else
If DR.Item("Indexwert").ToString <> String.Empty Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Zurückgegebener manueller Indexwert: " & DR.Item("Indexwert"), False)
Return DR.Item("Indexwert")
Else
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & indexname & "')", MyConnectionString, True)
If optional_index = False Then
ClassLogger.Add(" >> Achtung, der Indexwert des manuellen Indexes '" & indexname & "' ist String.empty!", False)
showlblhinweis("Indexiert = True - Der Index: " & DR.Item("INDEXNAME") & " wurde nicht ordnungsgemäss indexiert! - Automatischer Index konnte nicht gesetzt werden!")
End If
Return ""
End If
End Select
Else
showlblhinweis("Der Index: " & DR.Item("INDEXNAME") & " wurde nicht ordnungsgemäss indexiert! - Automatischer Index konnte nicht gesetzt werden!")
Return ""
@@ -467,7 +491,7 @@ Public Class frmIndex
runinLZ = True
If LogErrorsOnly = False Then ClassLogger.Add(" ...sql enthält Platzhalter und wird erst während der Laufzeit gefüllt!", False)
End If
Dim newCMB As ComboBox
@@ -529,9 +553,9 @@ Public Class frmIndex
End If
End If
End If
@@ -717,25 +741,39 @@ Public Class frmIndex
End Function
Sub Indexwert_Postprocessing(indexname As String, wert As String)
Sub Indexwert_Postprocessing(indexname As String, wert_in As String)
Try
Dim DT As DataTable
Dim DR As DataRow
DT = MyDataset.VWDDINDEX_MAN
Dim value_post As String = ""
For Each DR In DT.Rows
If DR.Item("INDEXNAME") = indexname Then
Dim idxid As Integer = DR.Item("GUID")
If idxid > 0 Then
' In jedem Fall schon mal den Wert einfügen
DR.Item("Indexwert") = wert_in
'Die Nachbearbeitungsschritte laden
Dim DTNB As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBDD_INDEX_MAN_POSTPROCESSING WHERE IDXMAN_ID = " & idxid & " ORDER BY SEQUENCE")
'FILE AND INDEX
'Zuerst nur die Fälle für die Variante ONLY FILE/FOLDER
Dim DTNB As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBDD_INDEX_MAN_POSTPROCESSING WHERE IDXMAN_ID = " & idxid & " AND VARIANT = 'ONLY FILE/FOLDER' ORDER BY SEQUENCE")
If DTNB Is Nothing = False Then
If DTNB.Rows.Count > 0 Then
wert = ClassPostprocessing.Get_Nachbearbeitung_Wert(wert, DTNB)
value_post = ClassPostprocessing.Get_Nachbearbeitung_Wert(wert_in, DTNB)
DR.Item("Indexwert") = wert_in
DR.Item("Indexwert_File") = value_post
End If
End If
'Jetzt die Fälle für die Variante FILE AND INDEX
DTNB = Nothing
DTNB = ClassDatabase.Return_Datatable("SELECT * FROM TBDD_INDEX_MAN_POSTPROCESSING WHERE IDXMAN_ID = " & idxid & " AND VARIANT = 'FILE AND INDEX' ORDER BY SEQUENCE")
If DTNB Is Nothing = False Then
If DTNB.Rows.Count > 0 Then
value_post = ClassPostprocessing.Get_Nachbearbeitung_Wert(wert_in, DTNB)
DR.Item("Indexwert") = value_post
End If
End If
End If
DR.Item("Indexwert") = wert
DR.Item("Indexiert") = True
End If
Next
@@ -823,7 +861,7 @@ Public Class frmIndex
Case "M"
If LogErrorsOnly = False Then ClassLogger.Add(" ...Manueller Index wird geprüft...", False)
Dim Indexname = element.Value.Substring(3, element.Value.Length - 4)
Dim value As String = GetManIndex_Value(element.Value.Substring(3, element.Value.Length - 4))
Dim value As String = GetManIndex_Value(element.Value.Substring(3, element.Value.Length - 4), "FILE")
If value <> String.Empty Then
DATEINAME = DATEINAME.Replace(element.Value, value)
NewFileString = DATEINAME
@@ -848,7 +886,7 @@ Public Class frmIndex
AnzahlIndexe += 1
sql_history_Index_Values = sql_history_Index_Values & ", '" & value & "'"
End If
Else
ClassLogger.Add(" >> Der Indexvalue für Index '" & Indexname & "' ist String.Empty", False)
err = True
@@ -945,9 +983,12 @@ Public Class frmIndex
'Manuelle Indexe Indexieren
Dim DTMan As DataTable = MyDataset.VWDDINDEX_MAN
If DTMan.Rows.Count > 0 Then
Dim Count As Integer = 0
For Each row As DataRow In DTMan.Rows
If CBool(row.Item("Indexiert")) = True And row.Item("Indexwert").ToString <> "" Then
Dim idxvalue = row.Item("Indexwert")
Dim indexname = row.Item("WD_INDEX").ToString
If CBool(row.Item("Indexiert")) = True And idxvalue.ToString <> "" Then
'Den Indexwert zwischenspeichern
Dim DTTemp As DataTable = MyDataset.TBTEMP_INDEXRESULTS
Dim rowexists As Boolean = False
@@ -969,8 +1010,8 @@ Public Class frmIndex
End If
Dim indexname = row.Item("WD_INDEX").ToString
Dim idxvalue = row.Item("Indexwert")
If LogErrorsOnly = False Then ClassLogger.Add(" ...Manueller Indexvalue: " & idxvalue.ToString, False)
Count += 1
indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_NEWFILENAME, indexname, idxvalue)
@@ -988,8 +1029,6 @@ Public Class frmIndex
If DTAut.Rows.Count > 0 Then
Dim Count As Integer = 0
For Each row As DataRow In DTAut.Rows
Console.WriteLine(row.Item("Indexwert"))
Console.WriteLine(row.Item("Indexiert").ToString)
If CBool(row.Item("Indexiert")) = True And row.Item("Indexwert").ToString <> "" Then
Dim indexname = row.Item("INDEXNAME").ToString
Dim idxvalue = row.Item("Indexwert")
@@ -1299,7 +1338,7 @@ Public Class frmIndex
'If Not IsNothing(DocView) And viewer_string <> "" Then
' DocView.CloseView(viewer_string, 0)
'Else
'End If
End Sub
Private Sub frmIndex_Load(sender As Object, e As System.EventArgs) Handles Me.Load
@@ -1339,6 +1378,7 @@ Public Class frmIndex
End If
Load_String()
MULTIFILES = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBGI_FILES_USER WHERE WORKED = 0 AND GUID <> " & CURRENT_WORKFILE_GUID & " AND UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')", MyConnectionString, True)
MULTIINDEXING_ACTIVE = False
If MULTIFILES > 0 Then
chkMultiIndexer.Text = "Multi-Indexing - Alle nachfolgenden Dateien (" & MULTIFILES & ") identisch indexieren"
chkMultiIndexer.Checked = False
@@ -1505,12 +1545,6 @@ Public Class frmIndex
cmbName.Items.Add(Value)
End Sub
'
' Private Sub lblhinweis_Click(sender As System.Object, e As System.EventArgs) Handles lblhinweis.Click
' End Sub
Function FillIndexe_Autom(dokart_id As Integer)
Try
Me.VWINDEX_AUTOMTableAdapter.Fill(Me.MyDataset.VWDDINDEX_AUTOM, CURRENT_DOKART_ID)
@@ -1518,8 +1552,9 @@ Public Class frmIndex
If DT_INDEXAUTOM.Rows.Count > 0 Then
' MsgBox(DT.Rows.Count.ToString)
For Each DR_AUTOINDEX As DataRow In DT_INDEXAUTOM.Rows
If LogErrorsOnly = False Then ClassLogger.Add(" ...Build Automatischer Index '" & DR_AUTOINDEX.Item("INDEXNAME") & "'", False)
If DR_AUTOINDEX.Item("SQL_RESULT").ToString <> String.Empty Then
Dim indexname As String = DR_AUTOINDEX.Item("INDEXNAME")
If LogErrorsOnly = False Then ClassLogger.Add(" ...Build Automatischer Index '" & indexname & "'", False)
If DR_AUTOINDEX.Item("SQL_RESULT").ToString <> String.Empty And CBool(DR_AUTOINDEX.Item("SQL_ACTIVE")) = True Then
' Regulären Ausdruck zum Auslesen der windream-Indexe definieren
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' SQL-String für aktuellen INdex laden
@@ -1538,7 +1573,7 @@ Public Class frmIndex
Dim elementOhneSonderzeichen As String = element.Value.Substring(2, element.Value.Length - 3)
If LogErrorsOnly = False Then ClassLogger.Add(" ...elementOhneSonderzeichen: '" & elementOhneSonderzeichen & "'", False)
'den Platzhalter im SQL-String durch den Wert ersetzen
Dim manIndexwert As String = GetManIndex_Value(elementOhneSonderzeichen)
Dim manIndexwert As String = GetManIndex_Value(elementOhneSonderzeichen, "IDX_AUTO")
If manIndexwert <> "" Then
SqlString = SqlString.Replace(element.Value, manIndexwert)
If LogErrorsOnly = False Then ClassLogger.Add(" ...zusammengesetzter SQL-String: " & SqlString, False)
@@ -1562,10 +1597,35 @@ Public Class frmIndex
Else
If Not IsDBNull(DR_AUTOINDEX.Item("VALUE")) Then
If DR_AUTOINDEX.Item("VALUE") <> "" Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Manueller Indexwert wird gespeichert: " & DR_AUTOINDEX.Item("VALUE"), False)
Console.WriteLine(DR_AUTOINDEX.Item("VALUE"))
Dim DEFAULTVALUE As String = DR_AUTOINDEX.Item("VALUE")
'Indexierung mit WindowsVariable
If DEFAULTVALUE.StartsWith("$") Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Indexierung mit einer Windowsvariable: '" & DEFAULTVALUE & "'", False)
Select Case DEFAULTVALUE.ToUpper
Case "$filename_ext".ToUpper
DEFAULTVALUE = Path.GetFileName(CURRENT_WORKFILE)
Case "$filename".ToUpper
DEFAULTVALUE = Path.GetFileNameWithoutExtension(CURRENT_WORKFILE)
Case "$FileCreateDate".ToUpper
Dim FI As New FileInfo(CURRENT_WORKFILE)
Dim CreationDate As Date = FI.CreationTime
DEFAULTVALUE = CreationDate.ToShortDateString
Case "$FileCreatedWho".ToUpper
Dim fs As FileSecurity = File.GetAccessControl(CURRENT_WORKFILE)
Dim sid As IdentityReference = fs.GetOwner(GetType(SecurityIdentifier))
Dim ntaccount As IdentityReference = sid.Translate(GetType(NTAccount))
Dim owner As String = ntaccount.ToString()
DEFAULTVALUE = owner
Case "$DateDDMMYYY".ToUpper
DEFAULTVALUE = System.DateTime.Now.ToShortDateString
End Select
If LogErrorsOnly = False Then ClassLogger.Add(" ...Ergebnis der Windowsvariable: '" & DEFAULTVALUE & "'", False)
Else
If LogErrorsOnly = False Then ClassLogger.Add(" ...Indexierung mit einem Festen Wert: '" & DEFAULTVALUE & "'", False)
End If
'Den Wert in der Zwischentabelle speichern
DR_AUTOINDEX.Item("Indexiert") = True
DR_AUTOINDEX.Item("Indexwert") = DR_AUTOINDEX.Item("VALUE")
DR_AUTOINDEX.Item("Indexwert") = DEFAULTVALUE
End If
End If
End If
@@ -1585,7 +1645,7 @@ Public Class frmIndex
Private Sub btnVorschau_Click(sender As System.Object, e As System.EventArgs)
PreviewFile()
End Sub
Sub PreviewFile()
Try
Dim Proc As New System.Diagnostics.Process
@@ -1770,7 +1830,7 @@ Public Class frmIndex
Return False
End Try
End Function
Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click
Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles btnOK.Click
lblhinweis.Visible = False
lblerror.Visible = False
Me.Cursor = Cursors.WaitCursor
@@ -1800,7 +1860,7 @@ Public Class frmIndex
Next
Me.Cursor = Cursors.Default
If err = False Then
MsgBox("Alle Dateien wurden mit Multiindexing erfolgreich verarbeitet!", MsgBoxStyle.Information, "Erfolgsmeldung:")
MsgBox("Alle Dateien wurden mit Multiindexing erfolgreich verarbeitet!", MsgBoxStyle.Information, "Erfolgsmeldung:")
Me.Close()
End If
End If
@@ -1846,7 +1906,7 @@ Public Class frmIndex
CrFolderForIndex(CURRENT_NEWFILENAME, Folder_for_index)
End If
End If
'Kein Fehler in Setzen der windream-Indizes
Dim Insert_String As String
@@ -1873,7 +1933,7 @@ Public Class frmIndex
End Try
End If
End If
Catch ex As Exception
MsgBox("Error in Insert-History - View logfile: " & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add(" - Fehler bei Insert-History - Fehler: " & vbNewLine & ex.Message)
@@ -1944,7 +2004,7 @@ Public Class frmIndex
Case "M"
Dim ManIndexname = element.Value.Substring(3, element.Value.Length - 4)
If LogErrorsOnly = False Then ClassLogger.Add(" ...Versuch den Indexwert aus '" & ManIndexname & "' auszulesen.", False)
Dim ManIndex_Value As String = GetManIndex_Value(ManIndexname)
Dim ManIndex_Value As String = GetManIndex_Value(ManIndexname, "FILE")
If LogErrorsOnly = False Then ClassLogger.Add(" ...Ergebnis/Wert für neuen Ordner: '" & ManIndexname & "'", False)
If Not ManIndex_Value = String.Empty Then
If IsDate(ManIndex_Value) Then
@@ -2163,4 +2223,14 @@ Public Class frmIndex
End Select
Me.Close()
End Sub
Private Sub chkMultiIndexer_CheckedChanged(sender As Object, e As EventArgs) Handles chkMultiIndexer.CheckedChanged
If chkMultiIndexer.Checked Then
Me.btnOK.Text = "Dateien indexieren"
MULTIINDEXING_ACTIVE = True
Else
Me.btnOK.Text = "Indexiere Datei"
MULTIINDEXING_ACTIVE = False
End If
End Sub
End Class