321 lines
14 KiB
VB.net
321 lines
14 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.Data.OracleClient
|
|
Imports System.IO
|
|
Imports WINDREAMLib
|
|
|
|
Public Class ClassAllgemeineFunktionen
|
|
Public Shared Function LoginOut(LoginorOut As String) As Boolean
|
|
Try
|
|
If USER_EXISTS = False Then
|
|
Return False
|
|
End If
|
|
Dim Sql As String
|
|
If LoginorOut = "LOGIN" Then
|
|
Sql = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME) VALUES ({0},{1},'Process-Manager','{2}','{3}')", USER_ID, 1, My.Application.Info.Version.ToString, Environment.MachineName)
|
|
Else
|
|
Sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_ID & " AND UPPER(MODULE) = UPPER('Process-Manager')"
|
|
End If
|
|
If ClassDatabase.Execute_non_Query(Sql, True) = True Then
|
|
LOGGER.Debug(" >> User logged in....", False)
|
|
Return True
|
|
Else
|
|
LOGGER.Info(" >> User could not be logged in/out....", False)
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Error in LoginOut: " & ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Public Function Insert_LogEntry(PROFIL_ID As String, ERR_MSG As String, USR As String)
|
|
Try
|
|
If IsNumeric(PROFIL_ID) Then
|
|
Dim insert As String = "INSERT INTO TBPM_ERROR_LOG (PROFIL_ID, ERROR_MSG, ADDED_WHO) VALUES (" & PROFIL_ID & ", '" & ERR_MSG & "', '" & USR & "')"
|
|
If ExecuteonMSSQL(insert, CONNECTION_STRING) <> "" Then
|
|
LOGGER.Info("Eintrag in Log-Tabelle konnte nicht erstellt werden!!", True)
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Error in Insert_LogEntry: " & ex.Message)
|
|
End Try
|
|
|
|
|
|
End Function
|
|
Public Function ExecuteonMSSQL(ByVal sqlcommand As String, ConString As String)
|
|
Try
|
|
' die nötigen Variablen definieren
|
|
Dim Connection As SqlConnection
|
|
|
|
Dim Command As SqlCommand = Nothing
|
|
Dim DataAdapter As SqlDataAdapter = Nothing
|
|
|
|
' ConnectionString aufbauen (aus Settings auslesen)
|
|
Connection = New SqlConnection(ConString)
|
|
|
|
|
|
' Verbindung zur Datenbank aufbauen
|
|
Try
|
|
Connection.Open()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
' DB-Connection schliessen
|
|
Me.CloseMssqlDb(Connection)
|
|
LOGGER.Info("ExecuteonMSSQL.Connection definieren - Error: " & ex.Message, True)
|
|
Return "ExecuteonMSSQL.Connection definieren - Error: " & ex.Message
|
|
End Try
|
|
|
|
|
|
' SQL-Abfrage definieren
|
|
Try
|
|
Command = New SqlCommand(sqlcommand, Connection)
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("ExecuteonMSSQL.sqlcommand definieren - Error: " & ex.Message, True)
|
|
' DB-Connection schliessen
|
|
Me.CloseMssqlDb(Connection)
|
|
Return "ExecuteonMSSQL.sqlcommand definieren - Error: " & ex.Message
|
|
End Try
|
|
|
|
' *** Ausführen des Command ***
|
|
If Command IsNot Nothing Then
|
|
|
|
Try
|
|
Command.ExecuteNonQuery()
|
|
' DB-Connection schliessen
|
|
Me.CloseMssqlDb(Connection)
|
|
Return ""
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
'bei einem Fehler einen Eintrag in der Logdatei erzeugen
|
|
LOGGER.Info("ExecuteonMSSQL.Execute Command - Error: " & ex.Message, True)
|
|
LOGGER.Info("Command-Befehl: " & Command.CommandText, True)
|
|
' DB-Connection schliessen
|
|
Me.CloseMssqlDb(Connection)
|
|
Return "ExecuteonMSSQL.Execute Command - Error: " & ex.Message
|
|
|
|
End Try
|
|
Else
|
|
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
|
|
' Eintrag in Logdatei machen
|
|
LOGGER.Info("ExecuteonMSSQL.SQL-Command ist ungültig. Command-Objekt konnte nicht erstellt werden")
|
|
Return "ExecuteonMSSQL.SQL-Command ist ungültig. Command-Objekt konnte nicht erstellt werden"
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
|
|
LOGGER.Info("ExecuteonMSSQL.Ein unbekannter Fehler in ExecuteonMSSQL - Error: " & ex.Message, True)
|
|
Return "ExecuteonMSSQL.Ein unbekannter Fehler in ExecuteonMSSQL - Error: " & ex.Message
|
|
End Try
|
|
|
|
End Function
|
|
Private Sub CloseMssqlDb(ByRef Connection As SqlConnection)
|
|
' wenn eine Datenbank-Connection aufgebaut ist
|
|
If Connection IsNot Nothing Then
|
|
' diese schliessen
|
|
Connection.Close()
|
|
Connection = Nothing
|
|
End If
|
|
|
|
End Sub
|
|
Public Function Delete_xffres(originFile As String, clsWD As ClassWindream_allgemein)
|
|
Try
|
|
Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(originFile)
|
|
Dim Path As String = System.IO.Path.GetDirectoryName(originFile)
|
|
Dim xffres As String = Path & "\" & Stammname & ".xffres"
|
|
If file_exists(xffres, clsWD) = True Then
|
|
System.IO.File.Delete(xffres)
|
|
LOGGER.Info(">> Datei " & xffres & " erfolgreich gelöscht", False)
|
|
Return True
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(" Fehler bei Delete_xffres", True)
|
|
LOGGER.Info(">> Fehlermeldung: " & ex.Message, False)
|
|
End Try
|
|
End Function
|
|
'Public Function Delete_File(originFile As String)
|
|
' Try
|
|
|
|
' If file_exists(originFile, False) = True Then
|
|
' System.IO.File.Delete(originFile)
|
|
' LOGGER.Info(">> Manuelles Löschen: Datei " & originFile & " erfolgreich gelöscht", False)
|
|
' Return True
|
|
' Else
|
|
' MsgBox("Die Datei konnte nicht gelsöcht werden. File NOT EXISTS", MsgBoxStyle.Exclamation)
|
|
' Return False
|
|
' End If
|
|
' Catch ex As Exception
|
|
' LOGGER.Info(" Fehler bei Delete_File", True)
|
|
' LOGGER.Info(">> Fehlermeldung: " & ex.Message, False)
|
|
' End Try
|
|
'End Function
|
|
|
|
Public Function Move2Folder(ByVal vMove_File As String, ByVal vZiel_Pfad As String, Profile_ID As Integer, clsWD As ClassWindream_allgemein)
|
|
Try
|
|
If VIEWER_PDF <> "internal" And vMove_File.EndsWith("pdf") Then
|
|
Do While clsWD.CheckFileExists(vMove_File) = True 'func_check_file_use(vMove_File)
|
|
LOGGER.Info(">> MoveRename: Datei noch geöffnet - Warten", False)
|
|
System.Threading.Thread.Sleep(500)
|
|
Loop
|
|
End If
|
|
|
|
|
|
Dim extension As String = IO.Path.GetExtension(vMove_File)
|
|
Dim Filename As String = IO.Path.GetFileName(vMove_File)
|
|
Dim path As String = IO.Path.GetDirectoryName(vMove_File)
|
|
Dim _Ziel As String
|
|
_Ziel = vZiel_Pfad & "\" & Filename
|
|
Dim version As Integer = 1
|
|
If vZiel_Pfad <> path Then
|
|
Dim Stammname As String = IO.Path.GetFileNameWithoutExtension(vMove_File)
|
|
Do While file_exists(_Ziel, clsWD) = True
|
|
Dim neuername As String = Stammname & "~" & version & extension
|
|
_Ziel = neuername
|
|
version = version + 1
|
|
Loop
|
|
My.Computer.FileSystem.MoveFile(vMove_File, _Ziel)
|
|
LOGGER.Info(">> Datei erfolgreich verschoben - Ziel: " & _Ziel, False)
|
|
Else
|
|
LOGGER.Info(">> Ziel und Quellpfad sind identisch!", False)
|
|
End If
|
|
|
|
Return ""
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info(" Fehler bei Move2Folder", True)
|
|
LOGGER.Info(">> Fehlermeldung", False)
|
|
LOGGER.Info(">>" & ex.Message, False)
|
|
Insert_LogEntry(Profile_ID, "Fehler bei Move2Folder: " & ex.Message, Environment.UserName)
|
|
Return ex.Message
|
|
End Try
|
|
End Function
|
|
Public Function file_exists(ByVal _file As String, clsWD As ClassWindream_allgemein)
|
|
Try
|
|
Return clsWD.CheckFileExists(_file)
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Fehler in Funktion file_exists - Fehler: ", ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Public Function checkValue_Exists(sqlbefehl As String, Replace_value As String, Check_value As String, Typ As String, connString As String, profilid As Integer)
|
|
Try
|
|
Dim sql As String
|
|
Dim CONNTYPE As String
|
|
If connString <> "" Then
|
|
If connString.StartsWith("%MS") Then
|
|
CONNTYPE = "MS-SQL"
|
|
connString = connString.Replace("%MS", "")
|
|
ElseIf connString.StartsWith("%OR") Then
|
|
CONNTYPE = "ORACLE"
|
|
connString = connString.Replace("%OR", "")
|
|
End If
|
|
|
|
Dim sqlscalar = sqlbefehl
|
|
Select Case Typ
|
|
Case "INTEGER"
|
|
'@manValue
|
|
sqlscalar = sqlscalar.ToString.Replace(Replace_value, Check_value)
|
|
Case Else
|
|
sqlscalar = sqlscalar.ToString.Replace(Replace_value, "'" & Check_value & "'")
|
|
End Select
|
|
|
|
sql = sqlscalar
|
|
Dim ergebnis As Integer
|
|
If CONNTYPE = "ORACLE" Then
|
|
ergebnis = Execute_Scalar_Oracle(sql, connString, True, profilid)
|
|
Else
|
|
ergebnis = Execute_Scalar_SQLServer(sql, connString, True, profilid)
|
|
End If
|
|
|
|
Select Case ergebnis
|
|
Case 1
|
|
Return True
|
|
Case Else
|
|
Return False
|
|
End Select
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei checkValue_Exists:")
|
|
LOGGER.Info(" - Unvorhergesehener Fehler bei checkValue_Exists - Fehler: " & vbNewLine & ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Function Execute_Scalar_SQLServer(vsql_statement As String, vconnectionString As String, check As Boolean, profil_id As Integer)
|
|
Try
|
|
Dim cnn As SqlConnection
|
|
cnn = New SqlConnection(vconnectionString)
|
|
Dim cmd As SqlCommand
|
|
cnn.Open()
|
|
cmd = New SqlCommand(vsql_statement, cnn)
|
|
If check = True Then
|
|
'ERgebnis muss immer 1 oder mehr ergeben
|
|
Dim count As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
|
|
If count = 1 Then
|
|
cmd.Dispose()
|
|
cnn.Close()
|
|
Return 1
|
|
Else
|
|
cmd.Dispose()
|
|
cnn.Close()
|
|
Return 2
|
|
End If
|
|
Else
|
|
'Ergebnis
|
|
Dim ergebnis As String = cmd.ExecuteScalar()
|
|
Return ergebnis
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Unvorhergesehener Fehler bei Execute_Scalar_SQLServer" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei Ausführen sql:")
|
|
Insert_LogEntry(profil_id, "Unvorhergesehener Fehler bei Execute_Scalar_Oracle: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(" - Unvorhergesehener Fehler bei Execute_Scalar_SQLServer" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler: " & vbNewLine & ex.Message)
|
|
LOGGER.Info(" - SQL: " & vsql_statement, False)
|
|
LOGGER.Info(" - Connection: " & vconnectionString, False)
|
|
Return 99
|
|
End Try
|
|
End Function
|
|
Function Execute_Scalar_Oracle(vsql_statement As String, vconnectionString As String, check As Boolean, profil_id As Integer)
|
|
Try
|
|
Dim cnn As System.Data.OleDb.OleDbConnection
|
|
cnn = New System.Data.OleDb.OleDbConnection(vconnectionString)
|
|
Dim cmd As System.Data.OleDb.OleDbCommand
|
|
cnn.Open()
|
|
cmd = New System.Data.OleDb.OleDbCommand(vsql_statement, cnn)
|
|
|
|
If check = True Then
|
|
'Ergebnis muss immer 1 oder mehr ergeben
|
|
Dim count As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
|
|
If count = 1 Then
|
|
Return 1
|
|
Else
|
|
Return 2
|
|
End If
|
|
Else
|
|
'Ergebnis
|
|
Dim ergebnis As String = cmd.ExecuteScalar()
|
|
Return ergebnis
|
|
End If
|
|
|
|
cmd.Dispose()
|
|
cnn.Close()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox("Unvorhergesehener Fehler bei Execute_Scalar_Oracle" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei Ausführen sql:")
|
|
Insert_LogEntry(profil_id, "Unvorhergesehener Fehler bei Execute_Scalar_Oracle: " & ex.Message, Environment.UserName)
|
|
LOGGER.Info(" - Unvorhergesehener Fehler bei Execute_Scalar_Oracle" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler: " & vbNewLine & ex.Message)
|
|
LOGGER.Info(" - SQL: " & vsql_statement, False)
|
|
LOGGER.Info(" - Connection: " & vconnectionString, False)
|
|
Return 99
|
|
End Try
|
|
End Function
|
|
End Class
|