MS3006
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user