Imports System.Data.SqlClient Imports System.Data.OracleClient Imports System.IO Imports WINDREAMLib Public Class ClassAllgemeineFunktionen Public Shared Function GUI_LANGUAGE_INFO(pTITLE As String) Dim oFilteredDatatable As DataTable = CURRENT_DT_GUI_LANGUAGE_PHRASES.Clone() Dim oExpression = $"LANGUAGE ='{USER_LANGUAGE}' AND TITLE = '{pTITLE}'" CURRENT_DT_GUI_LANGUAGE_PHRASES.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count = 1 Then If oFilteredDatatable.Rows(0).Item("CAPT_TYPE") = "MsgBox" Then Return oFilteredDatatable Else If oFilteredDatatable.Rows(0).Item("STRING2") <> String.Empty Then Return oFilteredDatatable Else Return oFilteredDatatable.Rows(0).Item("STRING1") End If End If Else Return oFilteredDatatable End If End Function Public Shared Function GUI_LANGUAGE_MSGBOX(pTITLE As String) Dim oFilteredDatatable As DataTable = CURRENT_DT_GUI_LANGUAGE_PHRASES.Clone() Dim oExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND TITLE = '{pTITLE}'" CURRENT_DT_GUI_LANGUAGE_PHRASES.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count = 1 Then Return oFilteredDatatable.Rows(0) Else Return "" End If End Function 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....") Return True Else LOGGER.Info("User could not be logged in/out....") 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(ERR_MSG As String) Try ERR_MSG = ERR_MSG.Replace("'", "''") Dim insert As String = $"INSERT INTO TBPM_LOG_DEBUG (USERID, LOGMSG) VALUES ({USER_ID},'{ERR_MSG}')" If ExecuteonMSSQL(insert, CONNECTION_STRING) <> "" Then LOGGER.Info("Eintrag in Log-Tabelle konnte nicht erstellt werden!!", True) 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.Debug("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.Debug("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") 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) 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) ' 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 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) Else LOGGER.Info("Ziel und Quellpfad sind identisch!") End If Return "" Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Fehler bei Move2Folder", True) LOGGER.Info("Fehlermeldung") LOGGER.Info(ex.Message) Insert_LogEntry($"ERROR {ex.Message}") 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($"ERROR Execute_Scalar_SQLServer{ex.Message}") 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) LOGGER.Info(" - Connection: " & vconnectionString) 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($"ERROR Execute_Scalar_Oracle{ex.Message}") 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) LOGGER.Info(" - Connection: " & vconnectionString) Return 99 End Try End Function End Class