MS
This commit is contained in:
@@ -21,7 +21,9 @@ Public Class ClassImport_Windream
|
||||
'Die Datei nach windream importieren
|
||||
Dim streamresult = ClassWindream.Stream_File(QuellDatei_Path, Targetpath)
|
||||
If streamresult = True Then
|
||||
Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & DOCTYPE_ID
|
||||
Dim sql As String = String.Format("SELECT DocID FROM VWPMO_WD_DOC_SEARCH_SYNC WHERE UPPER(FULL_FILENAME) = UPPER('{0}') AND CONVERT(DATE,Change_DateTime) = CONVERT(DATE,GETDATE())", CURRENT_FILEIN_WD)
|
||||
CURRENT_DOC_ID = ClassDatabase.Execute_Scalar(sql)
|
||||
sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & DOCTYPE_ID
|
||||
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
|
||||
Dim indexierung_erfolgreich As Boolean = False
|
||||
If dt Is Nothing = False Then
|
||||
@@ -140,9 +142,35 @@ Public Class ClassImport_Windream
|
||||
If folder_Created = False Then
|
||||
' Den Zielordner erstellen
|
||||
Zielordner = DT.Rows(0).Item("ZIEL_PFAD")
|
||||
|
||||
sql = "SELECT FOLDER_FOR_INDEX FROM TBDD_DOKUMENTART WHERE GUID = " & DocTypeID
|
||||
Dim Folder_for_index = ClassDatabase.Execute_Scalar(sql)
|
||||
If Not IsDBNull(Folder_for_index) Then
|
||||
If Folder_for_index <> String.Empty Then
|
||||
If CREATE_FOLDER_INDEX(Folder_for_index, DocTypeID) = True And CURRENT_VARIABLE_FOLDER <> "" Then
|
||||
Zielordner = Zielordner & "\" & CURRENT_VARIABLE_FOLDER
|
||||
Else
|
||||
MsgBox("Unexpected Error in Creating Variable Folder - Check logfile!", MsgBoxStyle.Critical)
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
'Unterordner ja oder nein
|
||||
If CURRENT_CHECK_SUBFOLDER = True And CURRENT_SUBFOLDER <> "" Then
|
||||
Zielordner = Zielordner & "\" & CURRENT_SUBFOLDER
|
||||
End If
|
||||
|
||||
If Directory.Exists(Zielordner) = False Then
|
||||
'Try to create the directory.
|
||||
Directory.CreateDirectory(Zielordner)
|
||||
Try
|
||||
Directory.CreateDirectory(Zielordner)
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(" - Unexpected Error in Creating Target Folder: " & vbNewLine & ex.Message)
|
||||
MsgBox("Unexpected Error in Creating Target Folder: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End If
|
||||
folder_Created = True
|
||||
End If
|
||||
@@ -216,8 +244,13 @@ Public Class ClassImport_Windream
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
Else
|
||||
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & APattern, False)
|
||||
value = ""
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> split.Length <> 2 - APattern: " & APattern, False)
|
||||
value = ""
|
||||
End If
|
||||
|
||||
ElseIf APattern.Contains("#") Then
|
||||
@@ -228,9 +261,28 @@ Public Class ClassImport_Windream
|
||||
If IsNumeric(CONTROL_ID) Then
|
||||
Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID)
|
||||
If IsNothing(CONTROLVALUE) Then
|
||||
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
|
||||
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
|
||||
value = ""
|
||||
Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
|
||||
Dim DTtype As DataTable = ClassDatabase.Return_Datatable(checktype)
|
||||
If DTtype.Rows.Count = 1 Then
|
||||
Dim lblsql = DTtype.Rows(0).Item(1)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(">> variable sql will be used for convention", False)
|
||||
Dim result = ClassDatabase.Execute_ScalarWithConnection(DTtype.Rows(0).Item(2), lblsql)
|
||||
If Not IsNothing(result) Then
|
||||
value = result.ToString
|
||||
Else
|
||||
ClassLogger.Add(">> variable sqlresult is nothing - " & lblsql, False)
|
||||
value = ""
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
|
||||
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
|
||||
value = ""
|
||||
End If
|
||||
|
||||
Else
|
||||
If IsDBNull(CONTROLVALUE) Then
|
||||
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.", False)
|
||||
@@ -300,7 +352,7 @@ Public Class ClassImport_Windream
|
||||
type = type.Replace("[%v", "")
|
||||
type = type.Replace("]", "")
|
||||
|
||||
Select Case type
|
||||
Select Case type.ToUpper
|
||||
Case "YY_MM_DD"
|
||||
datetemp = My.Computer.Clock.LocalTime.Year.ToString.Substring(2) & "_" & _Month & "_" & _day
|
||||
Case "YYMMDD"
|
||||
@@ -329,9 +381,10 @@ Public Class ClassImport_Windream
|
||||
datetemp = My.Computer.Clock.LocalTime.Year & "_" & _Month
|
||||
Case "MM_YYYY"
|
||||
datetemp = _Month & "_" & My.Computer.Clock.LocalTime.Year
|
||||
Case "OFilename"
|
||||
Case "OFilename".ToUpper
|
||||
DATEINAME = DATEINAME.Replace(element.Value, Path.GetFileNameWithoutExtension(CURRENT_FILENAME))
|
||||
|
||||
Case "Username".ToUpper
|
||||
DATEINAME = DATEINAME.Replace(element.Value, Environment.UserName)
|
||||
End Select
|
||||
If datetemp <> "" Then
|
||||
DATEINAME = DATEINAME.Replace(element.Value, datetemp)
|
||||
@@ -355,17 +408,34 @@ Public Class ClassImport_Windream
|
||||
Dim Stammname As String = DATEINAME.Replace(VERSION_DELIMITER, "")
|
||||
Dim _neuername As String = DATEINAME.Replace(VERSION_DELIMITER, "")
|
||||
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
|
||||
_NewFileString = _neuername
|
||||
'Überprüfen ob File existiert
|
||||
If File.Exists(_neuername & extension) = False Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> File is not existing", False)
|
||||
_NewFileString = _neuername
|
||||
|
||||
Else
|
||||
Do While File.Exists(_neuername & extension)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Attention File '" & _neuername & extension & "' is existing!", False)
|
||||
version = version + 1
|
||||
_neuername = Stammname & VERSION_DELIMITER & version
|
||||
_NewFileString = _neuername
|
||||
Loop
|
||||
Dim msg As String
|
||||
msg = "Achtung: die Datei existiert bereits!" & vbNewLine & _neuername & extension & vbNewLine & "Wollen Sie die vorhandene Datei ersetzen?"
|
||||
If USER_LANGUAGE <> "de-DE" Then
|
||||
msg = "Attention: there is already a file with this name!" & vbNewLine & _neuername & extension & vbNewLine & "Would You like to replace this file with the actual one?"
|
||||
End If
|
||||
Dim result As MsgBoxResult
|
||||
result = MessageBox.Show(msg, "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
||||
If result = MsgBoxResult.Yes Then
|
||||
Try
|
||||
File.Delete(_neuername & extension)
|
||||
Catch ex As Exception
|
||||
MsgBox("Unexpected Error in Replace file: " & ex.Message, MsgBoxStyle.Critical)
|
||||
err = True
|
||||
End Try
|
||||
Else
|
||||
Do While File.Exists(_neuername & extension)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Attention File '" & _neuername & extension & "' is existing!", False)
|
||||
version = version + 1
|
||||
_neuername = Stammname & VERSION_DELIMITER & version
|
||||
_NewFileString = _neuername
|
||||
Loop
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(" - Error in Versioning file - Error: " & vbNewLine & ex.Message)
|
||||
@@ -374,6 +444,7 @@ Public Class ClassImport_Windream
|
||||
End Try
|
||||
CURRENT_NEWFILENAME = _NewFileString & extension
|
||||
|
||||
|
||||
'False oder True zurückgeben
|
||||
If err = False Then
|
||||
Return True
|
||||
@@ -394,6 +465,184 @@ Public Class ClassImport_Windream
|
||||
End Try
|
||||
|
||||
End Function
|
||||
Private Shared Function CREATE_FOLDER_INDEX(FolderConvention As String, DocTypeID As Integer)
|
||||
Try
|
||||
'Dim RootFolder As String = Path.GetDirectoryName(CURRENT_NEWFILENAME)
|
||||
CURRENT_VARIABLE_FOLDER = ""
|
||||
'######
|
||||
Dim p_reg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
||||
' einen Regulären Ausdruck laden
|
||||
Dim regularExpression As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(p_reg)
|
||||
' die Vorkommen im Folder-String auslesen
|
||||
Dim elemente As System.Text.RegularExpressions.MatchCollection = regularExpression.Matches(FolderConvention)
|
||||
'####
|
||||
' alle Vorkommen innerhalb des Ordnerstrings durchlaufen
|
||||
For Each element As System.Text.RegularExpressions.Match In elemente
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Elementname in FolderString: '" & element.ToString & "'", False)
|
||||
Dim EL_SUBSTRING = element.Value.Substring(2, 1).ToUpper
|
||||
Select Case EL_SUBSTRING
|
||||
'Manueller Indexwert
|
||||
Case "A"
|
||||
Dim split() As String = element.Value.Substring(3, element.Value.Length - 4).Split("#")
|
||||
If split.Length = 2 Then
|
||||
'Die GUID des AutoIndex auslesen
|
||||
Dim INDEX_ID = split(1)
|
||||
If IsNumeric(INDEX_ID) Then
|
||||
Dim sql = "SELECT SQL_RESULT FROM TBDD_INDEX_AUTOM WHERE GUID = " & INDEX_ID
|
||||
Dim sql_command = ClassDatabase.Execute_Scalar(sql, True)
|
||||
If IsNothing(sql_command) Then
|
||||
ClassLogger.Add(" >> unexpected: SQL_RESULT is nothing!!", False)
|
||||
ClassLogger.Add(" >> " & sql, False)
|
||||
Else
|
||||
If IsDBNull(sql_command) Then
|
||||
ClassLogger.Add(" >> unexpected: sql_command is DBNULL!!", False)
|
||||
Else
|
||||
sql_command = sql_command.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
|
||||
sql_command = sql_command.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
|
||||
sql_command = sql_command.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
|
||||
sql_command = sql_command.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
|
||||
Dim AUTOindexresult = ClassDatabase.Execute_Scalar(sql_command, True)
|
||||
If IsNothing(AUTOindexresult) Then
|
||||
ClassLogger.Add(">> unexpected: AUTOindexresult is nothing!!", False)
|
||||
ClassLogger.Add(">> " & sql_command, False)
|
||||
Else
|
||||
If IsDBNull(AUTOindexresult) Then
|
||||
ClassLogger.Add(">> unexpected: AUTOindexresult is DBNULL - " & sql_command, False)
|
||||
Else
|
||||
FolderConvention = FolderConvention.Replace(element.ToString, AUTOindexresult)
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & element.Value, False)
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> split.Length <> 2 - APattern: " & element.Value, False)
|
||||
End If
|
||||
|
||||
Case "M"
|
||||
Dim split() As String = element.Value.Substring(3, element.Value.Length - 4).Split("#")
|
||||
If split.Length = 2 Then
|
||||
'Die GUID des AutoIndex auslesen
|
||||
Dim INDEX_ID = split(1)
|
||||
If IsNumeric(INDEX_ID) Then
|
||||
For Each row As DataRow In CURRENT_TBPMO_INDEX_MAN.Rows
|
||||
If row.Item("GUID") = INDEX_ID Then
|
||||
Dim manvalue = row.Item("MAN_VALUE")
|
||||
FolderConvention = FolderConvention.Replace(element.ToString, manvalue)
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & element.Value, False)
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> split.Length <> 2 - APattern: " & element.Value, False)
|
||||
End If
|
||||
Case "V"
|
||||
Dim folder_temp As String
|
||||
Dim _Month As String = My.Computer.Clock.LocalTime.Month
|
||||
If _Month.Length = 1 Then
|
||||
_Month = "0" & _Month
|
||||
End If
|
||||
Dim _day As String = My.Computer.Clock.LocalTime.Day
|
||||
If _day.Length = 1 Then
|
||||
_day = "0" & _day
|
||||
End If
|
||||
Dim type = element.Value.Substring(3, element.Value.Length - 4)
|
||||
If type.StartsWith("_") Then
|
||||
type = type.Replace("_", "")
|
||||
End If
|
||||
Select Case type
|
||||
Case "YYYY/MM/DD"
|
||||
folder_temp = My.Computer.Clock.LocalTime.Year & "\" & _Month & "\" & _day
|
||||
Case "YYYY/MM"
|
||||
folder_temp = My.Computer.Clock.LocalTime.Year & "\" & _Month
|
||||
Case "YYYY"
|
||||
folder_temp = My.Computer.Clock.LocalTime.Year
|
||||
Case "YYYY-MM"
|
||||
folder_temp = My.Computer.Clock.LocalTime.Year & "-" & _Month
|
||||
End Select
|
||||
FolderConvention = FolderConvention.Replace(element.ToString, folder_temp)
|
||||
Case "C"
|
||||
Dim elmt = element.Value.Substring(3, element.Value.Length - 4).Split("#")
|
||||
Dim APattern = element.Value.Substring(3, element.Value.Length - 4)
|
||||
Dim split() As String = elmt
|
||||
If split.Length = 2 Then
|
||||
Dim CONTROL_ID = split(1)
|
||||
If IsNumeric(CONTROL_ID) Then
|
||||
Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID)
|
||||
If IsNothing(CONTROLVALUE) Then
|
||||
Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE SQL_COMMAND_1 is not null and SQL_COMMAND_1 <> '' AND GUID = " & CONTROL_ID
|
||||
Dim DTtype As DataTable = ClassDatabase.Return_Datatable(checktype)
|
||||
If DTtype.Rows.Count = 1 Then
|
||||
Dim lblsql = DTtype.Rows(0).Item(1)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
|
||||
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(">> variable sql will be used for convention", False)
|
||||
Dim result = ClassDatabase.Execute_ScalarWithConnection(DTtype.Rows(0).Item(2), lblsql)
|
||||
If Not IsNothing(result) Then
|
||||
FolderConvention = FolderConvention.Replace(element.ToString, result.ToString)
|
||||
Else
|
||||
ClassLogger.Add(">> variable sqlresult is nothing - " & lblsql, False)
|
||||
End If
|
||||
Else
|
||||
ClassLogger.Add(">> Variable folder should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
|
||||
ClassLogger.Add(">> SQL-Command: " & checktype)
|
||||
End If
|
||||
|
||||
Else
|
||||
If IsDBNull(CONTROLVALUE) Then
|
||||
ClassLogger.Add(">> Variable folder should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.", False)
|
||||
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
|
||||
Else
|
||||
Dim sql1 = "SELECT * FROM TBPMO_WD_NAMECONVENTION_FORMAT WHERE ID = (SELECT TOP 1 GUID FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE DOCTYPE_ID = " & DocTypeID & " AND FORMVIEW_ID = " & CURRENT_FORMVIEW_ID & ")"
|
||||
Dim DT_FORMAT As DataTable = ClassDatabase.Return_Datatable(sql1)
|
||||
If Not IsNothing(DT_FORMAT) Then
|
||||
If DT_FORMAT.Rows.Count > 0 Then
|
||||
Dim result
|
||||
|
||||
result = (From FormatRow In DT_FORMAT.AsEnumerable
|
||||
Select FormatRow Where FormatRow.Item("PATTERN") = APattern).Single()
|
||||
If Not IsNothing(result) Then
|
||||
Dim _rule = result.Item("FORMAT_RULE")
|
||||
If Not IsNothing(_rule) Then
|
||||
If IsDate(CONTROLVALUE) Then
|
||||
Dim _date As Date = CDate(CONTROLVALUE)
|
||||
'Dim _date = CDate(Format(CONTROLVALUE, "dd-MM-yyyy"))
|
||||
_rule = _rule.ToString.Replace("Y", "y")
|
||||
_rule = _rule.ToString.Replace("D", "d")
|
||||
_rule = _rule.ToString.Replace("m", "M")
|
||||
Dim convertedvalue = _date.ToString(_rule, CultureInfo.InvariantCulture)
|
||||
CONTROLVALUE = convertedvalue
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
FolderConvention = FolderConvention.Replace(element.ToString, CONTROLVALUE.ToString)
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
End If
|
||||
Case Else
|
||||
ClassLogger.Add(" -Undefined pattern found in folderconvention" & vbNewLine & "Elementname: " & element.Value.ToUpper)
|
||||
MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:")
|
||||
End Select
|
||||
Next
|
||||
CURRENT_VARIABLE_FOLDER = FolderConvention
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("Unexpected Error in CreateFolderforIndex-Method:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
ClassLogger.Add(" >> Fehler in CrFolderForIndex: " & ex.Message, True)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Public Shared Function Version_Ueberprüfen(Dateiname As String)
|
||||
Dim extension
|
||||
Dim _NewFileString
|
||||
|
||||
Reference in New Issue
Block a user