MS Service aktualisert

This commit is contained in:
Digital Data - Marlon Schreiber 2018-01-17 17:17:38 +01:00
parent ea2554aa10
commit 1d4d48cd01
23 changed files with 1037 additions and 1014 deletions

1
.gitignore vendored
View File

@ -154,3 +154,4 @@ $RECYCLE.BIN/
# Mac desktop service store files # Mac desktop service store files
.DS_Store .DS_Store
/app/.vs/windream-Result-Handler/v15/Server/sqlite3

View File

@ -12,7 +12,7 @@
</startup> </startup>
<applicationSettings> <applicationSettings>
<DDWDResultHandler.My.MySettings> <DDWDResultHandler.My.MySettings>
<setting name="MyConnection" serializeAs="String"> <setting name="SQLSERVER_CS" serializeAs="String">
<value>Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</value> <value>Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</value>
</setting> </setting>
</DDWDResultHandler.My.MySettings> </DDWDResultHandler.My.MySettings>

View File

@ -1,216 +0,0 @@
Imports System.IO
Public Class ClassLoggerOld
Private Shared DateiSpeicherort As String = Nothing
Private Shared DateiPrefix As String = ""
Private Shared Datei As IO.File = Nothing
Private Shared Dateiname As String = ""
Private Shared StreamWriter As IO.StreamWriter = Nothing
Private Shared HasInformedAboutError As Boolean = False
' eine Art Konstruktor
Public Shared Sub Init(ByVal speicherort As String, Optional ByVal prefix As String = "", Optional ByVal appendFile As Boolean = True)
SetSpeicherort()
ClassLoggerOld.DateiSpeicherort = speicherort
' wenn ein Prfix gesetzt wurde
If Not prefix = "" Then
' initialisiert das Prefix
ClassLoggerOld.SetPrefix(prefix)
End If
Dim str As String = ClassLoggerOld.DateiSpeicherort & "\" & ClassLoggerOld.DateiPrefix & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt"
Dim anz As Integer = 1
Do While File.Exists(str)
Dim info As New FileInfo(str)
Dim length As Long = info.Length
If length > 5000000 Then
str = IO.Path.GetDirectoryName(str)
str = str & "\" & ClassLoggerOld.DateiPrefix & System.DateTime.Now.ToString("yyyy_MM_dd") & "(" & anz.ToString & ").txt"
anz = anz + 1
Else
Exit Do
End If
Loop
ClassLoggerOld.Dateiname = str
If Not appendFile Then
' der Versuch die Datei zu löschen
'Try
' My.Computer.FileSystem.DeleteFile(ClassNILogger.Dateiname, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
'Catch ex As Exception
' ' bei Fehler besteht kein Schreibrecht auf die Datei oder Datei existiert nicht
' ' ALSO: alles Okay soweit
'End Try
My.Computer.FileSystem.WriteAllText(ClassLoggerOld.Dateiname, "Neu erstellt - appendfile", False)
End If
' testen ob sich die Datei öffnen und beschreiben lässt
'ClassNILogger.CheckIsLogWritable()
End Sub
' legt den Speicherort fest
Public Shared Sub SetSpeicherort()
Dim f As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Log")
If f.Exists = False Then
IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\Log")
End If
ClassLoggerOld.DateiSpeicherort = My.Application.Info.DirectoryPath & "\Log\"
End Sub
' legt das Prefix für den Dateinamen fest
Public Shared Sub SetPrefix(ByVal prefix As String)
ClassLoggerOld.DateiPrefix = prefix
End Sub
Public Shared Sub Add(ByVal text As String, ByVal _error As Boolean, Optional ByVal Funktion As String = "")
Try
If ClassLoggerOld.OpenFile Then
Try
Dim msg As String
If _error = True And Funktion <> "" Then
msg = ">> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: "
ElseIf _error = True Then
msg = ">> Achtung Fehler:" & vbNewLine & "Fehlermeldung: "
End If
msg &= text
ClassLoggerOld.StreamWriter.WriteLine(msg)
ClassLoggerOld.CloseFile()
Catch e As Exception
ClassLoggerOld.WriteErrorMessage()
End Try
Else
ClassLoggerOld.WriteErrorMessage()
End If
Catch ex As Exception
End Try
End Sub
Public Shared Sub AddDetailLog(ByVal text As String)
If ClassLoggerOld.OpenFile Then
Try
If clsSQLITE.konf_logerrorsonly = False Then
ClassLoggerOld.StreamWriter.WriteLine(">> " & text)
ClassLoggerOld.CloseFile()
End If
Catch e As Exception
ClassLoggerOld.WriteErrorMessage()
End Try
Else
ClassLoggerOld.WriteErrorMessage()
End If
End Sub
' öffnet eine Datei zum Schreiben
Private Shared Function OpenFile()
Try
' wenn ein Speicherort festgelegt wurde
If Not ClassLoggerOld.DateiSpeicherort = Nothing Then
' den Dateienamen definieren
Dim dateiname As String = ClassLoggerOld.Dateiname
' Datei anlegen wenn noch nicht vorhanden
My.Computer.FileSystem.WriteAllText(dateiname, String.Empty, True)
' die Datei zum Schreiben öffnen
ClassLoggerOld.StreamWriter = New IO.StreamWriter(dateiname, True, System.Text.Encoding.UTF8)
End If
' wenn die Datei erfolgreich geöffnet wurde
If ClassLoggerOld.StreamWriter IsNot Nothing Then
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
' öffnet eine Datei zum Schreiben
Private Shared Function OpenFile(ByVal DateiSpeicherort As String, ByVal DateiPrefix As String)
Try
' wenn ein Speicherort festgelegt wurde
If Not DateiSpeicherort = Nothing And ClassLoggerOld.CheckIsLogWritable() Then
' den Dateienamen definieren
Dim dateiname As String = ClassLoggerOld.Dateiname
' Datei anlegen wenn noch nicht vorhanden
My.Computer.FileSystem.WriteAllText(dateiname, String.Empty, True)
' die Datei zum Schreiben öffnen
ClassLoggerOld.StreamWriter = New IO.StreamWriter(dateiname, True, System.Text.Encoding.UTF8)
End If
' wenn die Datei erfolgreich geöffnet wurde
If ClassLoggerOld.StreamWriter IsNot Nothing Then
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
' schliesst die geöffnete Datei
Private Shared Sub CloseFile()
' wenn eine Datei geöffnet ist
If ClassLoggerOld.StreamWriter IsNot Nothing Then
' die Datei schliessen
ClassLoggerOld.StreamWriter.Close()
ClassLoggerOld.StreamWriter = Nothing
End If
End Sub
Public Shared Function CheckIsLogWritable()
If ClassLoggerOld.OpenFile Then
Try
ClassLoggerOld.CloseFile()
Catch e As Exception
ClassLoggerOld.WriteErrorMessage()
Return False
End Try
Else
ClassLoggerOld.WriteErrorMessage()
Return False
End If
Return True
End Function
Public Shared Function CheckIsLogWritable(ByVal vDateiSpeicherort As String, ByVal vDateiPrefix As String)
If ClassLoggerOld.OpenFile(vDateiSpeicherort, vDateiPrefix) Then
Try
ClassLoggerOld.CloseFile()
Catch e As Exception
ClassLoggerOld.WriteErrorMessage()
Return False
End Try
Else
ClassLoggerOld.WriteErrorMessage()
Return False
End If
Return True
End Function
Private Shared Sub WriteErrorMessage()
If Not ClassLoggerOld.HasInformedAboutError Then
Try
EventLog.WriteEntry("Windream Result Handler", "Fehler beim Öffnen der Logdatei - Keine Schreibrechte in Verzeichnis??", EventLogEntryType.Warning)
Catch ex As Exception
End Try
'EventLog1.Source = "Windream Result Handler"
'clsSQLITE.Execute_non_Query("INSERT INTO TBLOG (MODUL,MESSAGE) VALUES ('MAIN','" & "Fehler beim Öffnen der Logdatei - Keine Schreibrechte im Verzeichnis? Es wird keine Logdatei angelegt oder beschrieben.")
'MsgBox("Beim Öffnen der Logdatei ist ein Fehler aufgetreten. Bitte stellen Sie sicher das Sie sowohl über entsprechende Schreibrechte im Verzeichnis, als auch über ausreichend Speicherplatz zum Speichern der Logdatei verfügen." & _
' vbNewLine & vbNewLine & "Es wird keine Logdatei angelegt oder beschrieben." & vbNewLine & vbNewLine & "Im folgenden werden Sie über Fehler, den Log betreffend nicht weiter informiert, um den Ablauf des Dateiimporters nicht zu stören.", _
' MsgBoxStyle.Information, "Fehler beim Öffnen der Logdatei")
ClassLoggerOld.HasInformedAboutError = True
End If
End Sub
End Class

View File

@ -0,0 +1,193 @@
Imports WINDREAMLib
Imports WINDREAMLib.WMCOMEvent
Imports WINDREAMLib.WMEntity
Imports WINDREAMLib.WMObjectEditMode
Imports WINDREAMLib.WMSearchOperator
Imports WINDREAMLib.WMSearchRelation
Imports WMOBRWSLib
Public Class ClassWindream_allgemein
#Region "+++++ Konstanten +++++"
Const DEBUG = AUS
Const AUS = 0
Const WINDREAM = 1
Const VARIABLEN = 2
#End Region
#Region "+++++ Variablen +++++"
Public oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public oSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public oBrowser As New WMOBRWSLib.ServerBrowser
Public oDokumentTypen As WINDREAMLib.WMObjects
#End Region
#Region "+++++ Allgemeine Methoden und Funktionen +++++"
''' <summary>
''' Konstruktor für die windream-Klasse
''' </summary>
''' <remarks></remarks>
Sub New()
' wenn ein Fehler bei der Initialisierung auftrat
If Not Me.Init() Then
' Nachricht ausgeben
clsLogger.Add("Es trat ein Fehler bei der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind.!", True)
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
End Sub
''' <summary>
''' Initialisiert die statische Klasse (Login, Session starten, usw.)
''' </summary>
''' <returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
''' <remarks></remarks>
Public Function Init() As Boolean
Try
Try
' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
Me.oSession = CreateObject("Windream.WMSession", Me.GetCurrentServer)
'If My.Settings.vDetailLog Then ClassLogger.Add(" >> windream-Server: '" & Me.GetCurrentServer & "'", False)
' Connection-Objekt instanziieren
Me.oConnect = CreateObject("Windream.WMConnect")
'MsgBox("windrem init 'ed")
Catch ex As Exception
Return False
End Try
' wenn windream nicht angemeldet ist
If Not Me.IsLoggedIn Then
' Art der Anmeldung an windream festlegen
' 0x0L (also 0) = Standard windream Benutzer
' WM_MODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.)
' WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen
Me.oConnect.ModuleID = 0
' setzt die minimal erwartete windream-Version
Me.oConnect.MinReqVersion = "3"
' -- Impersonifizierung nur möglich mit registry-eintrag --
' oConnect.UserName "\schulung\windream"
' oConnect.Password "windream"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
Me.oConnect.LoginSession(Me.oSession)
If Me.oSession.aLoggedin = False Then
clsLogger.Add("Es konnte keine Session aufgebaut werden!", True)
Return False
End If
'If My.Settings.vDetailLog Then
' ClassLogger.Add(" >> windream-Version: '" & oSession.GetSystemInfo("WindreamVersion") & "'", False)
'End If
' AUSGABE VON SYSTEMINFORMATIONEN
' Gibt die Versionsart (Lizenztyp) also Small-Business-Edition (SBE), Small-Business-Extension (SBX)
' oder Business-Edition (BE) aus
'MsgBox("WindreamVersion: " & oSession.GetSystemInfo("WindreamVersion") & vbNewLine & "LicenceKey: " & oSession.GetSystemInfo("LicenceKey") & vbNewLine & _
' vbNewLine & "LicenceName: " & oSession.GetSystemInfo("LicenceName"))
'Dim WMCtrl As AISCONTROLDATACOMLib.AISControlData
'WMCtrl = New AISCONTROLDATACOMLib.AISControlData
'' liefert die Versionsnummer des Clients
'MsgBox(WMCtrl.WMWorkstationBuildNo)
'MsgBox(WMCtrl.W
'' liefert den Servernamen des angemeldeten windreams
'MsgBox(WMCtrl.WMServerName)
Try
Me.oSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden
Me.oDokumentTypen = Me.oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Catch ex As Exception
Return False
End Try
End If
Return True
Catch ex As Exception
If Err.Number = -2147220985 Then
Else
clsLogger.Add(ex.Message & vbNewLine & "Fehler beim Login an windream!", True)
End If
Return False
End Try
End Function
#End Region
#Region "+++++ Funktionen die für den Objekttyp relevate Informationen zurückliefern +++++"
Public Function GetTypeOfIndex(ByVal indexname As String) As Integer
Try
Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType
Catch ex As Exception
Return Nothing
End Try
End Function
#End Region
#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++"
''' <summary>
''' Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist.
''' </summary>
''' <returns>Anmeldestatus als Boolean</returns>
''' <remarks></remarks>
Public Function IsLoggedIn() As Boolean
Try
Return Me.oSession.aLoggedin
Catch ex As Exception
clsLogger.Add("Me.oSession.aLoggedin was ended with error: " & ex.Message, True)
End Try
Return False
End Function
''' <summary>
''' Liefert den Servernamen an dem windream aktuell angemeldet ist.
''' </summary>
''' <returns>Servername als String</returns>
''' <remarks></remarks>
Public Function GetCurrentServer() As String
Try
Return Me.oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception
clsLogger.Add(ex.Message & vbNewLine & "Der aktuell gewählte windream-Server konnte nicht ausgelesen werden!", True)
End Try
Return ""
End Function
#End Region
End Class

View File

@ -32,11 +32,11 @@ Public Class DDWDResultHandler
clsLogger.Add(" ", False) clsLogger.Add(" ", False)
clsLogger.Add("## WindreamResultHandler gestartet - " & Now & " ## ", False) clsLogger.Add("## WindreamResultHandler gestartet - " & Now & " ## ", False)
If My.Settings.MyConnection = String.Empty Then If My.Settings.SQLSERVER_CS = String.Empty Then
clsLogger.Add("Achtung: Es wurde noch kein Datenbank-ConnectionString hinterlegt.", True) clsLogger.Add("Achtung: Es wurde noch kein Datenbank-ConnectionString hinterlegt.", True)
Else Else
If clsSQLITE.Init = False Then If clsDatatabase.Init = False Then
clsLogger.Add("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.MyConnection & "' hergestellt werden!", True) clsLogger.Add("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.SQLSERVER_CS & "' hergestellt werden!", True)
Else Else
' '### Thread für Durchlauf generieren ' '### Thread für Durchlauf generieren
DDWDResultHandler.threadRunner = New BackgroundWorker() DDWDResultHandler.threadRunner = New BackgroundWorker()
@ -73,14 +73,14 @@ Public Class DDWDResultHandler
'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestoppt") 'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestoppt")
clsLogger.Add("", False) clsLogger.Add("", False)
clsLogger.Add("## WindreamResultHandler wurde gestoppt - " & Now & " ## ", False) clsLogger.Add("## WindreamResultHandler wurde gestoppt - " & Now & " ## ", False)
clsSQLITE.Execute_non_Query("Update TBPROFIL SET Running = 1 WHERE GUID = " & clsProfil._profGUID) clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _PROFIL_ID)
clsLogger.Add("", False) clsLogger.Add("", False)
clsLogger.WriteLog() clsLogger.WriteLog()
End Sub End Sub
Public Shared Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Public Shared Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
Try Try
Dim notcompleted As Boolean = False Dim notcompleted As Boolean = False
clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "logResultHandler_") clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "_SERVICEResultHandler")
clsLogger.Add("", False) clsLogger.Add("", False)
clsLogger.Add("## Start Durchlauf WindreamResultHandler - " & Now & " ## ", False) clsLogger.Add("## Start Durchlauf WindreamResultHandler - " & Now & " ## ", False)
clsLogger.Add("", False) clsLogger.Add("", False)
@ -88,35 +88,44 @@ Public Class DDWDResultHandler
If _windream.Init() = True Then If _windream.Init() = True Then
clsLogger.AddDetailLog("windream vollumfänglich initialisiert!") clsLogger.AddDetailLog("windream vollumfänglich initialisiert!")
'Zur sicherheit die DB nochmal initialiseren 'Zur sicherheit die DB nochmal initialiseren
If clsSQLITE.Init() = True Then If clsDatatabase.Init() = True Then
Dim DT As DataTable = clsSQLITE.Return_Datatable("SELECT GUID FROM TBPROFIL WHERE AKTIV = 1 order by REIHENFOLGE") Dim DT As DataTable = clsDatatabase.Return_Datatable("select * from TBWMRH_KONFIGURATION where GUID = 1")
If DT.Rows.Count > 0 Then If DT.Rows.Count = 1 Then
clsLogger.AddDetailLog("Anzahl der aktiven Profile: " & DT.Rows.Count.ToString) LOG_ERRORS_ONLY = DT.Rows(0).Item("LOG_ERRORS_ONLY")
For Each DR As DataRow In DT.Rows If LOG_ERRORS_ONLY = False Then
_PROFIL_ID = CInt(DR.Item("GUID")) clsLogger.Add("Detaillog is ON!", False)
'Und nun das Profil durchlaufen End If
Dim initresult = clsProfil.Init(_PROFIL_ID) WDLAUFWERK = DT.Rows(0).Item("WD_LAUFWERK")
If initresult = True Then
clsLogger.WriteLog()
clsProfil.Profil_Durchlauf()
ElseIf initresult = False Then
clsLogger.Add("clsProfil konnte nicht initialisiert werden", True, "RUN_THREAD")
notcompleted = True
ElseIf initresult = 0 Then
clsLogger.AddDetailLog("initresult: 0")
notcompleted = True
ElseIf initresult = 1 Then
clsLogger.AddDetailLog("initresult: 1")
notcompleted = True
End If
Next
Else
clsLogger.Add("- Keine aktiven Profile vorhanden", False)
notcompleted = True
End If End If
clsSQLITE.Execute_non_Query("UPDATE TBKONFIGURATION SET LAST_TICK = DATETIME ('now' , 'localtime') WHERE GUID = 1") DT = clsDatatabase.Return_Datatable("SELECT GUID FROM TBWMRH_PROFIL WHERE AKTIV = 1 order by REIHENFOLGE")
If DT.Rows.Count > 0 Then
clsLogger.AddDetailLog("Anzahl der aktiven Profile: " & DT.Rows.Count.ToString)
For Each DR As DataRow In DT.Rows
_PROFIL_ID = CInt(DR.Item("GUID"))
'Und nun das Profil durchlaufen
Dim initresult = clsProfil.Init(_PROFIL_ID)
If initresult = True Then
clsLogger.WriteLog()
clsProfil.Profil_Durchlauf()
ElseIf initresult = False Then
clsLogger.Add("clsProfil konnte nicht initialisiert werden", True, "RUN_THREAD")
notcompleted = True
ElseIf initresult = 0 Then
clsLogger.AddDetailLog("initresult: 0")
notcompleted = True
ElseIf initresult = 1 Then
clsLogger.AddDetailLog("initresult: 1")
notcompleted = True
End If
Next
Else
clsLogger.Add("- Keine aktiven Profile vorhanden", False)
notcompleted = True
End If
clsDatatabase.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1")
Else Else
clsLogger.Add("- clsSQLLite konnte nicht initialisiert werden!", False) clsLogger.Add("- clsSQLLite konnte nicht initialisiert werden!", False)
notcompleted = True notcompleted = True
End If End If
Else Else
@ -131,14 +140,14 @@ Public Class DDWDResultHandler
End Try End Try
End Sub End Sub
#Region "*** BackgroundWorker DI und NI beenden und Abbrechen ***" #Region "*** BackgroundWorker beenden und Abbrechen ***"
Private Shared Sub Thread_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted Private Shared Sub Thread_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted
' This event fires when the DoWork event completes ' This event fires when the DoWork event completes
Try Try
Dim result As String = "" Dim result As String = ""
If e.Cancelled Then If e.Cancelled Then
clsLogger.Add("## Der Dateiimport wurde durch den Anwender abgebrochen", False) clsLogger.Add("## Der Process wurde durch den Anwender abgebrochen", False)
clsLogger.WriteLog() clsLogger.WriteLog()
ElseIf e.Error IsNot Nothing Then ElseIf e.Error IsNot Nothing Then
clsLogger.Add("Fehler bei Durchlauf. Der Vorgang wird abgebrochen.", True, "Thread_Completed") clsLogger.Add("Fehler bei Durchlauf. Der Vorgang wird abgebrochen.", True, "Thread_Completed")

View File

@ -55,7 +55,7 @@
<HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.SqlServer.dll</HintPath> <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference> </Reference>
<Reference Include="Interop.WINDREAMLib"> <Reference Include="Interop.WINDREAMLib">
<HintPath>..\..\..\Bibliotheken\DLL\windreamDLL\64bit\Interop.WINDREAMLib.dll</HintPath> <HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes> <EmbedInteropTypes>False</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@ -88,7 +88,7 @@
<Import Include="System.Threading.Tasks" /> <Import Include="System.Threading.Tasks" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ClassLoggerOld.vb" /> <Compile Include="ClassWindream_allgemein.vb" />
<Compile Include="clsDatatabase.vb" /> <Compile Include="clsDatatabase.vb" />
<Compile Include="clsDateiverarbeitung.vb" /> <Compile Include="clsDateiverarbeitung.vb" />
<Compile Include="clsEmail.vb" /> <Compile Include="clsEmail.vb" />

View File

@ -15,7 +15,7 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.0.1.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
@ -58,9 +58,9 @@ Namespace My
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security In"& _ Global.System.Configuration.DefaultSettingValueAttribute("Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security In"& _
"fo=True;User ID=sa;Password=dd")> _ "fo=True;User ID=sa;Password=dd")> _
Public ReadOnly Property MyConnection() As String Public ReadOnly Property SQLSERVER_CS() As String
Get Get
Return CType(Me("MyConnection"),String) Return CType(Me("SQLSERVER_CS"),String)
End Get End Get
End Property End Property
End Class End Class

View File

@ -2,7 +2,7 @@
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles /> <Profiles />
<Settings> <Settings>
<Setting Name="MyConnection" Type="System.String" Scope="Application"> <Setting Name="SQLSERVER_CS" Type="System.String" Scope="Application">
<Value Profile="(Default)">Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</Value> <Value Profile="(Default)">Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</Value>
</Setting> </Setting>
</Settings> </Settings>

View File

@ -1,4 +1,8 @@
Module RUNTIME_VARIABLES Module RUNTIME_VARIABLES
Public EXPORTED_FILENAME As String Public EXPORTED_FILENAME As String
Public _PROFIL_ID, _profGUID As Integer
Public WDLAUFWERK, _profObjekttyp, _profwdSuche, _profDay, _profRunType, _Profilname As String
Public _proflastRun As Date
Public LOG_ERRORS_ONLY As Boolean = False
End Module End Module

View File

@ -1,6 +1,5 @@
Imports System.Data.SqlClient Imports System.Data.SqlClient
Imports Oracle.ManagedDataAccess.Client Imports Oracle.ManagedDataAccess.Client
Public Class clsDatatabase Public Class clsDatatabase
Public Shared Function ExecuteonOracleDb(CONSTRING As String, ByVal plsqlcommand As String) Public Shared Function ExecuteonOracleDb(CONSTRING As String, ByVal plsqlcommand As String)
Try Try
@ -36,6 +35,7 @@ Public Class clsDatatabase
' *** Ausführen des Command *** ' *** Ausführen des Command ***
If Command() IsNot Nothing Then If Command() IsNot Nothing Then
Try Try
clsLogger.AddDetailLog("Now executing: " & plsqlcommand)
Oracle_Command.ExecuteNonQuery() Oracle_Command.ExecuteNonQuery()
' DB-Connection schliessen ' DB-Connection schliessen
Oracle_Conn.Close() Oracle_Conn.Close()
@ -57,11 +57,59 @@ Public Class clsDatatabase
Catch ex As Exception Catch ex As Exception
clsLogger.Add("Unexpected Error in ExecuteonOracleDb: " & ex.Message & vbNewLine & "(SQL: " & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb") clsLogger.Add("Unexpected Error in ExecuteonOracleDb: " & ex.Message & vbNewLine & "SQL: " & plsqlcommand, True, "clsDatatabase.ExecuteonOracleDb")
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden ' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
Return False Return False
End Try End Try
End Function
Public Shared Function Oracle_CS_Test(CONSTRING As String)
Try
Dim conn As New OracleConnectionStringBuilder
Dim Oracle_Conn As OracleConnection = New OracleConnection(CONSTRING)
' Verbindung zur Datenbank aufbauen
Try
Oracle_Conn.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.Oracle_CS_Test(OpenConnection)")
Return False
End Try
Oracle_Conn.Close()
Return True
Catch ex As Exception
clsLogger.Add("Unexpected Error in Oracle_CS_Test: " & ex.Message, True, "clsDatatabase.Oracle_CS_Test")
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
Return False
End Try
End Function
Public Shared Function MSSQL_CS_Test(CONSTRING As String)
Try
' die nötigen Variablen definieren
Dim Connection As SqlConnection = Nothing
' Verbindung zur Datenbank aufbauen
Try
Connection = New SqlConnection(CONSTRING)
Connection.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.MSSQL_CS_Test(OpenConnection)")
Return False
End Try
Connection.Close()
Return True
Catch ex As Exception
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
clsLogger.Add("UNEXPECTED ERROR: " & ex.Message, True, "clsDatatabase.MSSQL_CS_Test")
Return False
End Try
End Function End Function
Public Shared Function ExecuteonMSSQL(ConString As String, ByVal sqlcommand As String) Public Shared Function ExecuteonMSSQL(ConString As String, ByVal sqlcommand As String)
Try Try
@ -128,4 +176,167 @@ Public Class clsDatatabase
End Try End Try
End Function End Function
Private Shared connectionString As String
Public Shared Function Init()
Try
connectionString = My.Settings.SQLSERVER_CS
Dim SQLconnect As New SqlClient.SqlConnection
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLconnect.Close()
Return True
Catch ex As Exception
clsLogger.Add("Error in DatabaseInit: " & ex.Message, True)
Return False
End Try
End Function
Public Shared Function Return_Datatable(Select_anweisung As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = Select_anweisung
SQLcommand.CommandTimeout = 180
Dim adapter1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnect.Close()
Return dt
Catch ex As Exception
clsLogger.Add("Error in Return_Datatable: " & ex.Message, True)
clsLogger.Add(">> SQL: " & Select_anweisung, False)
Return Nothing
End Try
End Function
Public Shared Function Execute_non_Query(ExecuteCMD As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = ExecuteCMD
SQLcommand.CommandTimeout = 120
SQLcommand.ExecuteNonQuery()
SQLcommand.Dispose()
SQLconnect.Close()
Return True
Catch ex As Exception
clsLogger.Add("Error in Execute_non_Query: " & ex.Message, True)
clsLogger.Add("SQL: " & ExecuteCMD, False)
Return False
End Try
End Function
Public Shared Function Execute_Scalar(cmdscalar As String)
Dim result
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = cmdscalar
SQLcommand.CommandTimeout = 120
result = SQLcommand.ExecuteScalar()
SQLcommand.Dispose()
SQLconnect.Close()
Return result
Catch ex As Exception
clsLogger.Add("Error in Execute_Scalar: " & ex.Message, True)
clsLogger.Add("SQL: " & cmdscalar, False)
Return Nothing
End Try
End Function
Public Shared Function OracleExecute_Scalar(cmdscalar As String, OracleConnection As String)
Dim result
Try
Dim SQLconnect As New OracleConnection
Dim SQLcommand As New OracleCommand
SQLconnect.ConnectionString = OracleConnection
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = cmdscalar
result = SQLcommand.ExecuteScalar()
SQLcommand.Dispose()
SQLconnect.Close()
Return result
Catch ex As Exception
clsLogger.Add("Error in OracleExecute_Scalar: " & ex.Message, True)
clsLogger.Add("#SQL: " & cmdscalar, False)
Return Nothing
End Try
End Function
Public Shared Function OracleExecute_non_Query(ExecuteCMD As String, OracleConnection As String, Optional userInput As Boolean = False)
Try
Dim SQLconnect As New OracleConnection
Dim SQLcommand As OracleCommand
SQLconnect.ConnectionString = OracleConnection
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = ExecuteCMD
SQLcommand.ExecuteNonQuery()
SQLcommand.Dispose()
SQLconnect.Close()
Return True
Catch ex As Exception
clsLogger.Add("Error in OracleExecute_non_Query: " & ex.Message, True)
clsLogger.Add("#SQL: " & ExecuteCMD, False)
Return False
End Try
End Function
Public Shared Function Oracle_Return_Datatable(Select_anweisung As String, OracleConnection As String, Optional userInput As Boolean = False)
Try
Dim SQLconnect As New OracleConnection
Dim SQLcommand As OracleCommand
SQLconnect.ConnectionString = OracleConnection
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = Select_anweisung
Dim adapter1 As OracleDataAdapter = New OracleDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnect.Close()
Return dt
Catch ex As Exception
clsLogger.Add("Error in Oracle_Return_Datatable: " & ex.Message, True)
clsLogger.Add("#SQL: " & Select_anweisung, False)
Return Nothing
End Try
End Function
End Class End Class

View File

@ -1,16 +1,19 @@
Imports WINDREAMLib Imports WINDREAMLib
Imports System.IO Imports System.IO
Imports System.Net
Imports Newtonsoft.Json
Imports System.Text
Public Class clsDateiverarbeitung Public Class clsDateiverarbeitung
#Region "***** Variablen und Konstanten*****" #Region "***** Variablen und Konstanten*****"
Public Shared _windream As New clsWindream_allgemein Public Shared _windream As New clsWindream_allgemein
Public Shared pr_Profilname, pr_Objekttyp, pr_wdSuche, konfig_WDLaufwerk, konfig_VERSIONSTZ As String
Public Shared pr_GUID As Integer
Public Shared pr_DTPROFIL_REGELN As DataTable Public Shared pr_DTPROFIL_REGELN As DataTable
Public Shared aktfile_Exportresult Public Shared aktfile_Exportresult
Private email As New clsEmail
Public Shared CriticalError As Boolean = False Public Shared CriticalError As Boolean = False
Private Shared regel_TYP, regel_INDEX_NAME, regel_QUELLE1, regel_FROM1, regel_FROM2 As String Private Shared regel_TYP, regel_INDEX_NAME, regel_QUELLE1, regel_FROM1, regel_FROM2 As String
@ -25,17 +28,8 @@ Public Class clsDateiverarbeitung
#End Region #End Region
Public Shared Function InitProfilData() Public Shared Function InitProfilData()
Try Try
pr_Profilname = Nothing
pr_Objekttyp = Nothing
pr_wdSuche = Nothing
pr_DTPROFIL_REGELN = Nothing pr_DTPROFIL_REGELN = Nothing
' Profildaten der Klasse mitteilen ' Profildaten der Klasse mitteilen
pr_Profilname = clsProfil._Profilname
pr_Objekttyp = clsProfil._profObjekttyp
pr_wdSuche = clsProfil._profwdSuche
pr_GUID = clsProfil._profGUID
konfig_WDLaufwerk = clsSQLITE.konf_WDLAUFWERK
konfig_VERSIONSTZ = clsSQLITE.konf_VERSIONSTRENNZEICHEN
clsLogger.AddDetailLog("InitProfilData Profildaten zugewiesen....") clsLogger.AddDetailLog("InitProfilData Profildaten zugewiesen....")
Return True Return True
Catch ex As Exception Catch ex As Exception
@ -52,7 +46,7 @@ Public Class clsDateiverarbeitung
clsLogger.Add("", False) clsLogger.Add("", False)
clsLogger.Add(">> Verarbeitung von Datei: " & WDDatei.aName, False) clsLogger.Add(">> Verarbeitung von Datei: " & WDDatei.aName, False)
'Die Quelle zusammensetzen 'Die Quelle zusammensetzen
clsLogger.AddDetailLog("PFAD: " & konfig_WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName) clsLogger.AddDetailLog("PFAD: " & WDLAUFWERK & ":" & WDDatei.aPath & "\" & WDDatei.aName)
'Dim Quelle As String = IO.Path.GetDirectoryName(WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName) 'Dim Quelle As String = IO.Path.GetDirectoryName(WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName)
Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
@ -67,7 +61,7 @@ Public Class clsDateiverarbeitung
clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File") clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
Return False Return False
End Try End Try
Dim oWMStream = WDDatei.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite) Dim oWMStream = WDDatei.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite)
'### VERSIONIERUNG ### '### VERSIONIERUNG ###
Dim version As Integer = 2 Dim version As Integer = 2
@ -77,7 +71,7 @@ Public Class clsDateiverarbeitung
Dim tempFilename As String = Zielpfad & Filename & Extension Dim tempFilename As String = Zielpfad & Filename & Extension
'Überprüfen ob File existiert 'Überprüfen ob File existiert
Do While IO.File.Exists(tempFilename) = True Do While IO.File.Exists(tempFilename) = True
tempFilename = Zielpfad & Filename & konfig_VERSIONSTZ & version & Extension tempFilename = Zielpfad & Filename & "_" & version & Extension
version = version + 1 version = version + 1
Loop Loop
clsLogger.AddDetailLog("Zieldateiname: " & tempFilename) clsLogger.AddDetailLog("Zieldateiname: " & tempFilename)
@ -100,11 +94,11 @@ Public Class clsDateiverarbeitung
Return False Return False
End Try End Try
End Function End Function
Public Shared Function Rename_File(wddok As WMObject, konvention As String) Public Shared Function Rename_File(WMFile As WMObject, konvention As String)
Try Try
clsLogger.AddDetailLog("Konvention: '" & konvention & "'") clsLogger.AddDetailLog("Konvention: '" & konvention & "'")
' Regulären Ausdruck zum Auslesen der windream-Indexe definieren 'Regulären Ausdruck zum Auslesen der windream-Indexe definieren
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' einen Regulären Ausdruck laden ' einen Regulären Ausdruck laden
Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg) Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
@ -113,13 +107,13 @@ Public Class clsDateiverarbeitung
Dim i As Integer = 0 Dim i As Integer = 0
' alle Vorkommen der windream-Indexe im SQL-String durchlaufen ' alle Vorkommen der windream-Indexe im SQL-String durchlaufen
For Each reg_element As System.Text.RegularExpressions.Match In reg_elemente For Each reg_element As System.Text.RegularExpressions.Match In reg_elemente
' die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index) 'die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index)
Dim reg_element_Ohne_SZ As String = reg_element.Value.Replace("[%", "") Dim reg_element_Ohne_SZ As String = reg_element.Value.Replace("[%", "")
reg_element_Ohne_SZ = reg_element_Ohne_SZ.Replace("]", "") reg_element_Ohne_SZ = reg_element_Ohne_SZ.Replace("]", "")
clsLogger.AddDetailLog("Indexwert aus Index '" & reg_element_Ohne_SZ & "' auslesen....") clsLogger.AddDetailLog("Indexwert aus Index '" & reg_element_Ohne_SZ & "' auslesen....")
Dim wdIndexwert Dim wdIndexwert
' den Wert des Indexes für das aktuelle Dokument auslesen 'den Wert des Indexes für das aktuelle Dokument auslesen
wdIndexwert = wddok.GetVariableValue(reg_element_Ohne_SZ) wdIndexwert = WMFile.GetVariableValue(reg_element_Ohne_SZ)
If wdIndexwert Is Nothing = False Then If wdIndexwert Is Nothing = False Then
If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then
clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & konvention) clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & konvention)
@ -143,7 +137,7 @@ Public Class clsDateiverarbeitung
clsLogger.AddDetailLog("tempFilename: " & tempFilename) clsLogger.AddDetailLog("tempFilename: " & tempFilename)
'Überprüfen ob File existiert 'Überprüfen ob File existiert
Do While IO.File.Exists(tempFilename) = True Do While IO.File.Exists(tempFilename) = True
tempFilename = ZielPfad & "\" & Filename & konfig_VERSIONSTZ & version & Extension tempFilename = ZielPfad & "\" & Filename & "~" & version & Extension
version += 1 version += 1
Loop Loop
clsLogger.AddDetailLog("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename)) clsLogger.AddDetailLog("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
@ -155,6 +149,152 @@ Public Class clsDateiverarbeitung
Return False Return False
End Try End Try
End Function End Function
Public Shared Function Rename_File_Vektor(WMFile As WMObject, WMINDEX_NAME As String)
Try
Dim WMIndexwert
Dim ZielPfad As String = Path.GetDirectoryName(aktfile_Exportresult)
clsLogger.AddDetailLog("ZielPfad: " & ZielPfad)
Dim Extension = Path.GetExtension(aktfile_Exportresult)
clsLogger.AddDetailLog("Extension: " & Extension)
If WMINDEX_NAME.StartsWith("[%") Then
WMINDEX_NAME = WMINDEX_NAME.Replace("[%", "")
WMINDEX_NAME = WMINDEX_NAME.Replace("]", "")
End If
'den Wert des Indexes für das aktuelle Dokument auslesen
WMIndexwert = WMFile.GetVariableValue(WMINDEX_NAME)
If WMIndexwert.GetType.ToString.Contains("System.Object") Then
clsLogger.AddDetailLog("Rename_File_Vektor in Progress for index " & WMINDEX_NAME)
Dim anz As Integer = 1
Dim copybasefile As String
For Each WMvalue As Object In WMIndexwert
'Für jeden Value eine Datei erzeugen
Try
If WMvalue.ToString <> String.Empty Then
Dim tempFilename As String = ZielPfad & "\" & WMvalue & Extension
clsLogger.AddDetailLog("tempFilename: " & tempFilename)
If anz = 1 Then
clsLogger.AddDetailLog("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
My.Computer.FileSystem.RenameFile(aktfile_Exportresult, Path.GetFileName(tempFilename))
copybasefile = tempFilename
Else
Dim version As Integer = 2
'Überprüfen ob File existiert
Do While IO.File.Exists(tempFilename) = True
tempFilename = ZielPfad & "\" & WMvalue & "~" & version & Extension
version += 1
Loop
File.Copy(copybasefile, tempFilename, True)
End If
anz += 1
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDateiverarbeitung.ForEachWMvalue")
End Try
Next
Else
clsLogger.Add(">> Achtung WMIndex " & WMINDEX_NAME & " scheint kein Vektorfeld zu sein!", False, "clsDateiverarbeitung.Rename_File_Vektor")
Return False
End If
clsLogger.Add(">> Dateien wurde erfolgreich nach Vektorfeld erzeugt.", False, "clsDateiverarbeitung.Rename_File_Vektor")
Return True
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDateiverarbeitung.Rename_File_Vektor")
End Try
End Function
Private Shared Function GetWMAPILink(docId As String, userId As String)
Dim hostname = "http://documents.mylogitservices.syncreon.com:8100"
Dim link As String = $"{hostname}/WMWebApi/windream.web.api/DigitalData/BNSDownload?docId={docId}&userId={userId}"
Return link
End Function
Private Shared Function GetDocTypeCategory(docType As String)
Select Case docType
Case "Abliefernachweis"
Return 5
Case Else
Return 0
End Select
End Function
''' <summary>
''' Generiert einen Link für BNS und fügt das Dokument WMFile
''' ins BNS ein
''' </summary>
''' <param name="WMFile">Das WMObject, dass das aktuelle Dokument repräsentiert</param>
''' <param name="userId">Die eindeutige Benutzer Kennung für die Authentifizierung in Windream</param>
Public Shared Function BNSjsonDownload(WMFile As WMObject, userId As String, apiAddress As String)
Try
' Indizes für das aktuelle Dokument auslesen
Dim SENDUNGNR = WMFile.GetVariableValue("Sendungnr")
Dim DOKID = WMFile.GetVariableValue("Dokument-ID")
Dim DOKART = WMFile.GetVariableValue("Dokumentart")
Dim now As DateTime = DateTime.Now
' Download Link für Dokument erstellen
Dim link As String = GetWMAPILink(DOKID, userId)
' JSON Payload erstellen und serialisieren
Dim doc As New BNSDocument()
doc.Bemerkung = DOKART
doc.Ivalidfrom = now
doc.Ivaliduntil = now.AddDays(30)
doc.Pfad = link
doc.Kategorien = New List(Of BNSDocumentCategory) From {
New BNSDocumentCategory With {.Id = GetDocTypeCategory(DOKART)}
}
Dim json As String = JsonConvert.SerializeObject(doc, Formatting.Indented)
Dim bytes As Byte() = Encoding.Default.GetBytes(json)
' HTTP Request machen
' Mandanten ID ist Standartmäßig 1
Dim mandatenId As Integer = 1
' Für Tests auf Sendung gesetzt, später sollte dieser String konfigurierbar sein
Dim geschaeftsObjekt = "Sendung"
' Für Tests wird hier die Sendungsnummer verwendet, später hängt der verwendete Index von 'geschaeftsObjekt' ab
Dim geschaeftsId = SENDUNGNR
Dim url As String = $"http://{apiAddress}/onwebui/api/Customer/{mandatenId}/{geschaeftsObjekt}/{geschaeftsId}/dokument"
clsLogger.Add($">> Generiertes JSON: {json}", False, "BNSjsonDownload")
clsLogger.Add($">> Creating WebRequest for {url}", False, "BNSjsonDownload")
Dim req As HttpWebRequest = WebRequest.CreateHttp(url)
req.Method = "POST"
req.ContentType = "application/json"
req.ContentLength = bytes.Length
req.Timeout = 3000
req.ServicePoint.Expect100Continue = False
Dim reqStream As Stream = req.GetRequestStream()
reqStream.Write(bytes, 0, bytes.Length)
reqStream.Close()
clsLogger.Add($">> Datei wird hochgeladen... docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload")
clsLogger.Add($">> Upload URL: {url}", False, "BNSjsonDownload")
Using res As HttpWebResponse = req.GetResponse()
Dim code As HttpStatusCode = res.StatusCode
Dim text As String = res.StatusDescription
' Status 201 Created bedeutet: Alles okay!
If code = HttpStatusCode.Created Then
clsLogger.Add($">> Datei geschrieben! docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload")
Else
Throw New Exception($"Server Error (HTTP {code}: {text})")
End If
End Using
Return True
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message & " - " & ex.Source, "BNSjsonDownload")
Return True
End Try
End Function
Public Shared Function RUN_ORACLE_COMMAND(WMFile As WMObject, OracleCS As String, OracleCommandRAW As String) Public Shared Function RUN_ORACLE_COMMAND(WMFile As WMObject, OracleCS As String, OracleCommandRAW As String)
Try Try
Dim result = REGEX_REPLACE(WMFile, OracleCommandRAW) Dim result = REGEX_REPLACE(WMFile, OracleCommandRAW)
@ -163,7 +303,7 @@ Public Class clsDateiverarbeitung
End If End If
If clsDatatabase.ExecuteonOracleDb(OracleCS, OracleCommandRAW) = True Then If clsDatatabase.ExecuteonOracleDb(OracleCS, result) = True Then
Return True Return True
Else Else
Return False Return False
@ -182,7 +322,7 @@ Public Class clsDateiverarbeitung
End If End If
If clsDatatabase.ExecuteonMSSQL(MSSQLCS, SQLCommandRAW) = True Then If clsDatatabase.ExecuteonMSSQL(MSSQLCS, result) = True Then
Return True Return True
Else Else
Return False Return False
@ -219,11 +359,12 @@ Public Class clsDateiverarbeitung
wdIndexwert = WMFile.GetVariableValue(reg_element_Ohne_SZ) wdIndexwert = WMFile.GetVariableValue(reg_element_Ohne_SZ)
If wdIndexwert Is Nothing = False Then If wdIndexwert Is Nothing = False Then
If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then
clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & _STRING)
wdIndexwert = wdIndexwert.ToString.TrimEnd wdIndexwert = wdIndexwert.ToString.TrimEnd
wdIndexwert = wdIndexwert.ToString.TrimStart wdIndexwert = wdIndexwert.ToString.TrimStart
clsLogger.AddDetailLog("Ausgelesener Indexwert = '" & wdIndexwert & "'") clsLogger.AddDetailLog("Ausgelesener Indexwert = '" & wdIndexwert & "'")
_STRING = _STRING.Replace(reg_element.Value, wdIndexwert.ToString) _STRING = _STRING.Replace(reg_element.Value, wdIndexwert.ToString)
clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & _STRING)
i += 1 i += 1
Else Else
clsLogger.Add(">> Achtung gelesener Wert ist ein Vektorfeld - keine Umbenennung möglich ", False, "clsProfil.Profil_Durchlauf") clsLogger.Add(">> Achtung gelesener Wert ist ein Vektorfeld - keine Umbenennung möglich ", False, "clsProfil.Profil_Durchlauf")
@ -241,5 +382,20 @@ Public Class clsDateiverarbeitung
End Try End Try
End Function End Function
Public Class BNSDocument
Public Doksourcetype As Integer = 3
Public Pfad As String
Public Ivalidfrom As DateTime
Public Ivaliduntil As DateTime
Public Bemerkung As String
Public Primaer As Boolean = False
Public Fremsysid As Integer = 1
Public Kategorien As List(Of BNSDocumentCategory)
End Class
Public Class BNSDocumentCategory
Public Id As Integer
End Class
End Class End Class

View File

@ -5,7 +5,7 @@ Public Class clsEmail
Private Shared MailEmpfaenger, MailFrom, MAilSMTP, MailUser, MailUser_PW As String Private Shared MailEmpfaenger, MailFrom, MAilSMTP, MailUser, MailUser_PW As String
Public Shared Function Init() Public Shared Function Init()
Try Try
Dim DT As DataTable = clsSQLITE.Return_Datatable("select * from TBKONFIGURATION where GUID = 1 and EMAIL_AKTIV = 1") Dim DT As DataTable = clsDatatabase.Return_Datatable("select * from TBKONFIGURATION where GUID = 1 and EMAIL_AKTIV = 1")
If DT.Rows.Count = 1 Then If DT.Rows.Count = 1 Then
For Each row As DataRow In DT.Rows For Each row As DataRow In DT.Rows
MailEmpfaenger = row.Item("EMAIL_EMP") MailEmpfaenger = row.Item("EMAIL_EMP")

View File

@ -51,7 +51,7 @@ Public Class clsHelper
Return False Return False
End Try End Try
End Function End Function
Public Shared Function Datei_Versionieren(Dateiname As String, LOG_ERR_ONLY As Boolean, modul As String) Public Shared Function Datei_Versionieren(Dateiname As String, modul As String)
Try Try
Dim version As Integer = 1 Dim version As Integer = 1
Dim extension As String = Path.GetExtension(Dateiname) 'Quelldatei.Substring(Quelldatei.LastIndexOf(".")) Dim extension As String = Path.GetExtension(Dateiname) 'Quelldatei.Substring(Quelldatei.LastIndexOf("."))
@ -61,7 +61,7 @@ Public Class clsHelper
'Automatische Versionierung mit Tilde + Version 'Automatische Versionierung mit Tilde + Version
Do While file_exists(Stammname & "\" & neuername & extension) = True Do While file_exists(Stammname & "\" & neuername & extension) = True
clsLogger.Add(" - Datei " & endgueltigerDateiname & " ist vorhanden - Datei wird versioniert", False) clsLogger.Add(" - Datei " & endgueltigerDateiname & " ist vorhanden - Datei wird versioniert", False)
neuername = Stammname & clsSQLITE.konf_VERSIONSTRENNZEICHEN & version neuername = Stammname & "_"
endgueltigerDateiname = neuername & extension endgueltigerDateiname = neuername & extension
version = version + 1 version = version + 1
Loop Loop

View File

@ -2,14 +2,14 @@
Public Class clsLogger Public Class clsLogger
Private Shared LogPath As String Private Shared LogPath As String
Private Shared LogFilename As String Public Shared LogFilename As String
Private Shared logErr_name As String Private Shared logErr_name As String
Private Shared log_string As String Private Shared log_string As String
Public Shared Function Init(ByVal speicherort As String, ByVal prefix As String) Public Shared Function Init(ByVal speicherort As String, ByVal prefix As String)
Try Try
'Den Speicherort festlegen 'Den Speicherort festlegen
SetSpeicherort() SetSpeicherort()
Dim logf_name As String = LogPath & "\" & prefix & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt" Dim logf_name As String = LogPath & "\" & System.DateTime.Now.ToString("yyyy_MM_dd") & prefix & ".txt"
logErr_name = LogPath & "\" & "ErrorLog_" & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt" logErr_name = LogPath & "\" & "ErrorLog_" & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt"
Dim anz As Integer = 1 Dim anz As Integer = 1
Do While File.Exists(logf_name) Do While File.Exists(logf_name)
@ -116,12 +116,12 @@ Public Class clsLogger
Catch ex As Exception Catch ex As Exception
LogEscalation_Error("Unexpected Error in AddError - Error: " & ex.Message) LogEscalation_Error("Unexpected Error in AddError - Error: " & ex.Message)
End Try End Try
End Sub End Sub
Public Shared Sub AddDetailLog(ByVal text As String) Public Shared Sub AddDetailLog(ByVal text As String)
Try Try
If clsSQLITE.konf_logerrorsonly = False Then If LOG_ERRORS_ONLY = False Then
If log_string <> "" Then If log_string <> "" Then
log_string &= vbNewLine log_string &= vbNewLine
End If End If

View File

@ -1,22 +1,25 @@
Imports WINDREAMLib Imports WINDREAMLib
Imports System.IO Imports System.IO
Imports System.Text
Imports Newtonsoft.Json
Public Class clsProfil Public Class clsProfil
#Region "***** Variablen *****" #Region "***** Variablen *****"
Public Shared _Profilname, _profObjekttyp, _profwdSuche, _profDay, _profRunType As String
Public Shared _profGUID As Integer
Public Shared _proflastRun As Date
Private email As New clsEmail
Private Shared CriticalError As Boolean = False Private Shared CriticalError As Boolean = False
Private Shared WD_aktivesDokument As WMObject Private Shared WD_aktivesDokument As WMObject
#End Region #End Region
Public Shared Function Init(guid As Integer) Public Shared Function Init(guid As Integer)
Try Try
clsLogger.AddDetailLog("Start Initialisierung Profil für GUID: " & guid.ToString) clsLogger.AddDetailLog("Start Initialisierung Profil für GUID: " & guid.ToString)
Dim DT As DataTable = clsSQLITE.Return_Datatable("Select * from TBPROFIL where GUID = " & guid & " AND Running = 0") Dim DT As DataTable = clsDatatabase.Return_Datatable("Select * from TBWMRH_PROFIL where GUID = " & guid)
If DT.Rows.Count > 0 Then If DT.Rows.Count > 0 Then
For Each DR As DataRow In DT.Rows For Each DR As DataRow In DT.Rows
_profGUID = guid _profGUID = guid
@ -26,7 +29,7 @@ Public Class clsProfil
If CBool(DR.Item("Aktiv")) = False Then If CBool(DR.Item("Aktiv")) = False Then
clsLogger.Add("## Profil '" & _Profilname & "' ist inaktiv geschaltet", False) clsLogger.Add("## Profil '" & _Profilname & "' ist inaktiv geschaltet", False)
clsLogger.Add("", False) clsLogger.Add("", False)
Return 0 Return False
Else Else
_profObjekttyp = CStr(DR.Item("Objekttyp")) _profObjekttyp = CStr(DR.Item("Objekttyp"))
_profwdSuche = CStr(DR.Item("WindreamSuche")) _profwdSuche = CStr(DR.Item("WindreamSuche"))
@ -39,9 +42,9 @@ Public Class clsProfil
Next Next
Else Else
clsLogger.Add("Achtung - keine Profile für diesen Durchlaufthread verfügbar", False) clsLogger.Add("Achtung - keine Profile für diesen Durchlaufthread verfügbar", False)
Return 1 Return False
End If End If
Catch ex As Exception Catch ex As Exception
clsLogger.AddError(ex.Message, "Profil_Init") clsLogger.AddError(ex.Message, "Profil_Init")
Return False Return False
@ -51,216 +54,363 @@ Public Class clsProfil
'Durchlauf des Profils wird aus dem Service gestartet wenn Init = True war 'Durchlauf des Profils wird aus dem Service gestartet wenn Init = True war
Public Shared Function Profil_Durchlauf() Public Shared Function Profil_Durchlauf()
Dim _error As Boolean = False Dim _error As Boolean = False
Try 'Try
Dim Run_Profile As Boolean = False Dim Run_Profile As Boolean = False
'Soll die Verarbeitung heute durchgeführt werden?? 'Soll die Verarbeitung heute durchgeführt werden??
Dim Dayofweek As Integer = My.Computer.Clock.LocalTime.DayOfWeek Dim Dayofweek As Integer = My.Computer.Clock.LocalTime.DayOfWeek
If _profDay.Substring(Dayofweek - 1, 1) = 1 Then If _profDay.Substring(Dayofweek - 1, 1) = 1 Then
'Verarbeitung soll heute durchgeführt werden 'Verarbeitung soll heute durchgeführt werden
clsLogger.AddDetailLog("Verarbeitung soll heute durchgeführt werden!") clsLogger.AddDetailLog("Verarbeitung soll heute durchgeführt werden!")
clsLogger.AddDetailLog("_RunType: " & _profRunType) clsLogger.AddDetailLog("_RunType: " & _profRunType)
Dim arr As String() Dim arr As String()
arr = _profRunType.Split(";") arr = _profRunType.Split(";")
clsLogger.AddDetailLog("arr(1): " & arr(1).ToString) clsLogger.AddDetailLog("arr(1): " & arr(1).ToString)
Select Case arr(0) Select Case arr(0)
Case "TIME" Case "TIME"
Dim Time_last As DateTime = clsSQLITE.konf_LASTTICK.ToShortTimeString ' Dim intervall As Integer = clsSQLITE.konf_intervall / 60
' Dim intervall As Integer = clsSQLITE.konf_intervall / 60 clsLogger.AddDetailLog("Intervall: 1 Minute")
clsLogger.AddDetailLog("Intervall: 1 Minute") Dim Time_next As DateTime = _proflastRun.AddMinutes(1)
Dim Time_next As DateTime = _proflastRun.AddMinutes(1) Dim _RunTime As Date = CDate(arr(1))
Dim _RunTime As Date = CDate(arr(1)) clsLogger.AddDetailLog("ProfilTime: " & _RunTime)
clsLogger.AddDetailLog("ProfilTime: " & _RunTime) clsLogger.AddDetailLog("_RunTime.ToShortTimeString: " & _RunTime.ToShortTimeString & " # " & "Now.ToShortTimeString: " & Now.ToShortTimeString)
clsLogger.AddDetailLog("_RunTime.ToShortTimeString: " & _RunTime.ToShortTimeString & " # " & "Now.ToShortTimeString: " & Now.ToShortTimeString) If Time_next.ToString.StartsWith("11.11.1911") Then
If Time_next.ToString.StartsWith("11.11.1911") Then clsLogger.AddDetailLog("Manueller Durchlauf des Profils - 11.11.1911")
clsLogger.AddDetailLog("Manueller Durchlauf des Profils - 11.11.1911") Run_Profile = True
Run_Profile = True
Else
'Ist die Uhrzeit in der Range
If _RunTime.ToShortTimeString = Now.ToShortTimeString Then
Run_Profile = True
End If
End If
Case "INTV"
'Die Differenz berechnen
Dim DiffMin As Integer = DateDiff(DateInterval.Minute, _proflastRun, Date.Now)
Dim msg As String
msg = "Minutenangaben: " & vbNewLine
msg = msg & "DiffMin: " & DiffMin & vbNewLine
msg = msg & "Intervall: " & arr(1)
clsLogger.AddDetailLog(msg)
If DiffMin >= CInt(arr(1)) Then
'Den Durchlauf erlauben
Run_Profile = True
End If
Case Else
clsLogger.Add(">> _profRunType konnte nicht ausgewertet werden - " & arr(0), False)
End Select
If Run_Profile = True Then
clsLogger.Add(">> Start des Durchlaufes für Profil '" & _Profilname & "'", False)
'den Durchlaufszeitpunkt speichern
clsSQLITE.Execute_non_Query("Update TBPROFIL SET Running = 1 WHERE GUID = " & _profGUID)
clsLogger.AddDetailLog("Prüfen der windream-Suche.......")
If File.Exists(_profwdSuche) = False Then
clsLogger.Add("Die Windream-Suche '" & _profwdSuche & "' existiert nicht!", True, "clsProfil.Profil_Durchlauf")
'wenn die gesuchte File eine Suche ist: per MAil informierne und Indexierung abbrechen
If clsSQLITE.konf_EmailAktiv Then
clsEmail.Send_EMail("Fehler in windream-ResultHandler", "<br> >> Profilname: '" & _Profilname & "'<br> >> Die windream-Suche : " & _profwdSuche & " konnte nicht gefunden werden!" & _
"<br> >> Mögliche Fehlerursache: Das W-Laufwerk ist nicht verfügbar!")
End If
Return False
Else Else
' windream-Suche für Profil starten 'Ist die Uhrzeit in der Range
clsLogger.AddDetailLog("GetSearchDocuments für Suche '" & _profwdSuche & "' starten: ") If _RunTime.ToShortTimeString = Now.ToShortTimeString Then
Dim windreamSucheErgebnisse As WMObjects = clsWindream_allgemein.GetSearchDocuments(_profwdSuche) Run_Profile = True
If windreamSucheErgebnisse.Count > 0 Then
clsLogger.Add("- Insgesamt sollen '" & windreamSucheErgebnisse.Count & "' Dateien bearbeitet werden", False)
clsLogger.AddDetailLog("SELECT * FROM TBPROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_JOB As DataTable = clsSQLITE.Return_Datatable("SELECT * FROM TBPROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_FILE_JOB As DataTable = clsSQLITE.Return_Datatable("SELECT * FROM TBPROFIL_FILE_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
clsLogger.AddDetailLog("DT_PROFIL_JOB und DT_PROFIL_FILE_JOB generiert ")
If DT_PROFIL_JOB.Rows.Count > 0 Then
clsLogger.AddDetailLog("DT_PROFIL_JOB.Rows.Count > 0")
If clsDateiverarbeitung.InitProfilData = True Then
clsLogger.AddDetailLog("clsDateiverarbeitung.InitProfilData = True")
For Each dok As WMObject In windreamSucheErgebnisse
For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
Case "Create Mail Attachment".ToUpper
Case "Export HDD".ToUpper
clsLogger.AddDetailLog("Case Export HDD")
'Für jedes Dokument in der Windream-Ergebnisliste
'For Each dok As WMObject In windreamSucheErgebnisse
' aktuelles Dokument zum Export bereitstellen
EXPORTED_FILENAME = ""
If clsDateiverarbeitung.Export_File(dok, DR_PR_JB.Item("STRING1")) = True Then
If DT_PROFIL_FILE_JOB.Rows.Count > 0 Then
clsLogger.AddDetailLog("Anzahl ")
'Für jeden File-Job
Dim errorFileJob As Boolean = False
For Each DR_PR_FILE_JOB As DataRow In DT_PROFIL_FILE_JOB.Rows
If errorFileJob = True Then Exit For
Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
Case "Set Index".ToLower
Try
'Überprüfen ob Value bereits gesetzt wurde?
Dim idxName As String = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim idxvalue As String = DR_PR_FILE_JOB.Item("STRING2").ToString
If idxvalue.Contains("[%DATETIME]") Then
idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
End If
clsLogger.AddDetailLog("Datei soll mit Index '" & idxName & "'indexiert werden...")
Dim arrIndex() As String
ReDim Preserve arrIndex(0)
arrIndex(0) = idxName
clsLogger.AddDetailLog("...nach arrIndex")
Dim arrValue() As String
Dim aktvalue As Object
aktvalue = dok.GetVariableValue(idxName)
clsLogger.AddDetailLog("...nach aktValue zuweisen..")
If aktvalue Is Nothing Then
clsLogger.AddDetailLog("Index '" & idxName & "' ist noch leer.")
ReDim Preserve arrValue(0)
arrValue(0) = idxvalue
Else
clsLogger.AddDetailLog("Index '" & idxName & "' ist bereits gefüllt.")
Dim myArray()
ReDim myArray(0)
myArray(0) = idxvalue
Dim VektorArray()
VektorArray = Return_VektorArray(dok, idxName, myArray, True)
If VektorArray Is Nothing = False Then
ReDim arrValue(VektorArray.Length - 1)
Array.Copy(VektorArray, arrValue, VektorArray.Length)
End If
End If
If arrValue Is Nothing = False Then
clsWindream_Index.RunIndexing(dok, arrIndex, arrValue, _profObjekttyp)
Else
clsLogger.Add(">> arrValue is nothing - keine Indexierung", False, "clsProfil.Profil_Durchlauf")
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
End Try
Case "Rename File with windream Index".ToLower
clsLogger.AddDetailLog("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
clsDateiverarbeitung.Rename_File(dok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Execute Oracle Command"
Try
Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
errorFileJob = clsDateiverarbeitung.RUN_ORACLE_COMMAND(dok, oracleconnectionstring, oracleCommandRAW)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteOracleCommand)")
End Try
Case "Execute MSSQL Command"
Try
errorFileJob = clsDateiverarbeitung.RUN_MSSQL_COMMAND(dok, DR_PR_FILE_JOB.Item("STRING1").ToString, DR_PR_FILE_JOB.Item("STRING2").ToString)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteMSSQLCommand)")
End Try
End Select
'Abschluss Bearbeitung File Job
clsLogger.WriteLog()
Next
Else
clsLogger.Add(">> KEINE File-JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
End If
Else
clsSQLITE.Execute_non_Query("UPDATE TBPROFIL SET Running = 0, LETZTER_DURCHLAUF = DATETIME ('now' , 'localtime') WHERE GUID = " & _profGUID)
End If
'Next
End Select
'Abschluss Bearbeitung Job
clsLogger.WriteLog()
Next
Next
Else
clsLogger.Add(">> Initialisierung Profil nicht erfolgreich", True)
clsLogger.WriteLog()
End If
Else
clsLogger.Add(">> KEINE JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
End If
Else
' keine Dateien zum Importieren
clsLogger.Add(">> Keine windream-Dokumente für Profil '" & _Profilname & "' vorhanden/gefunden.", False)
clsLogger.Add("", False)
clsLogger.WriteLog()
End If End If
End If End If
Case "INTV"
'Die Differenz berechnen
Dim DiffMin As Integer = DateDiff(DateInterval.Minute, _proflastRun, Date.Now)
Dim msg As String
msg = "Minutenangaben: " & vbNewLine
msg = msg & "DiffMin: " & DiffMin & vbNewLine
msg = msg & "Intervall: " & arr(1)
clsLogger.AddDetailLog(msg)
If DiffMin >= CInt(arr(1)) Then
'Den Durchlauf erlauben
Run_Profile = True
End If
Case Else
clsLogger.Add(">> _profRunType konnte nicht ausgewertet werden - " & arr(0), False)
End Select
If Run_Profile = True Then
clsLogger.Add(">> Start des Durchlaufes für Profil '" & _Profilname & "'", False)
'den Durchlaufszeitpunkt speichern
clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _profGUID)
clsLogger.AddDetailLog("Prüfen der windream-Suche.......")
If File.Exists(_profwdSuche) = False Then
clsLogger.Add("Die Windream-Suche '" & _profwdSuche & "' existiert nicht!", True, "clsProfil.Profil_Durchlauf")
'wenn die gesuchte File eine Suche ist: per MAil informierne und Indexierung abbrechen
clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 0 WHERE GUID = " & _profGUID)
clsLogger.WriteLog()
Return False
Else
' windream-Suche für Profil starten
clsLogger.AddDetailLog("GetSearchDocuments für Suche '" & _profwdSuche & "' starten: ")
Dim windreamSucheErgebnisse As WMObjects = clsWindream_allgemein.GetSearchDocuments(_profwdSuche)
If windreamSucheErgebnisse Is Nothing Then
clsLogger.Add("windreamSucheErgebnisse is nothing!", True, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
Return False
End If
If windreamSucheErgebnisse.Count > 0 Then
clsLogger.Add("- Insgesamt sollen '" & windreamSucheErgebnisse.Count & "' Dateien bearbeitet werden", False)
clsLogger.AddDetailLog("SELECT * FROM TBWMRH_PROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_JOB As DataTable = clsDatatabase.Return_Datatable("SELECT * FROM TBWMRH_PROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_FILE_JOB As DataTable = clsDatatabase.Return_Datatable("SELECT * FROM TBWMRH_PROFIL_FILE_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
clsLogger.AddDetailLog("DT_PROFIL_JOB und DT_PROFIL_FILE_JOB generiert ")
clsLogger.AddDetailLog("DT_PROFIL_JOB.Rows.Count = " & DT_PROFIL_JOB.Rows.Count)
clsLogger.AddDetailLog("DT_PROFIL_FILE_JOB.Rows.Count = " & DT_PROFIL_FILE_JOB.Rows.Count)
If DT_PROFIL_JOB.Rows.Count > 0 Then
If clsDateiverarbeitung.InitProfilData = True Then
clsLogger.AddDetailLog("clsDateiverarbeitung.InitProfilData = True")
'For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
' Dim result = DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
' Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
' Case "BNS json Download".ToUpper
' 'ARRAY oder Äqivalent bilden
' Dim sb As New StringBuilder()
' Dim sw As New StringWriter(sb)
' Using writer As JsonWriter = New JsonTextWriter(sw)
' writer.Formatting = Formatting.Indented
' writer.WriteStartObject()
' writer.WritePropertyName("CPU")
' writer.WriteValue("Intel")
' writer.WritePropertyName("PSU")
' writer.WriteValue("500W")
' writer.WritePropertyName("Drives")
' writer.WriteStartArray()
' writer.WriteValue("DVD read/writer")
' writer.WriteComment("(broken)")
' writer.WriteValue("500 gigabyte hard drive")
' writer.WriteValue("200 gigabype hard drive")
' writer.WriteEnd()
' writer.WriteEndObject()
' End Using
' Console.WriteLine(sb.ToString())
' End Select
'Next
Dim FileJobSuccessful As Boolean = False
For Each WMdok As WMObject In windreamSucheErgebnisse
For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
Case "Create Mail Attachment".ToUpper
Case "Export HDD".ToUpper
clsLogger.AddDetailLog("Case Export HDD")
'Für jedes Dokument in der Windream-Ergebnisliste
'For Each dok As WMObject In windreamSucheErgebnisse
' aktuelles Dokument zum Export bereitstellen
EXPORTED_FILENAME = ""
If clsDateiverarbeitung.Export_File(WMdok, DR_PR_JB.Item("STRING1")) = True Then
FileJobSuccessful = True
'If DT_PROFIL_FILE_JOB.Rows.Count > 0 Then
' clsLogger.AddDetailLog("Anzahl DT_PROFIL_FILE_JOB.Rows.Count:" & DT_PROFIL_FILE_JOB.Rows.Count)
' 'Für jeden File-Job
' For Each DR_PR_FILE_JOB As DataRow In DT_PROFIL_FILE_JOB.Rows
' If FileJobSuccessful = False Then
' clsLogger.Add("AUSSTIEG FOR SCHLEIFE...", True)
' clsLogger.WriteLog()
' Exit For
' End If
' Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
' Case "Set Index".ToLower
' Try
' 'Überprüfen ob Value bereits gesetzt wurde?
' Dim idxName As String = DR_PR_FILE_JOB.Item("STRING1").ToString
' Dim idxvalue As String = DR_PR_FILE_JOB.Item("STRING2").ToString
' If idxvalue.Contains("[%DATETIME]") Then
' idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
' End If
' clsLogger.AddDetailLog("Datei soll mit Index '" & idxName & "'indexiert werden...")
' Dim arrIndex() As String
' ReDim Preserve arrIndex(0)
' arrIndex(0) = idxName
' clsLogger.AddDetailLog("...nach arrIndex")
' Dim arrValue() As String
' Dim aktvalue As Object
' aktvalue = WMdok.GetVariableValue(idxName)
' clsLogger.AddDetailLog("...nach aktValue zuweisen..")
' If aktvalue Is Nothing Then
' clsLogger.AddDetailLog("Index '" & idxName & "' ist noch leer.")
' ReDim Preserve arrValue(0)
' arrValue(0) = idxvalue
' Else
' clsLogger.AddDetailLog("Index '" & idxName & "' ist bereits gefüllt.")
' Dim myArray()
' ReDim myArray(0)
' myArray(0) = idxvalue
' Dim VektorArray()
' VektorArray = Return_VektorArray(WMdok, idxName, myArray, True)
' If VektorArray Is Nothing = False Then
' ReDim arrValue(VektorArray.Length - 1)
' Array.Copy(VektorArray, arrValue, VektorArray.Length)
' End If
' End If
' If arrValue Is Nothing = False Then
' clsWindream_Index.RunIndexing(WMdok, arrIndex, arrValue, _profObjekttyp)
' Else
' clsLogger.Add(">> arrValue is nothing - keine Indexierung", False, "clsProfil.Profil_Durchlauf")
' End If
' Catch ex As Exception
' clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
' End Try
' Case "Rename File with windream Index".ToLower
' clsLogger.AddDetailLog("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
' clsDateiverarbeitung.Rename_File(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
' Case "Rename File with WMVector (only one)".ToLower
' clsLogger.AddDetailLog("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
' clsDateiverarbeitung.Rename_File_Vektor(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
' Case "Execute Oracle Command".ToLower
' Try
' clsLogger.AddDetailLog("Execute Oracle Comman.......")
' Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
' Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
' FileJobSuccessful = clsDateiverarbeitung.RUN_ORACLE_COMMAND(WMdok, oracleconnectionstring, oracleCommandRAW)
' Catch ex As Exception
' clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteOracleCommand)")
' End Try
' Case "Execute MSSQL Command".ToLower
' Try
' Dim MSSQLconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
' Dim MSSQLCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
' clsLogger.AddDetailLog("Execute MSSQL Command.......")
' FileJobSuccessful = clsDateiverarbeitung.RUN_MSSQL_COMMAND(WMdok, MSSQLconnectionstring, MSSQLCommandRAW)
' Catch ex As Exception
' clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteMSSQLCommand)")
' End Try
' End Select
' 'Abschluss Bearbeitung File Job
' clsLogger.WriteLog()
' Next
'Else
' clsLogger.Add(">> KEINE File-JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
' clsLogger.WriteLog()
'End If
Else
clsDatatabase.Execute_non_Query("UPDATE TBWMRH_PROFIL SET Running = 0, LETZTER_DURCHLAUF = Getdate() WHERE GUID = " & _profGUID)
End If
'Next
Case "BNS json Download".ToUpper
FileJobSuccessful = clsDateiverarbeitung.BNSjsonDownload(WMdok, DR_PR_JB.Item("STRING1"), DR_PR_JB.Item("STRING2"))
End Select
'Abschluss Bearbeitung Job
clsLogger.WriteLog()
Next
'##################################
'JETZT DER DURCHLAUF DER DATEI-JOBS
'##################################
If DT_PROFIL_FILE_JOB.Rows.Count > 0 Then
Dim filecount As Integer = 0
'Für jeden File-Job
For Each DR_PR_FILE_JOB As DataRow In DT_PROFIL_FILE_JOB.Rows
If FileJobSuccessful = False Then
clsLogger.Add("AUSSTIEG FOR SCHLEIFE...", True)
clsLogger.WriteLog()
Exit For
End If
Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
Case "Set Index".ToLower
Try
'Überprüfen ob Value bereits gesetzt wurde?
Dim idxName As String = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim idxvalue As String = DR_PR_FILE_JOB.Item("STRING2").ToString
If idxvalue.Contains("[%DATETIME]") Then
idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
End If
clsLogger.AddDetailLog("Datei soll mit Index '" & idxName & "'indexiert werden...")
Dim arrIndex() As String
ReDim Preserve arrIndex(0)
arrIndex(0) = idxName
clsLogger.AddDetailLog("...nach arrIndex")
Dim arrValue() As String
Dim aktvalue As Object
aktvalue = WMdok.GetVariableValue(idxName)
clsLogger.AddDetailLog("...nach aktValue zuweisen..")
If aktvalue Is Nothing Then
clsLogger.AddDetailLog("Index '" & idxName & "' ist noch leer.")
ReDim Preserve arrValue(0)
arrValue(0) = idxvalue
Else
clsLogger.AddDetailLog("Index '" & idxName & "' ist bereits gefüllt.")
Dim myArray()
ReDim myArray(0)
myArray(0) = idxvalue
Dim VektorArray()
VektorArray = Return_VektorArray(WMdok, idxName, myArray, True)
If VektorArray Is Nothing = False Then
ReDim arrValue(VektorArray.Length - 1)
Array.Copy(VektorArray, arrValue, VektorArray.Length)
End If
End If
If arrValue Is Nothing = False Then
clsWindream_Index.RunIndexing(WMdok, arrIndex, arrValue, _profObjekttyp)
Else
clsLogger.Add(">> arrValue is nothing - keine Indexierung", False, "clsProfil.Profil_Durchlauf")
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
End Try
Case "Rename File with windream Index".ToLower
clsLogger.AddDetailLog("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
clsDateiverarbeitung.Rename_File(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Rename File with WMVector (only one)".ToLower
clsLogger.AddDetailLog("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
clsDateiverarbeitung.Rename_File_Vektor(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Execute Oracle Command".ToLower
Try
clsLogger.AddDetailLog("Execute Oracle Comman.......")
Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
FileJobSuccessful = clsDateiverarbeitung.RUN_ORACLE_COMMAND(WMdok, oracleconnectionstring, oracleCommandRAW)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteOracleCommand)")
End Try
Case "Execute MSSQL Command".ToLower
Try
Dim MSSQLconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim MSSQLCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
clsLogger.AddDetailLog("Execute MSSQL Command.......")
FileJobSuccessful = clsDateiverarbeitung.RUN_MSSQL_COMMAND(WMdok, MSSQLconnectionstring, MSSQLCommandRAW)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteMSSQLCommand)")
End Try
End Select
If filecount >= 20 Then
clsLogger.WriteLog()
filecount = 0
End If
'Abschluss Bearbeitung File Job
Next
Else
clsLogger.Add(">> KEINE File-JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
End If
Next
clsLogger.WriteLog()
Else
clsLogger.Add(">> Initialisierung Profil nicht erfolgreich", True)
clsLogger.WriteLog()
End If
Else
clsLogger.Add(">> KEINE JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
End If
Else
' keine Dateien zum Importieren
clsLogger.Add(">> Keine windream-Dokumente für Profil '" & _Profilname & "' vorhanden/gefunden.", False)
clsLogger.Add("", False)
clsLogger.WriteLog()
End If
End If End If
Else
clsLogger.AddDetailLog("Verarbeitung für heute NICHT konfiguriert")
clsLogger.WriteLog()
End If End If
'Abschluss des Profiles Else
clsSQLITE.Execute_non_Query("UPDATE TBPROFIL SET Running = 0, LETZTER_DURCHLAUF = DATETIME ('now' , 'localtime') WHERE GUID = " & _profGUID) clsLogger.AddDetailLog("Verarbeitung für heute NICHT konfiguriert")
clsLogger.AddDetailLog("'UPDATE TBPROFIL SET Running = 0' ausgeführt")
clsLogger.WriteLog() clsLogger.WriteLog()
Return True End If
Catch ex As Exception 'Abschluss des Profiles
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf") clsDatatabase.Execute_non_Query("UPDATE TBWMRH_PROFIL SET Running = 0, LETZTER_DURCHLAUF = GETDATE() WHERE GUID = " & _profGUID)
clsSQLITE.Execute_non_Query("Update TBPROFIL SET Running = 0 WHERE GUID = " & _profGUID) clsLogger.AddDetailLog("'UPDATE TBWMRH_PROFIL SET Running = 0' ausgeführt")
CriticalError = False clsLogger.WriteLog()
DDWDResultHandler.threadRunner.CancelAsync() Return True
Return False 'Catch ex As Exception
End Try ' clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf")
' clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 0 WHERE GUID = " & _profGUID)
' CriticalError = False
' Return False
'End Try
End Function End Function
Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object, CheckDuplikat As Boolean) Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object, CheckDuplikat As Boolean)
Try Try
@ -366,5 +516,8 @@ Public Class clsProfil
End Try End Try
End Function End Function
End Class End Class

View File

@ -2,7 +2,7 @@
Imports WMOSRCHLib Imports WMOSRCHLib
Public Class clsWindream_Index Public Class clsWindream_Index
Inherits clsWindream_allgemein Inherits clsWindream_allgemein
#Region "+++++ Konstanten +++++" #Region "+++++ Konstanten +++++"
Protected Const WMObjectEditModeObject = &H1F Protected Const WMObjectEditModeObject = &H1F
Protected Const WMObjectStreamOpenModeReadWrite = 2 Protected Const WMObjectStreamOpenModeReadWrite = 2
@ -280,16 +280,14 @@ Public Class clsWindream_Index
Dim _date As Boolean = False Dim _date As Boolean = False
Dim _dbl As Boolean = False Dim _dbl As Boolean = False
Dim _bool 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
clsLogger.AddDetailLog("Indexierung von Index '" & indexname & "'") clsLogger.AddDetailLog("Indexierung von Index '" & indexname & "'")
'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87")
Dim value = aValues(i) Dim value = aValues(i)
Dim convertValue Dim convertValue
Dim vektor As Boolean = False Dim vektor As Boolean = False
'Den Typ des Index-Feldes auslesen 'Den Typ des Index-Feldes auslesen
'MsgBox(value.GetType.ToString)
Select Case (vType) Select Case (vType)
'Case WMObjectVariableValueTypeUndefined 'Case WMObjectVariableValueTypeUndefined
Case WMObjectVariableValueTypeString Case WMObjectVariableValueTypeString
@ -379,7 +377,7 @@ Public Class clsWindream_Index
Case Else Case Else
clsLogger.AddDetailLog("Typ des windream-Indexes konnte nicht bestimmt werden!") clsLogger.AddDetailLog("Typ des windream-Indexes konnte nicht bestimmt werden!")
clsLogger.AddDetailLog("Versuch des Auslesens (vType): " & vType) clsLogger.AddDetailLog("Versuch des Auslesens (vType): " & vType)
'MsgBox(vType & vbNewLine & CStr(value), MsgBoxStyle.Exclamation, "Marlon-Case Else")
convertValue = "" convertValue = ""
End Select End Select
If vektor = False Then If vektor = False Then
@ -599,79 +597,7 @@ Public Class clsWindream_Index
#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++" #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
clsLogger.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
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "GetSearchDocuments")
Return Nothing
End Try
End If
Return Nothing
End Function
''' Liefert den Wert eines Indexes als String ''' Liefert den Wert eines Indexes als String
''' _indexname = Name des zu überprüfenden Indexfeldes ''' _indexname = Name des zu überprüfenden Indexfeldes
Public Function GetValueforIndex(ByVal _fullfilepath As String, _indexname As String) Public Function GetValueforIndex(ByVal _fullfilepath As String, _indexname As String)
@ -684,7 +610,7 @@ Public Class clsWindream_Index
IndexwertAusWindream = _dok.GetVariableValue(_indexname) IndexwertAusWindream = _dok.GetVariableValue(_indexname)
Return IndexwertAusWindream.ToString Return IndexwertAusWindream.ToString
Catch ex As Exception Catch ex As Exception
'MsgBox(ex.Message)
Return Nothing Return Nothing
End Try End Try
End Function End Function

View File

@ -295,6 +295,7 @@ Public Class clsWindream_allgemein
''' <remarks></remarks> ''' <remarks></remarks>
Public Shared Function GetCurrentServer() As String Public Shared Function GetCurrentServer() As String
Try Try
clsLogger.AddDetailLog(oBrowser.GetCurrentServer.ToString)
Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception Catch ex As Exception
clsLogger.AddError("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden. Fehler: " & ex.Message, "clswindream.GetCurrentServer") clsLogger.AddError("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden. Fehler: " & ex.Message, "clswindream.GetCurrentServer")
@ -404,18 +405,14 @@ Public Class clsWindream_allgemein
End Try End Try
End Function End Function
Public Shared Function GetSearchDocuments(ByVal wdfLocation As String) Public Shared Function GetSearchDocuments(ByVal wdfLocation As String)
'wdfLocation = 'W:\System\Suchen\WDRH\TestPDF.wdf'
Try Try
Dim SearchName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) Dim SearchName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1)
Dim SearchPath = wdfLocation.Substring(0, wdfLocation.Length - SearchName.Length) Dim SearchPath = wdfLocation.Substring(0, wdfLocation.Length - SearchName.Length)
clsLogger.Add("WMSearch: " & wdfLocation.ToLower, False)
If System.IO.File.Exists(wdfLocation.ToLower) Then If System.IO.File.Exists(wdfLocation.ToLower) Then
clsLogger.AddDetailLog("Search exists") clsLogger.AddDetailLog("Search exists")
Else
clsLogger.AddError("windream-search not existing: " & wdfLocation)
Return Nothing
End If End If
oController.CheckSearchProfile(wdfLocation.ToLower) oController.CheckSearchProfile(wdfLocation.ToLower) 'wdfLocation.ToLower)
clsLogger.AddDetailLog("oController erzeugt") clsLogger.AddDetailLog("oController erzeugt")
Dim suchTyp = oController.SearchProfileTargetProgID Dim suchTyp = oController.SearchProfileTargetProgID
Dim ExSettings As Object Dim ExSettings As Object
@ -427,17 +424,12 @@ Public Class clsWindream_allgemein
Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch") Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch")
Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch") Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch")
clsLogger.AddDetailLog("WD Objekte in GetSearchDocuments erzeugt") clsLogger.AddDetailLog("WD Objekte in GetSearchDocuments erzeugt")
If suchTyp Is Nothing Then
clsLogger.AddError("suchTyp is nothing")
Return Nothing
End If
clsLogger.AddDetailLog(suchTyp.ToString.ToUpper) clsLogger.AddDetailLog(suchTyp.ToString.ToUpper)
'' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments() '' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments()
Select Case suchTyp.ToString.ToUpper Select Case suchTyp.ToString.ToUpper
Case "WMOSRCH.WMQUICKSEARCH" Case "WMOSRCH.WMQUICKSEARCH"
srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchQuick.WMSession) oConnect.LoginSession(srchQuick.WMSession)
clsLogger.AddDetailLog("Session created...")
srchQuick.ClearSearch() srchQuick.ClearSearch()
srchQuick.SearchProfilePath = SearchPath srchQuick.SearchProfilePath = SearchPath
srchQuick.LoadSearchProfile(SearchName) srchQuick.LoadSearchProfile(SearchName)
@ -447,15 +439,16 @@ Public Class clsWindream_allgemein
srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
clsLogger.AddDetailLog("Session created...") clsLogger.AddDetailLog("Session created...")
oConnect.LoginSession(srchIndex.WMSession) oConnect.LoginSession(srchIndex.WMSession)
srchIndex.ClearSearch() clsLogger.AddDetailLog("LoginSession...")
srchIndex.SearchProfilePath = SearchPath srchIndex.SearchProfilePath = SearchPath
clsLogger.AddDetailLog("SearchPath...")
srchIndex.LoadSearchProfile(SearchName) srchIndex.LoadSearchProfile(SearchName)
clsLogger.AddDetailLog("LoadSearchProfile...")
oSearch = srchIndex.GetSearch() oSearch = srchIndex.GetSearch()
clsLogger.AddDetailLog("GetSearch...")
Case "WMOSRCH.WMOBJECTTYPESEARCH" Case "WMOSRCH.WMOBJECTTYPESEARCH"
srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer) srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchObjectType.WMSession) oConnect.LoginSession(srchObjectType.WMSession)
clsLogger.AddDetailLog("Session created...")
srchObjectType.ClearSearch() srchObjectType.ClearSearch()
srchObjectType.SearchProfilePath = SearchPath srchObjectType.SearchProfilePath = SearchPath
srchObjectType.LoadSearchProfile(SearchName) srchObjectType.LoadSearchProfile(SearchName)

View File

@ -1,398 +0,0 @@
Imports WINDREAMLib
Imports WINDREAMLib.WMCOMEvent
Imports WINDREAMLib.WMEntity
Imports WINDREAMLib.WMObjectEditMode
Imports WINDREAMLib.WMSearchOperator
Imports WINDREAMLib.WMSearchRelation
Imports WMOBRWSLib
Public Class ClassWindream_allgemein
#Region "+++++ Konstanten +++++"
Const DEBUG = AUS
Const AUS = 0
Const WINDREAM = 1
Const VARIABLEN = 2
#End Region
#Region "+++++ Variablen +++++"
Public oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public oSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public oBrowser As New WMOBRWSLib.ServerBrowser
Public oDokumentTypen As WINDREAMLib.WMObjects
#End Region
#Region "+++++ Allgemeine Methoden und Funktionen +++++"
''' <summary>
''' Konstruktor für die windream-Klasse
''' </summary>
''' <remarks></remarks>
Sub New()
' wenn ein Fehler bei der Initialisierung auftrat
If Not Me.Init() Then
' Nachricht ausgeben
MsgBox("Es trat ein Fehler bei der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind.", MsgBoxStyle.Exclamation, "Fehler bei Initialisierung")
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
End Sub
''' <summary>
''' Initialisiert die statische Klasse (Login, Session starten, usw.)
''' </summary>
''' <returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
''' <remarks></remarks>
Public Function Init() As Boolean
Try
Try
' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
Me.oSession = CreateObject("Windream.WMSession", Me.GetCurrentServer)
'If My.Settings.vDetailLog Then ClassLogger.Add(" >> windream-Server: '" & Me.GetCurrentServer & "'", False)
' Connection-Objekt instanziieren
Me.oConnect = CreateObject("Windream.WMConnect")
'MsgBox("windrem init 'ed")
Catch ex As Exception
Return False
End Try
' wenn windream nicht angemeldet ist
If Not Me.IsLoggedIn Then
' Art der Anmeldung an windream festlegen
' 0x0L (also 0) = Standard windream Benutzer
' WM_MODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.)
' WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen
Me.oConnect.ModuleID = 0
' setzt die minimal erwartete windream-Version
Me.oConnect.MinReqVersion = "3"
' -- Impersonifizierung nur möglich mit registry-eintrag --
' oConnect.UserName "\schulung\windream"
' oConnect.Password "windream"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
Me.oConnect.LoginSession(Me.oSession)
If Me.oSession.aLoggedin = False Then
MsgBox("Es konnte keine Verbindung mit dem windream-Server hergestellt werden", MsgBoxStyle.Exclamation, "Verbindung konnte nicht hergestellt werden")
Return False
End If
'If My.Settings.vDetailLog Then
' ClassLogger.Add(" >> windream-Version: '" & oSession.GetSystemInfo("WindreamVersion") & "'", False)
'End If
' AUSGABE VON SYSTEMINFORMATIONEN
' Gibt die Versionsart (Lizenztyp) also Small-Business-Edition (SBE), Small-Business-Extension (SBX)
' oder Business-Edition (BE) aus
'MsgBox("WindreamVersion: " & oSession.GetSystemInfo("WindreamVersion") & vbNewLine & "LicenceKey: " & oSession.GetSystemInfo("LicenceKey") & vbNewLine & _
' vbNewLine & "LicenceName: " & oSession.GetSystemInfo("LicenceName"))
'Dim WMCtrl As AISCONTROLDATACOMLib.AISControlData
'WMCtrl = New AISCONTROLDATACOMLib.AISControlData
'' liefert die Versionsnummer des Clients
'MsgBox(WMCtrl.WMWorkstationBuildNo)
'MsgBox(WMCtrl.W
'' liefert den Servernamen des angemeldeten windreams
'MsgBox(WMCtrl.WMServerName)
Try
Me.oSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden
Me.oDokumentTypen = Me.oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Catch ex As Exception
Return False
End Try
End If
Return True
Catch ex As Exception
If Err.Number = -2147220985 Then
MsgBox("Die installierte windream-Version ist nicht ausreichend für den Betrieb der Tool Collection für windream." & vbNewLine & _
"Bitte kontaktieren Sie Digital Data." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & Err.Description, MsgBoxStyle.Exclamation, "Unzureichende windream-Version")
Else
MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Login an windream")
End If
Return False
End Try
End Function
#End Region
#Region "+++++ Funktionen die für den Objekttyp relevate Informationen zurückliefern +++++"
''' <summary>
''' Liefert alle Objekttypen des aktuellen Servers als windream-Objekte.
''' </summary>
''' <returns>Alle Objekttypen als WMObjects-Objekt</returns>
''' <remarks></remarks>
Public Function GetObjecttypesAsObjects() As WMObjects
Try
Return Me.oDokumentTypen
Catch ex As Exception
MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen der Objekttypen")
Return Nothing
End Try
End Function
''' <summary>
''' Liefert alle Objekttypen des aktuellen Servers als Array aus Strings.
''' </summary>
''' <returns>Array mit allen Objekttypen als Strings</returns>
''' <remarks></remarks>
Public Function GetObjecttypesAsStrings() As String()
Try
Dim objektTypenStr(Me.oDokumentTypen.Count) As String
For i As Integer = 0 To Me.oDokumentTypen.Count
objektTypenStr(i) = Me.oDokumentTypen.Item(i).aName
Next
Return objektTypenStr
Catch ex As Exception
MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen der Objekttypen als String")
Return Nothing
End Try
End Function
Public Function GetTypeOfIndex(ByVal indexname As String) As Integer
Try
Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' Liefert alle Indexe eines Objekttypen.
''' </summary>
''' <param name="name">Name des Objekttyps</param>
''' <returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns>
''' <remarks></remarks>
Public Function GetIndicesByObjecttype(ByVal Objecttype_name As String) As String()
Try
Dim oObjectType As WMObject
Dim oIndexAttributes As WMObjectRelation
Dim oIndexAttribute As WMObject
Dim oIndex As WMObject
Dim oRelProperties As WMObjectRelationClass
' den Objekttyp laden
oObjectType = Me.oSession.GetWMObjectByName(WMEntityObjectType, Objecttype_name)
' Beziehung zu Indizes des Objekttyp auslesen
oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes")
' Array für Indizes vorbereiten
Dim aIndexNames(oIndexAttributes.Count - 1) As String
' alle Indizes durchlaufen
For j As Integer = 0 To oIndexAttributes.Count - 1
' aktuellen Index auslesen
oIndexAttribute = oIndexAttributes.Item(j)
' Eigenschaften des Index auslesen
oRelProperties = oIndexAttribute.GetWMObjectRelationByName("Attribute")
' Index aus den Eigenschaften auslesen
oIndex = oRelProperties.Item(0)
' Indexname speichern
aIndexNames(j) = oIndex.aName
Next
' Indexarray zurückgeben
' Indexarray zurückgeben
Array.Sort(aIndexNames)
Return aIndexNames
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen der windream-Indexe")
Return Nothing
End Try
End Function
''' <summary>
''' Liefert einen Objekttyp als WMObject an Hand dessen Name.
''' </summary>
''' <param name="objekttypName">Name des Objekttyps</param>
''' <returns>Objekttyp als WMObject</returns>
''' <remarks></remarks>
Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject
Try
' alle Objekttypen auslesen
Dim oObjectTypes As WMObjects = Me.oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
' alle Objekttypen durchlaufen und nach dem mit dem angegebenen Namen suchen
For Each oObjectType As WMObject In oObjectTypes
If oObjectType.aName = objekttypName Then
Return oObjectType
End If
Next
Return Nothing
Catch ex As Exception
MsgBox("Es konnte ein Objekttyp nicht erstellt werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Objekttyp konnte nicht erstellt werden")
Return Nothing
End Try
End Function
''' <summary>
''' Überprüft ob der angegebene Index im Objekttyp existiert
''' </summary>
''' <param name="objekttyp">Name des zu durchsuchenden Objekttyps</param>
''' <param name="indexname">Name des zu suchenden Indexes</param>
''' <returns>Liefert True wenn der Index im Objekttyp existiert, sonst False</returns>
''' <remarks></remarks>
Public Function ExistIndexInObjekttyp(ByVal objekttyp As String, ByVal indexname As String) As Boolean
Try
Dim indexnamen() As String = Me.GetIndicesByObjecttype(objekttyp)
If indexnamen Is Nothing Then Return False
For Each index As String In indexnamen
If index = indexname Then Return True
Next
Catch ex As Exception
MsgBox("Beim Prüfen ob ein Index für einen Objekttypen existiert, ist ein Fehler aufgetreten." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Prüfen auf Existenz eines Index in einem Objekttyp")
End Try
Return False
End Function
#End Region
#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++"
''' <summary>
''' Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist.
''' </summary>
''' <returns>Anmeldestatus als Boolean</returns>
''' <remarks></remarks>
Public Function IsLoggedIn() As Boolean
Try
Return Me.oSession.aLoggedin
Catch ex As Exception
MsgBox("Es konnte nicht erfolgreich geprüft werden, ob das Programm am windream-Server angemeldted ist." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei Loggedin-Prüfung")
End Try
Return False
End Function
''' <summary>
''' Liefert den Servernamen an dem windream aktuell angemeldet ist.
''' </summary>
''' <returns>Servername als String</returns>
''' <remarks></remarks>
Public Function GetCurrentServer() As String
Try
Return Me.oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception
MsgBox("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Servers")
End Try
Return ""
End Function
'Public Function GetSharedCurrentServer() As String
' Try
' Return ClassWindream.oBrowser.GetCurrentServer
' Catch ex As Exception
' MsgBox("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Servers")
' End Try
' Return ""
'End Function
''' <summary>
''' Liefert das Windream-Laufwerk des windream-Servers, in Form '[Laufwerksbuchstabe]:'. (z.B. 'W:')
''' </summary>
''' <returns>Laufwerksbuchstabe mit Doppelpunkt als String</returns>
''' <remarks></remarks>
'Public Function GetWindreamDriveLetter() As String
' Try
' Dim oControl As AISCONTROLDATACOMLib.AISControlData
' Dim sDrive As String = ""
' oControl = New AISCONTROLDATACOMLib.AISControlData
' sDrive = oControl.GetStringValue(&H10040003)
' Return sDrive & ":"
' Catch ex As Exception
' MsgBox("Fehlernachricht: " & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Laufwerks")
' End Try
' Return ""
'End Function
''' <summary>
''' Liefert den Typen eines Indexes als Integer.
''' </summary>
''' <param name="indexname">Name des zu überprüfenden Indexfeldes</param>
''' <returns>Liefert eine Zahl, die einen Typen beschreibt</returns>
''' <remarks></remarks>
Public Function GetValuesfromAuswahlliste(ByVal _auswahlliste As String) As Object
Try
'Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
'Dim vType = oAttribute.getVariableValue("vItems")
'Return vType
Dim oChoiceList = oSession.GetWMObjectByName(WMEntityChoiceList, _auswahlliste)
If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then
Dim Values = oChoiceList
Values = oChoiceList.GetVariableValue("vItems")
Dim anz As Integer = 0
For Each CLItem In Values
If oChoiceList.aName IsNot Nothing Then
anz += 1
End If
Next
Dim strListe(anz - 1)
Dim zahl As Integer = 0
For Each CLItem In Values
If oChoiceList.aName IsNot Nothing Then
strListe(zahl) = CLItem
zahl += 1
End If
Next
Return strListe
Else
MsgBox("Auswahlliste: " & _auswahlliste & " nicht gefunden!", MsgBoxStyle.Critical, "Fehler:")
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler in GetValuesfromAuswahlliste:")
Return Nothing
End Try
End Function
#End Region
End Class

View File

@ -111,7 +111,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ClassAllgemeineFunktionen.vb" /> <Compile Include="ClassAllgemeineFunktionen.vb" />
<Compile Include="ClassWindream_allgemein.vb" />
<Compile Include="clsDatabase.vb" /> <Compile Include="clsDatabase.vb" />
<Compile Include="clsDateiverarbeitung.vb" /> <Compile Include="clsDateiverarbeitung.vb" />
<Compile Include="clsLogger.vb" /> <Compile Include="clsLogger.vb" />

View File

@ -1344,7 +1344,8 @@ Partial Class frmMain
'NumericUpDown 'NumericUpDown
' '
Me.NumericUpDown.Increment = New Decimal(New Integer() {5, 0, 0, 0}) Me.NumericUpDown.Increment = New Decimal(New Integer() {5, 0, 0, 0})
Me.NumericUpDown.Location = New System.Drawing.Point(352, 168) Me.NumericUpDown.Location = New System.Drawing.Point(352, 169)
Me.NumericUpDown.Maximum = New Decimal(New Integer() {500, 0, 0, 0})
Me.NumericUpDown.Name = "NumericUpDown" Me.NumericUpDown.Name = "NumericUpDown"
Me.NumericUpDown.Size = New System.Drawing.Size(38, 22) Me.NumericUpDown.Size = New System.Drawing.Size(38, 22)
Me.NumericUpDown.TabIndex = 101 Me.NumericUpDown.TabIndex = 101

View File

@ -215,7 +215,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAI ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAI
DAAAAk1TRnQBSQFMAgEBAwEAATgBAQE4AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo DAAAAk1TRnQBSQFMAgEBAwEAAUgBAQFIAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -588,7 +588,7 @@ Public Class frmMain
clsLogger.Add("", False) clsLogger.Add("", False)
'windream initialisieren 'windream initialisieren
If _windream.Init() = True Then If _windream.Init() = True Then
clsLogger.AddDetailLog("windream vollumfänglich initialisiert!") clsLogger.AddDetailLog("windream vollumfänglich initialisiert!")
'Zur sicherheit die DB nochmal initialiseren 'Zur sicherheit die DB nochmal initialiseren
If clsDatatabase.Init() = True Then If clsDatatabase.Init() = True Then
Dim DT As DataTable = clsDatatabase.Return_Datatable("SELECT GUID FROM TBWMRH_PROFIL WHERE AKTIV = 1 order by REIHENFOLGE") Dim DT As DataTable = clsDatatabase.Return_Datatable("SELECT GUID FROM TBWMRH_PROFIL WHERE AKTIV = 1 order by REIHENFOLGE")
@ -619,12 +619,12 @@ Public Class frmMain
clsDatatabase.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1") clsDatatabase.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1")
Else Else
clsLogger.Add("- clsSQLLite konnte nicht initialisiert werden!", False) clsLogger.Add("- clsSQLLite konnte nicht initialisiert werden!", False)
notcompleted = True
End If
Else
clsLogger.Add("# Achtung: Windream-Init mit Fehlern beendet", False)
notcompleted = True notcompleted = True
End If End If
Else
clsLogger.Add("# Achtung: Windream-Init mit Fehlern beendet", False)
notcompleted = True
End If
If notcompleted = True Then If notcompleted = True Then
clsLogger.WriteLog() clsLogger.WriteLog()
End If End If

View File

@ -1,10 +1,8 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio 15
VisualStudioVersion = 15.0.26228.9 VisualStudioVersion = 15.0.27130.2010
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "windream-Result-Handler", "windream-Result-Handler\windream-Result-Handler.vbproj", "{95448D0B-00CF-4870-A90D-C39F20DD8AAB}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ResultHandler_Konfig", "ResultHandler_Konfig\ResultHandler_Konfig.vbproj", "{85F6D07F-4C83-41C6-AEF1-66F228C13C25}" Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ResultHandler_Konfig", "ResultHandler_Konfig\ResultHandler_Konfig.vbproj", "{85F6D07F-4C83-41C6-AEF1-66F228C13C25}"
EndProject EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDWDResultHandler", "DDWDResultHandler\DDWDResultHandler.vbproj", "{190A63D1-A129-499D-A863-59D39D9EA58F}" Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDWDResultHandler", "DDWDResultHandler\DDWDResultHandler.vbproj", "{190A63D1-A129-499D-A863-59D39D9EA58F}"
@ -18,16 +16,6 @@ Global
SingleImage|Any CPU = SingleImage|Any CPU SingleImage|Any CPU = SingleImage|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.Release|Any CPU.Build.0 = Release|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
{95448D0B-00CF-4870-A90D-C39F20DD8AAB}.SingleImage|Any CPU.Build.0 = Release|Any CPU
{85F6D07F-4C83-41C6-AEF1-66F228C13C25}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU {85F6D07F-4C83-41C6-AEF1-66F228C13C25}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
{85F6D07F-4C83-41C6-AEF1-66F228C13C25}.CD_ROM|Any CPU.Build.0 = Release|Any CPU {85F6D07F-4C83-41C6-AEF1-66F228C13C25}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{85F6D07F-4C83-41C6-AEF1-66F228C13C25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {85F6D07F-4C83-41C6-AEF1-66F228C13C25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@ -52,4 +40,7 @@ Global
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {19F9A4BE-B0CE-4334-8B86-8BAB1F9D2648}
EndGlobalSection
EndGlobal EndGlobal