Imports System.IO Imports System.Globalization Public Class ClassHelper Public Shared Function Convert_Date(input As String, format As String) Try Dim dt As Date = CDate(input) Dim result = dt.ToString(format, CultureInfo.InvariantCulture) Return result Catch ex As Exception ClassLogger.Add("Unexpected Error while converting value '" & input & "' to date....." & ex.Message, False) Return input End Try End Function Public Shared Function CheckDBNull(input As Object, back_Value As String) If IsDBNull(input) Then If back_Value = "String" Then Return "" Else Return True End If Else If back_Value = "String" Then Return input.ToString Else Return False End If End If End Function Public Shared Function Get_TempFilename() 'Eine tempfile generieren Dim tempFilename = My.Computer.FileSystem.GetTempFileName() 'Nur den Filenamen ohne Erweiterung Dim tempName = Path.GetDirectoryName(tempFilename) & "\" & Path.GetFileNameWithoutExtension(tempFilename) 'tempfile lsöchen If My.Computer.FileSystem.FileExists(tempFilename) Then My.Computer.FileSystem.DeleteFile(tempFilename) End If Return tempName End Function Public Shared Function CheckFileIsInUse(ByVal filename) As Boolean Dim fs As Integer = FreeFile() Dim inuse As Boolean = False If File.Exists(filename) Then Try Using f As New IO.FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None) ' thisFileInUse = False End Using Catch inuse = True End Try Try FileOpen(fs, filename, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockReadWrite) Catch ex As Exception ClassLogger.Add("File " & filename & " inuse or not able to open - message: " & ex.Message, True) inuse = True Finally FileClose(fs) End Try End If Return inuse End Function Public Shared Function Versionierung_Datei(Dateiname As String) Dim extension Dim _NewFileString Try Dim version As Integer = 1 Dim Stammname As String = Path.GetDirectoryName(Dateiname) & "\" & Path.GetFileNameWithoutExtension(Dateiname) extension = Path.GetExtension(Dateiname) Dim _neuername As String = Stammname 'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "") 'Überprüfen ob File existiert If File.Exists(_neuername & extension) = False Then _NewFileString = _neuername Else Do While File.Exists(_neuername & extension) version = version + 1 _neuername = Stammname & "~" & version _NewFileString = _neuername Loop End If Return _NewFileString & extension Catch ex As Exception ClassLogger.Add(" - Error in versioning file - error: " & vbNewLine & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in versioning file:") Return "" End Try End Function '' ''' Ersetzt alle nicht zulässigen Zeichen im angegebenen Dateinamen ''' ''' Dateiname ohne Pfadangabe ''' Ersatzzeichen für alle unzulässigen Zeichen ''' im Dateinamen Public Shared Function CleanFilename(ByVal sFilename As String, _ Optional ByVal REPLACEChar As String = "") As String ' alle nicht zulässigen Zeichen ersetzen Return System.Text.RegularExpressions.Regex.Replace( _ sFilename, "[?*^""<>|]", REPLACEChar) End Function Public Shared Sub File_open(RESULT_DOC_PATH As Object, DocID As String) Try If RESULT_DOC_PATH <> Nothing Then If USER_GENERAL_VIEWER = "NONE" Then Dim EXT = Path.GetExtension(RESULT_DOC_PATH) EXT = EXT.Replace(".", "") Dim sql = String.Format("SELECT VIEWER FROM TBPMO_DOC_USER_VIEW WHERE USER_ID = {0} AND UPPER(FILE_EXTENSION) = UPPER('{1}')", USER_GUID, EXT) Dim DT As DataTable = ClassDatabase.Return_Datatable(sql) If DT.Rows.Count = 1 Then Select Case DT.Rows(0).Item("VIEWER") Case "DOC_VIEW" OPEN_DOCVIEW(RESULT_DOC_PATH, DocID) End Select Else File_SYSOPEN(RESULT_DOC_PATH, DocID) End If Else Select Case USER_GENERAL_VIEWER Case "DOC-VIEW" OPEN_DOCVIEW(RESULT_DOC_PATH, DocID) End Select End If Else If LogErrorsOnly = False Then ClassLogger.Add(" >> RESULT_DOC_PATH IS NOTHING") End If Catch ex As Exception MsgBox("Unexpected Error in File_open:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) ClassLogger.Add("Error in File_open: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID, True) End Try End Sub Public Shared Sub OPEN_DOCVIEW(Doc_Path As String, DocID As Integer) Try Dim DocView DocView = Nothing DocView = CreateObject("WMPViewXNG.Viewer") ' open the viewer Dim viewer_string = Doc_Path.Substring(2) DocView.ViewFile(viewer_string) CURRENT_DOCVIEW_PATH = viewer_string CURRENT_DOCVIEW = DocView Catch ex As Exception MsgBox("Unexpected Error in DocView Open:" & vbNewLine & ex.Message & vbNewLine & Doc_Path & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) ClassLogger.Add("Error in DocView Open: " & ex.Message & vbNewLine & " - Path: " & Doc_Path & " - DocID: " & DocID, True) File_SYSOPEN(Doc_Path, DocID) End Try End Sub Private Shared Sub File_SYSOPEN(RESULT_DOC_PATH As Object, DocID As String) Try If RESULT_DOC_PATH <> Nothing Then If System.IO.File.Exists(RESULT_DOC_PATH) = True Then Process.Start(RESULT_DOC_PATH) Else MsgBox("File Does Not Exist!", MsgBoxStyle.Exclamation) End If End If Catch ex As Exception MsgBox("Unexpected Error in File_SYSOPEN:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical) ClassLogger.Add("Error in File_SYSOPEN: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID, True) End Try End Sub Shared Function Convert_Date_2_Form_Format(p1 As Date) As Date Throw New NotImplementedException End Function Public Shared Function Return_listcheck(ENTITY_ID As Integer) Try Dim listcheck As New List(Of String) ' Alle Checkboxen für aktuelle Ansicht heraussuchen Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID in (10,11) AND SHOW_COLUMN = 1 AND FORM_ID = " & ENTITY_ID Dim dtcheck As DataTable = ClassDatabase.Return_Datatable(sqlcheck) 'Liste von allen Spaltentiteln mit Checkbox erstellen If dtcheck.Rows.Count > 0 Then For Each row As DataRow In dtcheck.Rows listcheck.Add(row.Item(0)) Next End If Return listcheck Catch ex As Exception ClassLogger.Add("Unexpected Error in Return_listcheck: " & ex.Message, True) Return Nothing End Try End Function Public Shared Function Return_listdate(ENTITY_ID As Integer) Try Dim listdate As New List(Of String) ' Alle Checkboxen für aktuelle Ansicht heraussuchen Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 4 AND SHOW_COLUMN = 1 AND FORM_ID = " & ENTITY_ID Dim dtdate As DataTable = ClassDatabase.Return_Datatable(sqlcheck) 'Liste von allen Spaltentiteln mit Checkbox erstellen If dtdate.Rows.Count > 0 Then For Each row As DataRow In dtdate.Rows listdate.Add(row.Item(0)) Next End If Return listdate Catch ex As Exception ClassLogger.Add("Unexpected Error in Return_listdate: " & ex.Message, True) Return Nothing End Try End Function Public Shared Function Format_GridColumns(Primary_DT As DataTable, _ENTITYSQL As String, listcheck As List(Of String), listdate As List(Of String)) Try Dim tbltemp As DataTable = Primary_DT.Clone() For Each col As String In listdate Dim colDate As DataColumn = tbltemp.Columns(col) If Not IsNothing(colDate) Then Try colDate.DataType = GetType(Date) Catch ex As Exception End Try End If Next For Each col1 As String In listcheck Dim collist As DataColumn = tbltemp.Columns(col1) If Not IsNothing(collist) Then collist.DataType = GetType(Boolean) End If Next Try tbltemp.Load(Primary_DT.CreateDataReader) Return tbltemp Catch ex As Exception ClassLogger.Add(">> Attention: Format_GridColumns - Could not load converted datatable: " & ex.Message, False) 'Tabelle wird ohne Datekonvertierung geladen Dim DTEntity As DataTable = ClassDatabase.Return_Datatable(_ENTITYSQL, "Load_Entity_Data_Only") Dim primaryKey(1) As DataColumn primaryKey(0) = DTEntity.Columns("Record-ID") DTEntity.PrimaryKey = primaryKey Return DTEntity End Try Catch ex As Exception MsgBox("Unexpected Error in Format_GridColumns:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) ClassLogger.Add("Error in Format_GridColumns: " & ex.Message, True) Return Nothing End Try End Function Public Shared Function InsertEssential_Log(REFERENCE_KEY As Integer, REFERENCE_STRING As String, COMMENT As String) Try Dim insert = String.Format("INSERT INTO TBPMO_LOG_ESSENTIALS (REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES ({0},'{1}','{2}','{3}')", REFERENCE_KEY, REFERENCE_STRING, COMMENT, Environment.UserName) Return ClassDatabase.Execute_non_Query(insert) Catch ex As Exception ClassLogger.Add("Unexpected Error in InsertEssential_Log: " & ex.Message, True) Return False End Try End Function Public Shared Function DeleteRecord(ByVal SELECTED_RECORD_ID) Try Dim DeleteRecordSQL = String.Format("EXEC [dbo].[PRPMO_DELETE_RECORD] {0}, '{1}'", SELECTED_RECORD_ID, Environment.UserName) Dim result As Boolean = ClassDatabase.Execute_non_Query_withConn(DeleteRecordSQL, 1) If result = False Then Dim msg = "Der Datensatz '" & SELECTED_RECORD_ID & "' konnte nicht gelöscht werden. Überprüfen Sie das log" If USER_LANGUAGE <> "de-DE" Then msg = "The record '" & SELECTED_RECORD_ID & "' could not be deleted. Check the log" End If MsgBox(msg, MsgBoxStyle.Exclamation) End If Return result Catch ex As Exception ClassLogger.Add("Unexpected Error in DeleteRecord: " & ex.Message, True) Return False End Try End Function End Class