This commit is contained in:
SchreiberM
2016-07-01 09:00:01 +02:00
parent b8f390b15b
commit fa66fe01eb
20 changed files with 1526 additions and 725 deletions

View File

@@ -540,239 +540,250 @@ Public Class ClassWindream
End Function
#End Region
Public Shared Function Stream_File(ByVal filenameQuelle As String, ByVal zielpfad As String, Optional ImportAll As Boolean = False)
aktWMObject = Nothing
If My.Computer.FileSystem.DirectoryExists(zielpfad) = False Then
My.Computer.FileSystem.CreateDirectory(zielpfad)
ClassLogger.Add(">> Zielverzeichnis neu erzeugt!", False)
End If
Const STREAM_BinaryObject = "BinaryObject"
If LogErrorsOnly = False Then ClassLogger.Add(" >> Stream_File wurde gestartet", False)
Dim endgültigerDateiname As String = ""
' Objekt für Datei und Zielverzeichnis anlegen
' Dim Quelldatei_Name As String = Path.GetFileName(filenameQuelle)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Quelldatei gelesen", False)
'########
Dim Zielverzeichnis As String = zielpfad
endgültigerDateiname = CURRENT_NEWFILENAME.Substring(2)
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert", False)
' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist
Dim dvr As New DriveInfo(vWLaufwerk & ":")
Dim freeSpace = dvr.TotalFreeSpace
Dim info As New FileInfo(filenameQuelle)
' Get length of the file.
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 -10
Try
aktWMObject = Nothing
If My.Computer.FileSystem.DirectoryExists(zielpfad) = False Then
My.Computer.FileSystem.CreateDirectory(zielpfad)
ClassLogger.Add(">> Zielverzeichnis neu erzeugt!", False)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei kopieren von " & filenameQuelle & " nach " & endgültigerDateiname & ".", False)
Dim Connect
Dim Session
Dim WMObject
Dim aFileIO
Dim aWMStream
Dim wmbrwsr
Dim dmsServer As String
If LogErrorsOnly = False Then ClassLogger.Add(" >> Connect definieren: CreateObject('Windream.WMConnect')", False)
Connect = CreateObject("Windream.WMConnect")
aFileIO = New WMOTOOLLib.WMFileIO
'If My.Settings.DLL_WMOTOOL = "" Then
' aFileIO = New WMOTOOLLib.WMFileIO
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Direkter Verweis auf New WMOTOOLLib.WMFileIO", False)
'Else
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'", False)
'End If
Const STREAM_BinaryObject = "BinaryObject"
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
'==================================================================
' get the current DMS-server to log in
'==================================================================
dmsServer = wmbrwsr.GetCurrentServer
'==================================================================
' create a session
'==================================================================
Session = CreateObject("Windream.WMSession", dmsServer)
'==================================================================
' login session
'==================================================================
Connect.LoginSession(Session)
Dim LoggedIn = Session.aLoggedin
If LoggedIn Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer, False)
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
Else
ClassLogger.Add(">> Login on dms-Server failed", False)
' MsgBox("Login failed. ")
End If
Const WMCOMEventWMSessionNeedIndex = 1
If LogErrorsOnly = False Then ClassLogger.Add(" >> Stream_File wurde gestartet", False)
Dim endgültigerDateiname As String = ""
' Objekt für Datei und Zielverzeichnis anlegen
' Dim Quelldatei_Name As String = Path.GetFileName(filenameQuelle)
'windream Objekte erstellen ohne Indexierungs-Event
Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
'==================================================================
' check if files exist
'==================================================================
If LogErrorsOnly = False Then ClassLogger.Add(" >> ÜBERPRÜFTER DATEINAME => " & endgültigerDateiname, False)
Dim wdFilexists As Boolean
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch auf die Datei in W: zuzugreifen und zu sperren...", False)
wdFilexists = Session.WMObjectExists(WMEntityDocument, endgültigerDateiname, 0, 0)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Quelldatei gelesen", False)
If wdFilexists = False Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei ist NICHT vorhanden, kann also einfach neu angelegt werden", False)
Err.Clear()
'########
Dim Zielverzeichnis As String = zielpfad
endgültigerDateiname = CURRENT_NEWFILENAME.Substring(2)
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert", False)
' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist
Dim dvr As New DriveInfo(vWLaufwerk & ":")
Dim freeSpace = dvr.TotalFreeSpace
Dim info As New FileInfo(filenameQuelle)
' Get length of the file.
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 -10
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei kopieren von " & filenameQuelle & " nach " & endgültigerDateiname & ".", False)
Dim Connect
Dim Session
Dim WMObject
Dim aFileIO
Dim aWMStream
Dim wmbrwsr
Dim dmsServer As String
If LogErrorsOnly = False Then ClassLogger.Add(" >> Connect definieren: CreateObject('Windream.WMConnect')", False)
Connect = CreateObject("Windream.WMConnect")
aFileIO = New WMOTOOLLib.WMFileIO
'If My.Settings.DLL_WMOTOOL = "" Then
' aFileIO = New WMOTOOLLib.WMFileIO
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Direkter Verweis auf New WMOTOOLLib.WMFileIO", False)
'Else
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'", False)
'End If
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
'==================================================================
' create an object
' get the current DMS-server to log in
'==================================================================
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
' MsgBox("Created file: " + endgültigerDateiname)
Else
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
If LogErrorsOnly = False Then ClassLogger.Add(" >> Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN", False)
Err.Clear()
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> WMObject zugewiesen", False)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> ENDGÜLTIGER DATEINAME => " & endgültigerDateiname, False)
If WMObject IsNot Nothing Then
' lock object for file system access (to change the file itself)
WMObject.lock()
' set fileIO the local source file
aFileIO.bstrOriginalFileName = filenameQuelle
If Err.Number > 0 Then
'MsgBox(Err.Number.ToString)
ClassLogger.Add(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
ClassLogger.Add(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'", False)
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
' MsgBox(Err.Description)
End If
' open the windream object's file stream for writing
aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> oWMStream erzeugt", False)
' give fileIO helper object the windream stream
aFileIO.aWMStream = aWMStream
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
' let fileIO object import the original file into windream
aFileIO.ImportOriginal(True)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
' MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Inhalt der Datei konnte übertragen werden", False)
' close the windream file stream
aWMStream.Close()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
' save new windream object
WMObject.save()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return Err.Number
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei konnte gespeichert werden", False)
' unlock the windream object
WMObject.unlock()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist
Dim info2 As New FileInfo(vWLaufwerk & ":\" & endgültigerDateiname)
Dim length1 As Long = info2.Length
If length1 > 0 And Err.Number = 0 Then
If endgültigerDateiname.StartsWith("\") Then
If endgültigerDateiname.StartsWith("\\") Then
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
Else
endgültigerDateiname = endgültigerDateiname
End If
Else
endgültigerDateiname = "\" & endgültigerDateiname
End If
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
aktWMObject = WMObject
Return True
dmsServer = wmbrwsr.GetCurrentServer
'==================================================================
' create a session
'==================================================================
Session = CreateObject("Windream.WMSession", dmsServer)
'==================================================================
' login session
'==================================================================
Connect.LoginSession(Session)
Dim LoggedIn = Session.aLoggedin
If LoggedIn Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer, False)
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
Else
If length = 0 Then
If ImportAll = False Then
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
ClassLogger.Add(" Error in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " was deleted")
Return False
Else
If endgültigerDateiname.StartsWith("\") Then
If endgültigerDateiname.StartsWith("\\") Then
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
Else
endgültigerDateiname = endgültigerDateiname
End If
Else
endgültigerDateiname = "\" & endgültigerDateiname
End If
ClassLogger.Add(">> ATTENTION in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " will be imported")
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
aktWMObject = WMObject
Return True
End If
Else
ClassLogger.Add("Error in Stream File - Error <> 0")
Return False
End If
ClassLogger.Add(">> Login on dms-Server failed", False)
' MsgBox("Login failed. ")
End If
Const WMCOMEventWMSessionNeedIndex = 1
'windream Objekte erstellen ohne Indexierungs-Event
Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
'==================================================================
' check if files exist
'==================================================================
If LogErrorsOnly = False Then ClassLogger.Add(" >> ÜBERPRÜFTER DATEINAME => " & endgültigerDateiname, False)
Dim wdFilexists As Boolean
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch auf die Datei in W: zuzugreifen und zu sperren...", False)
wdFilexists = Session.WMObjectExists(WMEntityDocument, endgültigerDateiname, 0, 0)
If wdFilexists = False Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei ist NICHT vorhanden, kann also einfach neu angelegt werden", False)
Err.Clear()
'==================================================================
' create an object
'==================================================================
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
' MsgBox("Created file: " + endgültigerDateiname)
Else
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
If LogErrorsOnly = False Then ClassLogger.Add(" >> Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN", False)
Err.Clear()
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> WMObject zugewiesen", False)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> ENDGÜLTIGER DATEINAME => " & endgültigerDateiname, False)
If WMObject IsNot Nothing Then
' lock object for file system access (to change the file itself)
WMObject.lock()
' set fileIO the local source file
aFileIO.bstrOriginalFileName = filenameQuelle
If Err.Number > 0 Then
'MsgBox(Err.Number.ToString)
ClassLogger.Add(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
ClassLogger.Add(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'", False)
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
' MsgBox(Err.Description)
End If
' open the windream object's file stream for writing
aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> oWMStream erzeugt", False)
' give fileIO helper object the windream stream
aFileIO.aWMStream = aWMStream
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
' let fileIO object import the original file into windream
aFileIO.ImportOriginal(True)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
' MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Inhalt der Datei konnte übertragen werden", False)
' close the windream file stream
aWMStream.Close()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
' save new windream object
WMObject.save()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return Err.Number
'MsgBox(Err.Description)
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei konnte gespeichert werden", False)
' unlock the windream object
WMObject.unlock()
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER bei WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Return False
'MsgBox(Err.Description)
End If
'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist
Dim info2 As New FileInfo(vWLaufwerk & ":\" & endgültigerDateiname)
Dim length1 As Long = info2.Length
If length1 > 0 And Err.Number = 0 Then
If endgültigerDateiname.StartsWith("\") Then
If endgültigerDateiname.StartsWith("\\") Then
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
Else
endgültigerDateiname = endgültigerDateiname
End If
Else
endgültigerDateiname = "\" & endgültigerDateiname
End If
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
aktWMObject = WMObject
Return True
Else
If length = 0 Then
If ImportAll = False Then
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
ClassLogger.Add(" Error in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " was deleted")
Return False
Else
If endgültigerDateiname.StartsWith("\") Then
If endgültigerDateiname.StartsWith("\\") Then
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
Else
endgültigerDateiname = endgültigerDateiname
End If
Else
endgültigerDateiname = "\" & endgültigerDateiname
End If
ClassLogger.Add(">> ATTENTION in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " will be imported")
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
'###
If CURRENT_FILEIN_WD.Contains("\\") Then
CURRENT_FILEIN_WD = CURRENT_FILEIN_WD.Replace("\\", "\")
End If
'###
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
aktWMObject = WMObject
Return True
End If
Else
ClassLogger.Add("Error in Stream File - Error <> 0")
Return False
End If
End If
Else
Return False
End If
Else
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert NICHT", False)
Return False
End If
Else
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert NICHT", False)
Catch ex As Exception
MsgBox("Unexpected Error in Stream File: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End If
End Try
End Function
''' <summary>
@@ -782,7 +793,7 @@ Public Class ClassWindream
''' <param name="filenameZiel">neuer Name der zu indexierenden Datei</param>
''' <returns>Liefert True wenn das Indexieren erfolgreich war, sonst False</returns>
''' <remarks></remarks>
Public Shared Function IndexFile(ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String)
Public Shared Function IndexFile(ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String, Optional outside As Boolean = False, Optional _objecttype As String = "")
Try
If LogErrorsOnly = False Then ClassLogger.Add(" >> IndexFile ('" & WD_File & "','" & _Indexname & "','" & _Value & "') was called!", False)
@@ -796,6 +807,11 @@ Public Class ClassWindream
'MsgBox("IndexFile:" & vbNewLine & ClassDateiimportWindream.GetWindreamDriveLetter & filenameZiel & vbNewLine & Me.selectedProfile.DokumenttypString)
' den Dokumenttyp schreiben
If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexing will be started", False)
If outside = True Then
_WDObjekttyp = _objecttype
aktWMObject = Nothing
aktWMObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) 'WINDREAMLib.WMEntity.WMEntityDocument
End If
' ein windream-Objekt der Datei anlegen
WMObject = aktWMObject 'oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File)
Try
@@ -1122,42 +1138,14 @@ Public Class ClassWindream
If Anzahl = 1 Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Vectorfield will be filled with ONE VALUE", False)
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
myArray(0) = Convert_VectorType(vType, value)
'Jetzt überprüfen ob Werte in Vektorfeld angefügt oder überschrieben werden sollen
If LogErrorsOnly = False Then ClassLogger.Add(" >> Converted Value: " & myArray(0).ToString, False)
Dim VektorArray()
VektorArray = Return_VektorArray(oDocument, aName, myArray)
VektorArray = Return_VektorArray(oDocument, aName, myArray, vType)
If VektorArray Is Nothing = False Then
'ReDim myArray(VektorArray.Length - 1)
' Array.Copy(VektorArray, myArray, VektorArray.Length)
ReDim myArray(VektorArray.Length - 1)
Array.Copy(VektorArray, myArray, VektorArray.Length)
'Jetzt die Nachindexierung für Vektor-Felder
oDocument.SetVariableValue(aName, myArray) '
If LogErrorsOnly = False Then
@@ -1307,7 +1295,7 @@ Public Class ClassWindream
Return False
End Try
End Function
Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, arr_Indexwerte As Object)
Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, arr_Indexwerte As Object, vType As Object)
Try
Dim missing As Boolean = False
Dim Anzahl As Integer = 0
@@ -1323,7 +1311,7 @@ Public Class ClassWindream
'Erst die ALten Werte schreiben
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = WDValue.ToString
ValueArray(Anzahl) = Convert_VectorType(vType, WDValue)
Anzahl += 1
End If
Next
@@ -1334,7 +1322,7 @@ Public Class ClassWindream
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
ValueArray(Anzahl) = Convert_VectorType(vType, NewValue)
Anzahl += 1
Else
ClassLogger.Add(" >> Value '" & NewValue.ToString & "' already existing in vectorfield", False)
@@ -1353,7 +1341,7 @@ Public Class ClassWindream
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
ValueArray(Anzahl) = Convert_VectorType(vType, NewValue)
Anzahl += 1
Else
ClassLogger.Add(" >> Value '" & NewValue.ToString & "' already existing in Array", False)
@@ -1362,7 +1350,7 @@ Public Class ClassWindream
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
ValueArray(Anzahl) = Convert_VectorType(vType, NewValue)
Anzahl += 1
End If
@@ -1380,7 +1368,36 @@ Public Class ClassWindream
End Function
Private Shared Function Convert_VectorType(vType As Object, value As String)
Select Case vType
Case 36865
'Umwandeln in String
Return CStr(value)
Case 4097
'Umwandeln in String
Return CStr(value)
Case 4098
'Umwandeln in Integer
value = value.ToString.Replace(" ", "")
Return CInt(value)
Case 4099
Dim Str As String = value
Str = Str.ToString.Replace(" ", "")
'Umwandeln in Double
Return CDbl(Str.Replace(".", ","))
Case 4101
'Umwandeln in Date
Return CDate(value)
Case 4107
Return Convert.ToInt64(value)
Case 4103
'Umwandeln in Datum Uhrzeit
Return value
Case Else
'Umwandeln in String
Return CStr(value)
End Select
End Function
Private Shared Function IsNotEmpty(ByVal aValue As Object)
If aValue IsNot Nothing Then