Imports WINDREAMLib Imports WMOSRCHLib Public Class clsWindream_Index Inherits clsWindream_allgemein #Region "+++++ Konstanten +++++" Protected Const WMObjectEditModeObject = &H1F Protected Const WMObjectStreamOpenModeReadWrite = 2 Protected Const WMEntityObjectType = 10 Protected Const WMEntityDocument = 1 Const WMObjectVariableValueTypeUndefined = 0 Const WMObjectVariableValueTypeString = 1 Const WMObjectVariableValueTypeInteger = 2 Const WMObjectVariableValueTypeFloat = 3 Const WMObjectVariableValueTypeBoolean = 4 Const WMObjectVariableValueTypeDate = 5 Const WMObjectVariableValueTypeFixedPoint = 6 Const WMObjectVariableValueTypeTimeStamp = 7 Const WMObjectVariableValueTypeCurrency = 8 Const WMObjectVariableValueTypeTime = 9 Const WMObjectVariableValueTypeVariant = 10 Const WMObjectVariableValueTypeMask = &HFFF Const WMObjectVariableValueFlagMask = &HFFFFF000 Const WMObjectVariableValueTypeVector = &H1000 Const WMObjectVariableValueTypeFulltext = &H2000 Const WMObjectVariableValueTypeDefaultValue = &H4000 #End Region #Region "+++++ Variablen +++++" 'Private oController = CreateObject("WMOSrch.WMQuickSearch") 'As New WMOSearchController 'Private oController As New WMOSearchController Private oController As New WMOSearchController 'Dim srchQuick = CreateObject("WMOSrch.WMQuickSearch") 'As WMOSRCHLib.WMQuickSearch #End Region #Region "+++++ Allgemeine Methoden und Funktionen +++++" Sub New() MyBase.New() End Sub Private Shared Function IsNotEmpty(ByVal aValue As Object) If aValue IsNot Nothing Then Dim itsType As Type = aValue.GetType If itsType Is GetType(String) Then If Not aValue = "" Then Return True End If Return False Else Return True End If Else Return False End If End Function Private Function return_type(ByVal _wert As Object) Return _wert.GetType End Function Public Shared Function Run_indexing_Single(ByVal _value As String, ByVal _dok As WINDREAMLib.WMObject, ByVal _Indexname As String, dS As DataSet, profil As String, Objekttyp As String) 'Überprüfen ob Validierung bereits gesetzt wurde? Dim aktvalue = _dok.GetVariableValue(_Indexname) If aktvalue <> _value Then 'Validation muß angepasst werden ClassLogger.AddDetailLog(" - " & _Indexname & " 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 clsWindream_Index.RunIndexing(_dok, arrIndex, arrValue, profil, Objekttyp) Else 'Validation muß nicht angepasst werden ClassLogger.AddDetailLog(" - " & _Indexname & " bereits auf '" & _value.ToString & "' gesetzt") End If End Function Public Function GetIndex_Type(idxName) As String Try Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, idxName) 'den Variablentyp (String, Integer, ...) auslesen Dim vType = oAttribute.getVariableValue("dwAttrType") Dim Type As String Select Case (vType) 'Case WMObjectVariableValueTypeUndefined Case WMObjectVariableValueTypeString Type = "String" Case WMObjectVariableValueTypeInteger Type = "Integer" Case WMObjectVariableValueTypeFloat Type = "Float" Case WMObjectVariableValueTypeFixedPoint Type = "Point" Case WMObjectVariableValueTypeBoolean Type = "Boolean" Case WMObjectVariableValueTypeDate Type = "Date" Case WMObjectVariableValueTypeTimeStamp Type = "Timestamp" Case WMObjectVariableValueTypeCurrency Type = "Currency" Case WMObjectVariableValueTypeTime Type = "Time" Case WMObjectVariableValueTypeFloat Type = "Float" Case WMObjectVariableValueTypeVariant Type = "Varia´nt" Case WMObjectVariableValueTypeFulltext Type = "Fulltext" Case 4097 Type = "Vektor String" Case 4098 Type = "Vektor Numerisch" Case 4099 Type = "Vektor Float" Case 4101 Type = "Vektor Date" Case 4103 Type = "Vektor DateTime" Case 36865 Type = "Vektor Alpha" Case Else Type = "String Else" End Select Return Type Catch ex As Exception End Try End Function Public Shared Function RunIndexing_Vektor(ByVal oDocument As WMObject, ByVal Indizes As String(), ByVal aValues As String()) Try If Indizes IsNot Nothing And aValues IsNot Nothing Then If Not oDocument.aLocked Then oDocument.lock() If aValues.Length = 1 And aValues(0) = "" Then ClassLogger.Add(" >> RunIndexing_Vektor: Indexwert ist leer/Nothing - Keine Nachindexierung", False) Else 'Jetzt jeden Indexwert durchlaufen Dim indexname As String indexname = Indizes(0) ClassLogger.AddDetailLog(" - RunIndexing_Vektor: Indexname: " & indexname) 'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST ClassLogger.AddDetailLog(" - RunIndexing_Vektor: VEKTORFELD-Indexierung: Vorbereiten des Arrays") ' das entsprechende Attribut aus windream auslesen Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) ' den Variablentyp (String, Integer, ...) auslesen Dim vType = oAttribute.getVariableValue("dwAttrType") Select Case (vType) Case 4097 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4097 Vektor alphanumerisch") Case 4098 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4098 Vektor Numerisch") Case 4099 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4099 Vektor Kommazahl") Case 4101 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4101 Vektor Date") Case 4103 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4103 Vektor DateTime") Case 4107 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4107 Vektor Integer(64bit)") Case 36865 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 36865 Vektor alphanumerisch") End Select Dim myArray Dim Anzahl As Integer = aValues.Length - 1 'Vektorfeld wird mit EINEM Wert gefüllt If Anzahl = 0 Then ClassLogger.AddDetailLog(" - RunIndexing_Vektor: Vektorfeld wird mit EINEM Wert gefüllt ") ReDim myArray(0) Select Case (vType) Case 4097 myArray(0) = CStr(aValues(0)) Case 4098 myArray(0) = CInt(aValues(0).Replace(" ", "")) Case 4099 Dim str As String = aValues(0) str = str.ToString.Replace(" ", "") myArray(0) = CDbl(str.Replace(".", ",")) Case 4101 myArray(0) = CDate(aValues(0)) Case 4103 myArray(0) = aValues(0) Case 4107 myArray(0) = Convert.ToInt64(aValues(0)) Case 36865 myArray(0) = CStr(aValues(0)) End Select ClassLogger.AddDetailLog(" - RunIndexing_Vektor: Konvertierter Wert: " & myArray(0).ToString) Else ClassLogger.AddDetailLog(" - RunIndexing_Vektor: Vektorfeld wird mit MEHREREN Werten gefüllt ") 'Die Größe des Arrays festlegen ReDim myArray(Anzahl) Dim i1 As Integer = 0 For Each aValue As String In aValues Select Case (vType) Case 4107 Dim wert = aValue.Replace(" ", "") wert = Convert.ToInt64(wert) 'ToInt64 myArray(i1) = wert Case 4097 myArray(i1) = CStr(aValue) Case 4098 Dim wert = aValue.Replace(" ", "") Dim convertValue If IsNumeric(wert) Then Try convertValue = CInt(wert) Catch ex As Exception ClassLogger.AddDetailLog(" - Wert muss in Int64 konvertiert werden") convertValue = Convert.ToInt64(wert) 'ToInt64 End Try Else ' ClassLoggerNI.Add(" - Indexierungswert '" & wert.ToString & "' kann nicht in Integer konvertiert werden") Return False End If myArray(i1) = convertValue Case 4099 myArray(i1) = CDbl(aValue.Replace(".", ",").Replace(" ", "")) Case 4101 myArray(i1) = CDate(aValue) Case 4103 myArray(i1) = aValue Case 36865 myArray(i1) = CStr(aValue) Case Else myArray(i1) = CStr(aValue) End Select i1 += 1 Next End If 'Jetzt die Nachindexierung für Vektor-Felder oDocument.SetVariableValue(indexname, myArray) ClassLogger.AddDetailLog(" - RunIndexing_Vektor: 'SetVariableValue' für VEKTOR erfolgreich") oDocument.Save() oDocument.unlock() ClassLogger.AddDetailLog(" - RunIndexing_Vektor: Indexierung erfolgreich beendet (Save und Unlock durchgeführt)") Return True End If Else ClassLogger.Add(" >> RunIndexing_Vektor: Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!", True) Return False End If End If Catch ex As Exception ClassLogger.Add("## Fehler in RunIndexing_Vektor - Fehler: " & ex.Message, True, "RunIndexingVektor") oDocument.Save() oDocument.unlock() Return False End Try End Function Public Shared Function RunIndexing(ByVal oDocument As WMObject, ByVal Indizes() As String, ByVal aValues() As Object, Profil As String, Objekttyp As String) Try If Indizes IsNot Nothing And aValues IsNot Nothing Then If Not oDocument.aLocked Then oDocument.lock() Dim i As Integer = 0 Dim indexname As String If aValues.Length = 1 And aValues(0) = "" Then ClassLogger.AddDetailLog(" - Indexwert ist leer/Nothing - Keine Nachindexierung") End If ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde If oDocument.aObjectType.aName <> Objekttyp Then ' ihr den entsprechenden Dokumenttyp zuweisen oDocument.aObjectType = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, Objekttyp) ' WMObject.aObjectType = selectedProfile.Dokumenttyp ClassLogger.AddDetailLog(" - Objekttyp war '" & oDocument.aObjectType.aName & "' und wurde in '" & Objekttyp & "' geändert.") Else ClassLogger.AddDetailLog(" - Objekttyp war bereits gesetzts") End If Try oDocument.Save() Catch ex As Exception ' wenn es einen Fehler beim speichern gab, dann konnte auch kein Dokumenttyp gesetzt werden -> es kann also auch keine ' Indexierung stattfinden und die Indexierung muss nicht fortgesetzt werden Return False End Try 'Jetzt jeden Indexwert durchlaufen For Each aName As String In Indizes indexname = aName ' das entsprechende Attribut aus windream auslesen Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, Indizes(i)) ' den Variablentyp (String, Integer, ...) auslesen Dim vType = oAttribute.getVariableValue("dwAttrType") ' wenn in aValues an Position i ein Wert steht If IsNotEmpty(aValues(i)) Then Dim _int As Boolean = False Dim _date As Boolean = False Dim _dbl As Boolean = False Dim _bool As Boolean = False 'If indexname = "Tournr" Then ' MsgBox("Index: " & indexname & vbNewLine & "wert: " & aValues(i), MsgBoxStyle.Information, "Index: " & aName.ToString) 'End If ClassLogger.AddDetailLog(" > Indexierung von Index '" & indexname & "'") 'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87") Dim value = aValues(i) Dim convertValue Dim vektor As Boolean = False 'Den Typ des Index-Feldes auslesen 'MsgBox(value.GetType.ToString) Select Case (vType) 'Case WMObjectVariableValueTypeUndefined Case WMObjectVariableValueTypeString ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeString") convertValue = CStr(value) Case WMObjectVariableValueTypeInteger ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeInteger") value = value.ToString.Replace(" ", "") If IsNumeric(value) = False Then ClassLogger.AddDetailLog(" >> Achtung: Value '" & value & "' kann nicht in Zahl konvertiert werden!") End If value = value.ToString.Replace(" ", "") convertValue = CInt(value) _int = True Case WMObjectVariableValueTypeFloat ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeFloat") value = value.ToString.Replace(" ", "") convertValue = CDbl(value) Case WMObjectVariableValueTypeFixedPoint ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint") value = value.ToString.Replace(" ", "") convertValue = CDbl(value) _dbl = True Case WMObjectVariableValueTypeBoolean ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeBoolean") convertValue = CBool(value) _bool = True Case WMObjectVariableValueTypeDate ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeDate") _date = True 'Dim _date As Date = value convertValue = value Case WMObjectVariableValueTypeTimeStamp ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp") convertValue = CDbl(value) Case WMObjectVariableValueTypeCurrency ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeCurrency") 'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(value)) convertValue = aValueWrapper Case WMObjectVariableValueTypeTime ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeTime") 'If ((value)) Then ' convertValue = CDate(value) 'Else ' convertValue = "" 'End If 'Dim _date As Date = value convertValue = convertValue '*_date.ToShortTimeString Case WMObjectVariableValueTypeFloat ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeFloat") convertValue = CStr(value) Case WMObjectVariableValueTypeVariant ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeVariant") convertValue = CStr(value) Case WMObjectVariableValueTypeFulltext ClassLogger.AddDetailLog(" - Typ des windream-Indexes: WMObjectVariableValueTypeFulltext") convertValue = CStr(value) Case 4097 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4097 Vektor alphanumerisch") 'Vektor alphanumerisch vektor = True Case 4098 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4098 Vektor Numerisch") 'Vektor Numerisch vektor = True Case 4099 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4099 Vektor Kommazahl") 'Vektor Kommazahl vektor = True Case 4101 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4101 Vektor Date") 'Vektor Kommazahl vektor = True Case 4103 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4103 Vektor DateTime") 'Vektor DateTime vektor = True Case 4107 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 4107 Integer 64bit") vektor = True Case 36865 ClassLogger.AddDetailLog(" - Typ des windream-Indexes: 36865 Vektor alphanumerisch") 'Vektor Kommazahl vektor = True Case Else ClassLogger.AddDetailLog(" - Typ des windream-Indexes konnte nicht bestimmt werden!") ClassLogger.AddDetailLog(" - Versuch des Auslesens (vType): " & vType) 'MsgBox(vType & vbNewLine & CStr(value), MsgBoxStyle.Exclamation, "Marlon-Case Else") convertValue = "" End Select If vektor = False Then If convertValue.ToString Is Nothing = False Then ClassLogger.AddDetailLog(" - Konvertierter Wert: '" & convertValue.ToString & "'") End If End If '############################################################################################ '####################### Der eigentliche Indexierungsvorgang ################################ '############################################################################################ If vektor = False Then If convertValue.ToString Is Nothing = False Then ClassLogger.AddDetailLog(" - Versuch dem Dok einen Index zuzuweisen: oDocument.SetVariableValue(" & aName & ", " & convertValue & ")") If _int = True Then convertValue = convertValue.ToString.Replace(" ", "") oDocument.SetVariableValue(aName, CInt(convertValue)) ElseIf _date = True Then oDocument.SetVariableValue(aName, CDate(convertValue)) ElseIf _bool Then oDocument.SetVariableValue(aName, CBool(convertValue)) ElseIf _dbl Then convertValue = convertValue.ToString.Replace(" ", "") oDocument.SetVariableValue(aName, CDbl(convertValue)) Else oDocument.SetVariableValue(aName, convertValue) End If ClassLogger.Add(" >> Index '" & aName & "' wurde geschrieben", False) ClassLogger.Add("", False) Else ClassLogger.Add(" >> Kein Indexwert vorhanden", False) End If Else 'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST ClassLogger.AddDetailLog(" - VEKTORFELD: Vorbereiten des Arrays") Dim myArray() Dim DS As DataSet Dim DT As DataTable Dim DR As DataRow ' --- DataSet zuweisen DS = New windream_Result_Handler.MyDataset ' --- Zugriff auf Tabelle DT = DS.Tables("TBVEKTOR_INDEX") ' --- den Filter auf den Indexnamen setzen Dim expression As String expression = "Indexname = '" & aName.ToString & "'" Dim foundRows() As DataRow ' Use the Select method to find all rows matching the filter. foundRows = DT.Select(expression) 'For Each row As DataRow In DT.Rows 'MsgBox(aName & vbNewLine & row.Item("Indexname") & vbNewLine & CStr(row.Item("Wert"))) 'Next Dim Anzahl As Integer = foundRows.Count 'Vektorfeld wird mit EINEM Wert gefüllt If Anzahl = 0 Then ClassLogger.AddDetailLog(" - Vektorfeld wird mit EINEM Wert gefüllt ") ReDim myArray(0) Select Case vType Case 36865 'Umwandeln in String myArray(0) = CStr(value) Case 4097 'Umwandeln in String myArray(0) = CStr(value) Case 4098 'Umwandeln in Integer value = value.ToString.Replace(" ", "") myArray(0) = CInt(value) Case 4099 Dim Str As String = value Str = Str.ToString.Replace(" ", "") 'Umwandeln in Double myArray(0) = CDbl(Str.Replace(".", ",")) Case 4101 'Umwandeln in Date myArray(0) = CDate(value) Case 4107 myArray(0) = Convert.ToInt64(value) Case 4103 'Umwandeln in Datum Uhrzeit myArray(0) = value Case Else 'Umwandeln in String myArray(0) = CStr(value) End Select ClassLogger.AddDetailLog(" - Konvertierter Wert: " & myArray(0).ToString) Else ClassLogger.AddDetailLog(" - Vektorfeld wird mit MEHREREN Werten gefüllt ") Select Case vType Case 36865 'Vektortyp ALPHANUMERISCH 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then myArray(i1) = CStr(DR.Item("Value")) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next Case 4097 'Vektortyp ALPHANUMERISCH 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then myArray(i1) = CStr(DR.Item("Value")) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next Case 4107 ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then myArray(i1) = Convert.ToInt64((DR.Item("Value"))) i1 = i1 + 1 End If Next Case 4098 'Vektortyp NUMERISCH 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then Dim v As String = DR.Item("Value").ToString.Replace(" ", "") myArray(i1) = CInt(v) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next Case 4099 'Vektortyp FLOAT 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then Dim Str As String = DR.Item("Value") Str = Str.ToString.Replace(" ", "") myArray(i1) = CDbl(Str.Replace(".", ",")) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next Case 4101 'Vektortyp DATE 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then Dim Str As String = DR.Item("Value") myArray(i1) = CDate(Str.Replace(".", ",")) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next Case Else 'Vektortyp ALPHANUMERISCH 'Die Größe des Arrays festlegen ReDim myArray(Anzahl - 1) Dim i1 As Integer = 0 'Die Datatable durchlaufen und Werte für den Index in Array schreiben For Each DR In DT.Rows If DR.Item("Indexname") = aName.ToString Then myArray(i1) = CStr(DR.Item("Value")) ClassLogger.AddDetailLog(" - Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString) i1 = i1 + 1 End If Next End Select End If 'Jetzt die Nachindexierung für Vektor-Felder oDocument.SetVariableValue(aName, myArray) ClassLogger.AddDetailLog(" - 'SetVariableValue' für VEKTOR erfolgreich") End If Else ClassLogger.AddDetailLog(" >> Array der Indexwerte ist leer/Nothing - Keine Nachindexierung") End If i += 1 Next ' oDocument.LockRights() 'SetRights(WMObject, User) oDocument.Save() oDocument.unlock() ClassLogger.AddDetailLog(" > Indexierung erfolgreich beendet (Save und Unlock durchgeführt)") ClassLogger.AddDetailLog("") Return False Else ClassLogger.Add(" >> Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!", False) 'oDocument.unlock() Return True End If End If Catch ex As Exception ClassLogger.Add(ex.Message, True, "ClassSearchResult.RunIndexing") oDocument.Save() oDocument.unlock() Return True End Try End Function #End Region #Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++" Public Function GetSearchDocuments(ByVal wdfLocation As String) If System.IO.File.Exists(wdfLocation) Then Try Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length) oController.CheckSearchProfile(wdfLocation.ToLower) Dim suchTyp = oController.SearchProfileTargetProgID Dim ExSettings As Object Dim oSearch As Object ExSettings = oController.SearchProfileExSettings If ExSettings = 0 Then ExSettings = 7 Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch") Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch") Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch") '' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments() Select Case suchTyp.ToString.ToUpper Case "WMOSRCH.WMQUICKSEARCH" srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) oConnect.LoginSession(srchQuick.WMSession) srchQuick.ClearSearch() srchQuick.SearchProfilePath = ProfilePath srchQuick.LoadSearchProfile(ProfileName) oSearch = srchQuick.GetSearch() Case "WMOSRCH.WMINDEXSEARCH" srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) oConnect.LoginSession(srchIndex.WMSession) srchIndex.ClearSearch() srchIndex.SearchProfilePath = ProfilePath srchIndex.LoadSearchProfile(ProfileName) oSearch = srchIndex.GetSearch() Case "WMOSRCH.WMOBJECTTYPESEARCH" srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) oConnect.LoginSession(srchObjectType.WMSession) srchObjectType.ClearSearch() srchObjectType.SearchProfilePath = ProfilePath srchObjectType.LoadSearchProfile(ProfileName) oSearch = srchObjectType.GetSearch() Case Else ClassLogger.Add("KEIN GÜLTIGER WINDREAM-SUCHTYP", True, "GetSearchDocuments") Return Nothing End Select Dim WMObjects As Object WMObjects = oSearch.Execute Return oSearch.execute Catch ex As Exception ' bei einem Fehler einen Eintrag in der Logdatei machen ClassLogger.Add("Unvorhergesehener Fehler: " & ex.Message, True, "GetSearchDocuments") Return Nothing End Try End If Return Nothing End Function ''' Liefert den Wert eines Indexes als String ''' _indexname = Name des zu überprüfenden Indexfeldes Public Function GetValueforIndex(ByVal _fullfilepath As String, _indexname As String) Try Const WMEntityDocument = 1 Dim IndexwertAusWindream As Object = Nothing Dim _dok As WINDREAMLib.WMObject _dok = Nothing _dok = oSession.GetWMObjectByPath(WMEntityDocument, _fullfilepath) 'WINDREAMLib.WMEntity.WMEntityDocument IndexwertAusWindream = _dok.GetVariableValue(_indexname) Return IndexwertAusWindream.ToString Catch ex As Exception 'MsgBox(ex.Message) Return Nothing End Try End Function #End Region End Class