1106 lines
60 KiB
VB.net
1106 lines
60 KiB
VB.net
Imports System.IO
|
|
Imports System.Security.AccessControl
|
|
Imports System.Security.Principal
|
|
Imports System.Data.SqlClient
|
|
Imports Oracle.ManagedDataAccess.Client
|
|
|
|
Public Class frmWD_IndexFile
|
|
Dim droptype As String
|
|
Dim aktFiledropped As String
|
|
Dim MULTIFILES As Integer = 0
|
|
Dim formloaded As Boolean = False
|
|
|
|
Private Sub FillToolStripButton_Click(sender As Object, e As EventArgs)
|
|
Try
|
|
Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, CURRENT_FORMVIEW_ID)
|
|
Catch ex As System.Exception
|
|
System.Windows.Forms.MessageBox.Show(ex.Message)
|
|
End Try
|
|
End Sub
|
|
Function WORK_FILE(Filepath As String, Targetpath As String, vDokart_ID As Integer, vDokart As String, multiindex As Boolean)
|
|
Try
|
|
CURRENT_DOKARTSTRING = vDokart
|
|
Dim err As Boolean = False
|
|
If ClassImport_Windream.Name_Generieren(DOCTYPE_IDTextBox.Text) = False Then
|
|
Return False
|
|
End If
|
|
|
|
Dim streamresult = ClassWindream.Stream_File(Filepath, Targetpath)
|
|
'Dim type = streamresult.GetType
|
|
If streamresult = True Then
|
|
Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE ACTIVE = 1 AND UPPER(INDEXNAME) NOT LIKE UPPER('%ONLY %') AND SQL_ACTIVE = 0 AND DOCTYPE_ID = " & vDokart_ID
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
Dim indexierung_erfolgreich As Boolean = False
|
|
'Einbauen dass auch Konfigurationen erlaubt sind wo der Doktyp und der Record fest gestzt sind
|
|
If dt Is Nothing = False Then 'CHECK DD
|
|
If dt.Rows.Count >= 0 Then
|
|
Dim Count As Integer = 0
|
|
For Each row As DataRow In dt.Rows
|
|
Dim indexname = row.Item("INDEXNAME").ToString
|
|
Dim idxvalue = row.Item("VALUE")
|
|
If idxvalue.ToString.StartsWith("@") Then
|
|
Select Case idxvalue.ToString.ToUpper
|
|
Case "@RECORD-ID"
|
|
idxvalue = idxvalue.ToString.Replace("@Record-ID", CURRENT_RECORD_ID)
|
|
Case "@DOKART"
|
|
idxvalue = idxvalue.ToString.Replace("@Dokart", vDokart)
|
|
End Select
|
|
Else 'Es wird nicht über einen @PAttern indexiert
|
|
' Regulären Ausdruck zum Auslesen der Indexe definieren
|
|
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
|
' einen Regulären Ausdruck laden
|
|
Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
|
|
' die Vorkommen im SQL-String auslesen
|
|
Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(idxvalue)
|
|
'####
|
|
' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
For Each element As System.Text.RegularExpressions.Match In elemente
|
|
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> element in RegeX: " & element.Value, False)
|
|
Select Case element.Value.Substring(2, 1).ToUpper
|
|
'Nur automatische Indizes auswerten
|
|
Case "A"
|
|
Dim APattern = element.Value.Substring(3, element.Value.Length - 4)
|
|
If APattern.Contains("#") Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> element filled with Record-Data.......: ", False)
|
|
Dim split() As String = APattern.Split("#")
|
|
If split.Length = 2 Then
|
|
Dim CONTROL_ID = split(1)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> CONTROL_ID: " & CONTROL_ID, False)
|
|
If IsNumeric(CONTROL_ID) Then
|
|
Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID)
|
|
If IsNothing(CONTROLVALUE) Then
|
|
ClassLogger.Add(">> Index should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
|
|
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
|
|
idxvalue = ""
|
|
Else
|
|
If IsDBNull(CONTROLVALUE) Then
|
|
ClassLogger.Add(">> Index should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.", False)
|
|
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
|
|
idxvalue = ""
|
|
Else
|
|
idxvalue = CONTROLVALUE
|
|
End If
|
|
End If
|
|
Else
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
End Select
|
|
|
|
Next
|
|
End If
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Value for Indexing : '" & idxvalue.ToString & "'", False)
|
|
Count += 1
|
|
indexierung_erfolgreich = ClassWindream.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
MsgBox("Unexpected Error in indexing file - See log", MsgBoxStyle.Critical)
|
|
err = True
|
|
Exit For
|
|
End If
|
|
'ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String
|
|
Next
|
|
If err = True Then
|
|
Return False
|
|
End If
|
|
'den Entity-Key auslesen
|
|
sql = "Select Top 1 * from TBPMO_WD_OBJECTTYPE where Upper(object_type) = Upper('" & ClassWindream._WDObjekttyp & "')"
|
|
dt = ClassDatabase.Return_Datatable(sql)
|
|
If Not dt Is Nothing Then
|
|
If dt.Rows.Count = 1 Then
|
|
'den Entity-Key auslesen
|
|
Dim indexname = dt.Rows(0).Item("IDXNAME_ENTITYID").ToString
|
|
Dim idxvalue = CURRENT_FORM_ID
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Entity-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = ClassWindream.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
err = True
|
|
MsgBox("Unexpected Error in indexing file Entity - See log", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
'den Parent-Key auslesen
|
|
indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString
|
|
idxvalue = CURRENT_PARENT_ENTITY_ID
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Parent-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = ClassWindream.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
err = True
|
|
MsgBox("Unexpected Error in indexing file Parent-ID - See log", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
''den Record-Key auslesen
|
|
'indexname = dt.Rows(0).Item("IDXNAME_RECORDID").ToString
|
|
'idxvalue = CURRENT_RECORD_ID
|
|
'If LogErrorsOnly = False Then ClassLogger.Add(" >> Record-ID: " & idxvalue.ToString, False)
|
|
'indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
'If indexierung_erfolgreich = False Then
|
|
' err = True
|
|
' MsgBox("Unexpected Error in indexing file Record-ID - See log", MsgBoxStyle.Critical)
|
|
' Return False
|
|
'End If
|
|
''den Doctype-Key auslesen
|
|
'indexname = dt.Rows(0).Item("IDXNAME_DOCTYPE").ToString
|
|
'idxvalue = CURRENT_DOKARTSTRING
|
|
'If LogErrorsOnly = False Then ClassLogger.Add(" >> Doctype: " & idxvalue.ToString, False)
|
|
'indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
'If indexierung_erfolgreich = False Then
|
|
' err = True
|
|
' MsgBox("Unexpected Error in indexing file Doctype - See log", MsgBoxStyle.Critical)
|
|
' Return False
|
|
'End If
|
|
End If
|
|
End If
|
|
If indexierung_erfolgreich = True Then
|
|
ClassLogger.Add(">> File was correctly imported and indexed: " & CURRENT_FILEIN_WD, False)
|
|
Dim stg As String = "Datei erfolgreich nach windream übertragen"
|
|
Dim stg1 As String = "Erfolgsmeldung"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
stg = "File was successfully transfered to windream"
|
|
stg1 = "Success:"
|
|
End If
|
|
If multiindex = False Then MsgBox(stg, MsgBoxStyle.Information, stg1)
|
|
ClassDatabase.Execute_Scalar("UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = " & CURRENT_FILEID)
|
|
|
|
'Die Originaldatei löschen
|
|
If droptype = "dragdrop file" And indexierung_erfolgreich = True Then
|
|
If chkdelete_origin.Checked = True Then
|
|
'Die temporäre Datei löschen
|
|
File.Delete(aktFiledropped)
|
|
End If
|
|
ElseIf (droptype = "@ATTMNTEXTRACTED@" Or droptype = "SCAN") And indexierung_erfolgreich = True Then
|
|
'Die temporäre Datei löschen
|
|
File.Delete(aktFiledropped)
|
|
ElseIf droptype = "dragdrop message" And indexierung_erfolgreich = True Then
|
|
'Die temporäre Datei löschen
|
|
File.Delete(aktFiledropped)
|
|
End If
|
|
ClassDOC_SEARCH.SET_WD_RIGHTS(CURRENT_FILEIN_WD)
|
|
ClassDOC_SEARCH.REFRESH_DOC_TABLE_RESULTS()
|
|
sql = String.Format("SELECT DocID FROM VWPMO_WD_DOC_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)
|
|
If Not IsNothing(CURRENT_DOC_ID) Then
|
|
ClassFileResult.DocID = CURRENT_DOC_ID
|
|
ClassFileResult.SET_DOCID_INDICES()
|
|
If ClassDOC_SEARCH.SET_RECORD_DOCID_LINK(CURRENT_DOC_ID, CURRENT_RECORD_ID) = True Then
|
|
|
|
End If
|
|
End If
|
|
Else
|
|
MsgBox("An unexpected error occured while indexing file. Please check the log!", MsgBoxStyle.Exclamation)
|
|
Return False
|
|
End If
|
|
Else
|
|
MsgBox("Attention in Work-File:" & vbNewLine & "No indices were defined (1)!", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
Else
|
|
MsgBox("Attention in Work-File:" & vbNewLine & "No indices were defined (0)!", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected error in Work-File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
|
|
End Function
|
|
|
|
|
|
'Function FillIndexe_Autom(dokart_id As Integer)
|
|
' Try
|
|
' Me.VWDDINDEX_AUTOMTableAdapter.Fill(Me.DD_DMSDataSet.VWDDINDEX_AUTOM, dokart_id)
|
|
' If DD_DMSDataSet.VWDDINDEX_AUTOM.Rows.Count > 0 Then
|
|
' ' MsgBox(DT.Rows.Count.ToString)
|
|
' For Each DR_AUTOINDEX As DataRow In DD_DMSDataSet.VWDDINDEX_AUTOM.Rows
|
|
' Dim indexname As String = DR_AUTOINDEX.Item("INDEXNAME")
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Build Automatischer Index '" & indexname & "'", False)
|
|
' If DR_AUTOINDEX.Item("SQL_RESULT").ToString <> String.Empty And CBool(DR_AUTOINDEX.Item("SQL_ACTIVE")) = True Then
|
|
' ' Regulären Ausdruck zum Auslesen der windream-Indexe definieren
|
|
' Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
|
' ' SQL-String für aktuellen INdex laden
|
|
' Dim SqlString As String = DR_AUTOINDEX.Item("SQL_RESULT")
|
|
' ' einen Regulären Ausdruck laden
|
|
' Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
|
|
' ' die Vorkommen im SQL-String auslesen
|
|
' Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(SqlString)
|
|
' ' alle Vorkommen der Indexe im SQL-String durchlaufen
|
|
' For Each element As System.Text.RegularExpressions.Match In elemente
|
|
' ' MsgBox(element.Value.ToUpper)
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Element: '" & element.Value & "'", False)
|
|
' '' wenn es sich nicht um dedizeirte Werte handelt (es sollen ja nur die Indexe ausgelesen werden)
|
|
' 'If Not element.Value.ToUpper = "[%SPALTE]" And Not element.Value.ToUpper = "[%VIEW]" Then
|
|
' 'die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index)
|
|
' Dim elementOhneSonderzeichen As String = element.Value.Substring(2, element.Value.Length - 3)
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> elementOhneSonderzeichen: '" & elementOhneSonderzeichen & "'", False)
|
|
' 'den Platzhalter im SQL-String durch den Wert ersetzen
|
|
' Dim manIndexwert As String = GetManIndex_Value(elementOhneSonderzeichen, "IDX_AUTO")
|
|
' If manIndexwert <> "" Then
|
|
' SqlString = SqlString.Replace(element.Value, manIndexwert)
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> zusammengesetzter SQL-String: " & SqlString, False)
|
|
' Else
|
|
' ClassLogger.Add(" - ACHTUNG: manIndexwert = String.Empty - Funktion: FillIndexe_Autom", False)
|
|
' Return False
|
|
' End If
|
|
' Next
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Ausführen SQL....", False)
|
|
' Dim automatischerValue As String = ""
|
|
' automatischerValue = Get_AutomatischerIndex_SQL(SqlString, DR_AUTOINDEX.Item("CONNECTION_ID"), DR_AUTOINDEX.Item("SQL_PROVIDER"))
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Ergebnis SQL: '" & automatischerValue & "'", False)
|
|
' If automatischerValue <> String.Empty Then
|
|
' DR_AUTOINDEX.Item("Indexiert") = True
|
|
' DR_AUTOINDEX.Item("Indexwert") = automatischerValue
|
|
' Else
|
|
' ClassLogger.Add(" - ACHTUNG: automatischerValue = String.Empty - Funktion: FillIndexe_Autom", False)
|
|
' ClassLogger.Add(" - SqlString: " & SqlString, False)
|
|
' Return False
|
|
' End If
|
|
' Else
|
|
' If Not IsDBNull(DR_AUTOINDEX.Item("VALUE")) Then
|
|
' If DR_AUTOINDEX.Item("VALUE") <> "" Then
|
|
' Dim DEFAULTVALUE As String = DR_AUTOINDEX.Item("VALUE")
|
|
' 'Indexierung mit WindowsVariable
|
|
' If DEFAULTVALUE.StartsWith("$") Then
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexierung mit einer Windowsvariable: '" & DEFAULTVALUE & "'", False)
|
|
' Select Case DEFAULTVALUE.ToUpper
|
|
' Case "$filename_ext".ToUpper
|
|
' DEFAULTVALUE = Path.GetFileName(CURRENT_WORKFILE)
|
|
' Case "$filename".ToUpper
|
|
' DEFAULTVALUE = Path.GetFileNameWithoutExtension(CURRENT_WORKFILE)
|
|
' Case "$FileCreateDate".ToUpper
|
|
' Dim FI As New FileInfo(CURRENT_WORKFILE)
|
|
' Dim CreationDate As Date = FI.CreationTime
|
|
' DEFAULTVALUE = CreationDate.ToShortDateString
|
|
' Case "$FileCreatedWho".ToUpper
|
|
' Dim fs As FileSecurity = File.GetAccessControl(CURRENT_WORKFILE)
|
|
' Dim sid As IdentityReference = fs.GetOwner(GetType(SecurityIdentifier))
|
|
' Dim ntaccount As IdentityReference = sid.Translate(GetType(NTAccount))
|
|
' Dim owner As String = ntaccount.ToString()
|
|
' DEFAULTVALUE = owner
|
|
' Case "$DateDDMMYYY".ToUpper
|
|
' DEFAULTVALUE = System.DateTime.Now.ToShortDateString
|
|
' End Select
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Ergebnis der Windowsvariable: '" & DEFAULTVALUE & "'", False)
|
|
' Else
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Indexierung mit einem Festen Wert: '" & DEFAULTVALUE & "'", False)
|
|
' End If
|
|
' 'Den Wert in der Zwischentabelle speichern
|
|
' DR_AUTOINDEX.Item("Indexiert") = True
|
|
' DR_AUTOINDEX.Item("Indexwert") = DEFAULTVALUE
|
|
' End If
|
|
' End If
|
|
' End If
|
|
' Next
|
|
' 'MsgBox("Noch kein automatischer Index-SQL-String hinterlegt, dennoch wird das Dokument abgelegt!")
|
|
' Return True
|
|
' Else
|
|
' Return True
|
|
' End If
|
|
' Catch ex As System.Exception
|
|
' ClassLogger.Add(" - Fehler bei FillIndexe_Autom - Fehler: " & vbNewLine & ex.Message)
|
|
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei FillIndexe_Autom")
|
|
' Return False
|
|
' End Try
|
|
|
|
'End Function
|
|
|
|
Private Sub btnindex_Click(sender As Object, e As EventArgs) Handles btnindex.Click
|
|
If CURRENT_RECORD_ID = 0 Then
|
|
MsgBox("No Record chosen or the documenttype was not chosen!", MsgBoxStyle.Information)
|
|
Exit Sub
|
|
End If
|
|
If lvwIndices.Items.Count = 0 Then
|
|
MsgBox("Please choose a documenttxpe!", MsgBoxStyle.Information)
|
|
Exit Sub
|
|
End If
|
|
If CURRENT_TBPMO_INDEX_MAN.Rows.Count > 0 Then
|
|
If CheckWrite_IndexeMan() = False Then
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
If cmbDokumentart.SelectedIndex <> -1 Then
|
|
|
|
My.Settings.WD_INDEXDOKART_SAVE = cmbDokumentart.Text
|
|
My.Settings.Save()
|
|
Indexing_File(cmbDokumentart.SelectedValue)
|
|
End If
|
|
|
|
End Sub
|
|
Function Return_CURRENT_TBPMO_INDEX_MAN_VALUE(CONTROL_GUID As Integer, COL_NAME As String)
|
|
Try
|
|
' Presuming the DataTable has a column named ENTITY_ID and TYPE_NODE.
|
|
Dim expression As String
|
|
expression = "GUID = " & CONTROL_GUID
|
|
Dim foundRowsLevel0() As DataRow
|
|
' Use the Select method to find all rows matching the filter.
|
|
foundRowsLevel0 = CURRENT_TBPMO_INDEX_MAN.Select(expression)
|
|
Dim i As Integer
|
|
' For each row create a Node
|
|
For i = 0 To foundRowsLevel0.GetUpperBound(0)
|
|
Return foundRowsLevel0(i)(COL_NAME)
|
|
Next
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler in Return_CURRENT_TBPMO_INDEX_MAN_VALUE - Fehler: " & vbNewLine & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
Function SET_CURRENT_TBPMO_INDEX_MAN_VALUE(CONTROL_GUID As Integer, VALUE As String)
|
|
Try
|
|
For Each row As DataRow In CURRENT_TBPMO_INDEX_MAN.Rows
|
|
If row.Item("GUID") = CONTROL_GUID Then
|
|
row.Item("MAN_VALUE") = VALUE
|
|
Return True
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler in SET_CURRENT_TBPMO_INDEX_MAN_VALUE - Fehler: " & vbNewLine & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
Function CheckWrite_IndexeMan()
|
|
'#### Zuerst manuelle Werte indexieren ####
|
|
Try
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >>In CheckWrite_IndexeMan", False)
|
|
Dim result As Boolean = False
|
|
For Each ctrl As Control In Me.grbxControls.Controls
|
|
' ' MsgBox(ctrl.Name)
|
|
If ctrl.Name.StartsWith("txt") Then
|
|
Dim box As TextBox = ctrl
|
|
If box.Text = "" Then
|
|
Dim optional_index = Return_CURRENT_TBPMO_INDEX_MAN_VALUE(box.Tag, "OPTIONAL") 'ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBPMO_INDEX_MAN WHERE GUID = " & box.Tag, True)
|
|
If Not IsNothing(optional_index) Then
|
|
If CBool(optional_index) = False Then
|
|
MsgBox("Please insert a value!", MsgBoxStyle.Exclamation, "Missing input:")
|
|
box.Focus()
|
|
Return False
|
|
Else
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(box.Tag, "")
|
|
'Indexwert_Postprocessing(Replace(box.Name, "txt", ""), "")
|
|
result = True
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
Else
|
|
'If Indexwert_checkValueDB(Replace(box.Name, "txt", ""), box.Text) = False Then
|
|
' ClassLogger.Add(" - Der eingegebene Wert wurde nicht in der Datenbank gefunden", False)
|
|
' MsgBox("Der eingegebene Wert wurde nicht in der Datenbank gefunden!", MsgBoxStyle.Exclamation, "Fehlerhafte Indexierung:")
|
|
' box.Focus()
|
|
' Return False
|
|
'Else
|
|
' 'Indexwert_Postprocessing(Replace(box.Name, "txt", ""), box.Text)
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(box.Tag, "")
|
|
|
|
result = True
|
|
'End If
|
|
End If
|
|
End If
|
|
If ctrl.Name.StartsWith("cmb") Then
|
|
Dim cmb As ComboBox = ctrl
|
|
If cmb.Text = "" Then
|
|
Dim optional_index = Return_CURRENT_TBPMO_INDEX_MAN_VALUE(cmb.Tag, "OPTIONAL") 'ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBPMO_INDEX_MAN WHERE GUID = " & box.Tag, True)
|
|
If Not IsNothing(optional_index) Then
|
|
If CBool(optional_index) = False Then
|
|
MsgBox("Please choose a value!", MsgBoxStyle.Exclamation, "Missing input:")
|
|
cmb.Focus()
|
|
Return False
|
|
Else
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(cmb.Tag, "")
|
|
'Indexwert_Postprocessing(Replace(box.Name, "txt", ""), "")
|
|
result = True
|
|
End If
|
|
End If
|
|
Else
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(cmb.Tag, cmb.Text)
|
|
' Indexwert_Postprocessing(Replace(cmb.Name, "cmb", ""), cmb.Text)
|
|
result = True
|
|
End If
|
|
End If
|
|
If ctrl.Name.StartsWith("dtp") Then
|
|
Dim dtp As DateTimePicker = ctrl
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(dtp.Tag, dtp.Value)
|
|
'Indexwert_Postprocessing(Replace(dtp.Name, "dtp", ""), dtp.Text)
|
|
result = True
|
|
End If
|
|
If ctrl.Name.StartsWith("chk") Then
|
|
Dim chk As CheckBox = ctrl
|
|
SET_CURRENT_TBPMO_INDEX_MAN_VALUE(chk.Tag, chk.Checked)
|
|
'Indexwert_Postprocessing(Replace(chk.Name, "chk", ""), chk.Checked)
|
|
result = True
|
|
End If
|
|
If ctrl.Name.StartsWith("lbl") = False And result = False Then
|
|
ClassLogger.Add("Die Überprüfung der manuellen Indices ist fehlerhaft. Bitte informieren Sie den Systembetreuer", True)
|
|
Return False
|
|
End If
|
|
Next
|
|
|
|
|
|
Return True
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler in CheckWrite_IndexeMan - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unerwarteter Unexpected error in CheckWrite_IndexeMan:")
|
|
Return False
|
|
End Try
|
|
|
|
|
|
End Function
|
|
Sub Indexing_File(doctype_id As Integer)
|
|
Try
|
|
Me.Cursor = Cursors.WaitCursor
|
|
SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain")
|
|
ClassWindream._WDObjekttyp = Me.OBJECT_TYPETextBox.Text
|
|
If chkMultiIndexer.Visible = True And chkMultiIndexer.Checked = True Then
|
|
'Die erste Datei indexieren
|
|
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = True Then
|
|
'Und nun die folgenden
|
|
Dim DTFiles2Work As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FILES_USER WHERE WORKED = 0 AND GUID <> " & CURRENT_FILEID & " AND UPPER(USER_WORK) = UPPER('" & Environment.UserName & "')")
|
|
If Not DTFiles2Work Is Nothing Then
|
|
Dim err = False
|
|
For Each filerow As DataRow In DTFiles2Work.Rows
|
|
CURRENT_FILEID = filerow.Item("GUID")
|
|
CURRENT_FILENAME = filerow.Item("FILENAME2WORK")
|
|
Dim HandleType As String = filerow.Item("HANDLE_TYPE")
|
|
aktFiledropped = CURRENT_FILENAME
|
|
If HandleType = "@DROPFROMFSYSTEM@" Then
|
|
droptype = "dragdrop file"
|
|
ElseIf HandleType = "@OUTLOOK_ATTMNT@" Then
|
|
droptype = "dragdrop attachment"
|
|
ElseIf HandleType = "@OUTLOOKMESSAGE@" Then
|
|
droptype = "dragdrop message"
|
|
End If
|
|
If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
|
err = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
Me.Cursor = Cursors.Default
|
|
If err = False Then
|
|
NEW_FILES_ADDED = True
|
|
Dim stg As String = "Alle Dateien wurden mit Multiindexing erfolgreich nach windream übertragen!"
|
|
Dim stg1 As String = "Erfolgsmeldung"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
stg = "All files were transferred via Multiindexing to windream"
|
|
stg1 = "Success:"
|
|
End If
|
|
ClassDOC_SEARCH.REFRESH_DOC_TABLE_RESULTS()
|
|
MsgBox(stg, MsgBoxStyle.Information, stg1)
|
|
Me.Close()
|
|
End If
|
|
End If
|
|
|
|
|
|
End If
|
|
Else
|
|
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = True Then
|
|
NEW_FILES_ADDED = True
|
|
Me.Close()
|
|
End If
|
|
|
|
End If
|
|
Me.Cursor = Cursors.Default
|
|
|
|
Catch ex As Exception
|
|
MsgBox("Error in Indexing_File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
Private Sub cmbDokumentart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDokumentart.SelectedIndexChanged
|
|
Try
|
|
CURRENT_DOKARTID = 0
|
|
If cmbDokumentart.SelectedIndex <> -1 Then
|
|
CURRENT_DOKARTID = cmbDokumentart.SelectedValue
|
|
CURRENT_DOKARTSTRING = cmbDokumentart.Text
|
|
Refresh_indices()
|
|
Refresh_Indices_Manual()
|
|
Check_Subfolder()
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in cmbDokumentart SelectedIndex:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
Sub Refresh_Indices_Manual()
|
|
Try
|
|
ClassFileResult.GET_DATATABLE_INDICES_PMO()
|
|
If CURRENT_TBPMO_INDEX_MAN.Rows.Count > 0 Then
|
|
'Der Tabelle eine Splate für den idnexwert hinzufügen
|
|
Dim MAN_VALUE As DataColumn = CURRENT_TBPMO_INDEX_MAN.Columns.Add("MAN_VALUE", Type.GetType("System.String"))
|
|
grbxControls.Visible = True
|
|
grbxControls.Controls.Clear()
|
|
Me.Size = New Size(605, 700)
|
|
Dim anz As Integer = 1
|
|
Dim ylbl As Integer = 20
|
|
Dim y As Integer = 38
|
|
|
|
For Each DR As DataRow In CURRENT_TBPMO_INDEX_MAN.Rows
|
|
Dim type = DR.Item("DATATYPE")
|
|
If type <> "BOOLEAN" Then
|
|
addLabel(DR.Item("GUID"), DR.Item("NAME"), DR.Item("COMMENT").ToString, ylbl)
|
|
End If
|
|
Dim DefaultValue = DR.Item("DEFAULT_VALUE")
|
|
|
|
Select Case type
|
|
Case "BOOLEAN"
|
|
Dim VORBELGUNG As Integer = DefaultValue
|
|
'nur eine Textbox
|
|
Dim chk As CheckBox = ClassControls_Manual.AddCheckBox(DR.Item("GUID"), DR.Item("NAME"), y, VORBELGUNG, DR.Item("COMMENT").ToString)
|
|
If Not IsNothing(chk) Then
|
|
grbxControls.Controls.Add(chk)
|
|
End If
|
|
Case "INTEGER"
|
|
If DR.Item("SUGGESTION") = True And DR.Item("SQL_RESULT").ToString.Length > 0 Then
|
|
AddVorschlag_ComboBox(DR.Item("GUID"), DR.Item("NAME"), y, DR.Item("CONNECTION_ID"), DR.Item("SQL_RESULT"), DefaultValue)
|
|
'AddAutoSuggest_Textbox(DR.Item("NAME"), y, DR.Item("CONNECTION_ID"), DR.Item("SQL_RESULT"), DefaultValue)
|
|
Else
|
|
Dim VORBELGUNG As Integer = DefaultValue
|
|
'nur eine Textbox
|
|
AddTextBox(DR.Item("GUID"), DR.Item("NAME"), y, VORBELGUNG)
|
|
End If
|
|
Case "VARCHAR"
|
|
If DR.Item("SUGGESTION") = True And DR.Item("SQL_RESULT").ToString.Length > 0 Then
|
|
AddVorschlag_ComboBox(DR.Item("GUID"), DR.Item("NAME"), y, DR.Item("CONNECTION_ID"), DR.Item("SQL_RESULT"), DefaultValue)
|
|
'AddAutoSuggest_Textbox(DR.Item("NAME"), y, DR.Item("CONNECTION_ID"), DR.Item("SQL_RESULT"), DefaultValue)
|
|
Else
|
|
If DR.Item("NAME").ToString.ToLower = "dateiname" Then
|
|
'Übergibt den Dateinamen um diesen Vorzuschlagen
|
|
AddTextBox(DR.Item("GUID"), DR.Item("NAME"), y, System.IO.Path.GetFileNameWithoutExtension(txtFilepath.Text))
|
|
Else
|
|
Dim VORBELGUNG As String = DefaultValue
|
|
'nur eine Textbox
|
|
AddTextBox(DR.Item("GUID"), DR.Item("NAME"), y, VORBELGUNG)
|
|
End If
|
|
End If
|
|
Case "DATE"
|
|
AddDateTimePicker(DR.Item("GUID"), DR.Item("NAME"), y)
|
|
Case Else
|
|
MsgBox("Bitte überprüfen Sie den Datentyp des hinterlegten Indexwertes!", MsgBoxStyle.Critical, "Achtung:")
|
|
ClassLogger.Add(" - Datentyp nicht hinterlegt - LoadIndexe_Man")
|
|
End Select
|
|
|
|
anz += 1
|
|
ylbl += 60
|
|
y += 60
|
|
|
|
Next
|
|
SendKeys.Send("{TAB}")
|
|
Else
|
|
grbxControls.Visible = False
|
|
Me.Size = New Size(605, 430)
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in Refresh_Indices_Manual:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
Sub Check_Subfolder()
|
|
Try
|
|
Dim sel = "select MANUAL_SUBFOLDER FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE FORMVIEW_ID = (SELECT GUID FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & CURRENT_FORM_ID & " and SCREEN_ID = " & CURRENT_SCREEN_ID & ")"
|
|
Dim chk = ClassDatabase.Execute_Scalar(sel)
|
|
If Not IsNothing(chk) Then
|
|
If CBool(chk) = True Then
|
|
lblSubfolder.Visible = True
|
|
txtSubfolder.Visible = True
|
|
CURRENT_CHECK_SUBFOLDER = True
|
|
CURRENT_SUBFOLDER = ""
|
|
Else
|
|
lblSubfolder.Visible = False
|
|
txtSubfolder.Visible = False
|
|
CURRENT_CHECK_SUBFOLDER = False
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in Check_Subfolder:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
lblSubfolder.Visible = False
|
|
txtSubfolder.Visible = False
|
|
CURRENT_CHECK_SUBFOLDER = False
|
|
End Try
|
|
End Sub
|
|
Sub addLabel(ID As Integer, indexname As String, hinweis As String, ylbl As Integer)
|
|
Dim lbl As New Label
|
|
lbl.Name = "lbl" & indexname
|
|
lbl.Size = New Size(CInt(hinweis.Length * 15), 18) 'CInt(hinweis.Length * 9)
|
|
lbl.Text = hinweis
|
|
lbl.Tag = ID
|
|
grbxControls.Controls.Add(lbl)
|
|
lbl.Location = New Point(11, ylbl)
|
|
End Sub
|
|
Sub AddComboBoxValue(cmbName As ComboBox, Value As String)
|
|
cmbName.Items.Add(Value)
|
|
End Sub
|
|
' <STAThread()> _
|
|
Function addCombobox(ID As Integer, indexname As String, y As Integer)
|
|
Dim cmb As New ComboBox
|
|
cmb.Name = "cmb" & indexname
|
|
cmb.AutoSize = True
|
|
cmb.Size = New Size(300, 27)
|
|
cmb.Tag = ID
|
|
grbxControls.Controls.Add(cmb)
|
|
cmb.Location = New Point(11, y)
|
|
'cmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend
|
|
'cmb.AutoCompleteSource = AutoCompleteSource.ListItems
|
|
|
|
'AddHandler cmb.KeyUp, AddressOf AutoCompleteCombo_KeyUp
|
|
AddHandler cmb.SelectedIndexChanged, AddressOf OncmbSIndexChanged
|
|
AddHandler cmb.GotFocus, AddressOf OncmbGotFocus
|
|
AddHandler cmb.LostFocus, AddressOf OncmbLostFocus
|
|
Return cmb
|
|
End Function
|
|
Public Sub OncmbGotFocus(sender As System.Object, e As System.EventArgs)
|
|
Dim cmb As ComboBox = sender
|
|
cmb.BackColor = Color.Lime
|
|
End Sub
|
|
' <STAThread()> _
|
|
Public Sub OncmbLostFocus(sender As System.Object, e As System.EventArgs)
|
|
Dim cmb As ComboBox = sender
|
|
cmb.BackColor = Color.White
|
|
End Sub
|
|
Function AddTextBox(ID As Integer, indexname As String, y As Integer, text As String)
|
|
Dim txt As New TextBox
|
|
txt.Name = "txt" & indexname
|
|
|
|
txt.Size = New Size(260, 27)
|
|
'txt.AutoSize = True
|
|
txt.Tag = ID
|
|
grbxControls.Controls.Add(txt)
|
|
txt.Location = New Point(11, y)
|
|
|
|
If text <> "" Then
|
|
txt.Text = text
|
|
txt.Size = New Size(CInt(text.Length * 15), 27)
|
|
txt.SelectAll()
|
|
End If
|
|
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
|
|
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
|
|
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
|
|
AddHandler txt.TextChanged, AddressOf OnTextBoxTextChanged
|
|
Return txt
|
|
End Function
|
|
Public Sub OnTextBoxFocus(sender As System.Object, e As System.EventArgs)
|
|
Dim box As TextBox = sender
|
|
box.BackColor = Color.Lime
|
|
box.SelectAll()
|
|
End Sub
|
|
Public Sub OnTextBoxTextChanged(sender As System.Object, e As System.EventArgs)
|
|
Dim box As TextBox = sender
|
|
'If box.Text.Length > 15 Then
|
|
Dim g As Graphics = box.CreateGraphics
|
|
box.Width = g.MeasureString(box.Text, box.Font).Width + 15
|
|
g.Dispose()
|
|
' End If
|
|
|
|
End Sub
|
|
|
|
Public Sub OnTextBoxLostFocus(sender As System.Object, e As System.EventArgs)
|
|
Dim box As TextBox = sender
|
|
box.BackColor = Color.White
|
|
End Sub
|
|
Public Sub OnTextBoxKeyUp(sender As System.Object, e As System.Windows.Forms.KeyEventArgs)
|
|
Dim box As TextBox = sender
|
|
If (e.KeyCode = Keys.Return) Then
|
|
SendKeys.Send("{TAB}")
|
|
End If
|
|
End Sub
|
|
Sub AddDateTimePicker(ID As Integer, indexname As String, y As Integer)
|
|
Dim dtp As New DateTimePicker
|
|
dtp.Name = "dtp" & indexname
|
|
dtp.Format = DateTimePickerFormat.Short
|
|
dtp.Size = New Size(133, 27)
|
|
dtp.Tag = ID
|
|
dtp.Location = New Point(11, y)
|
|
grbxControls.Controls.Add(dtp)
|
|
AddHandler dtp.ValueChanged, AddressOf OndtpChanged
|
|
End Sub
|
|
Sub OndtpChanged()
|
|
'offen was hier zu tun ist
|
|
End Sub
|
|
Public Sub OncmbSIndexChanged(sender As System.Object, e As System.EventArgs)
|
|
If formloaded = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim cmb As ComboBox = sender
|
|
If cmb.SelectedIndex <> -1 Then
|
|
If cmb.Text.Length > 15 Then
|
|
Dim g As Graphics = cmb.CreateGraphics
|
|
cmb.Width = g.MeasureString(cmb.Text, cmb.Font).Width + 30
|
|
g.Dispose()
|
|
End If
|
|
Get_NextComboBoxResults(cmb)
|
|
SendKeys.Send("{TAB}")
|
|
End If
|
|
End Sub
|
|
Sub Get_NextComboBoxResults(cmb As ComboBox)
|
|
Try
|
|
Dim indexname = cmb.Name.Replace("cmb", "")
|
|
Dim sql = "SELECT GUID,NAME,SQL_RESULT FROM TBPMO_INDEX_MAN where SUGGESTION = 1 AND SQL_RESULT like '%@" & indexname & "%' and DOCTYPE_ID = " & CURRENT_DOKARTID & " ORDER BY SEQUENCE"
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, True)
|
|
If Not IsNothing(DT) Then
|
|
If DT.Rows.Count > 0 Then
|
|
Dim cmbname = "cmb" & DT.Rows(0).Item("NAME")
|
|
Renew_ComboboxResults(DT.Rows(0).Item("GUID"), indexname, cmb.Text)
|
|
End If
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in Get_NextComboBoxResults:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
Private Sub Renew_ComboboxResults(INDEX_GUID As Integer, SearchString As String, Resultvalue As String)
|
|
Try
|
|
|
|
Dim connectionString As String
|
|
Dim sqlCnn As SqlConnection
|
|
Dim sqlCmd As SqlCommand
|
|
Dim adapter As New SqlDataAdapter
|
|
|
|
Dim oracleConn As OracleConnection
|
|
Dim oracleCmd As OracleCommand
|
|
Dim oracleadapter As New OracleDataAdapter
|
|
|
|
Dim NewDataset As New DataSet
|
|
Dim i As Integer
|
|
|
|
'Dim DT_INDEX As DataTable = ClassDatabase.Return_Datatable("select * FROM TBPMO_INDEX_MAN WHERE GUID = " & INDEX_GUID, True)
|
|
'If IsNothing(DT_INDEX) Then
|
|
' Exit Sub
|
|
'End If
|
|
|
|
Dim conid = Return_CURRENT_TBPMO_INDEX_MAN_VALUE(INDEX_GUID, "CONNECTION_ID") ' DT_INDEX.Rows(0).Item("CONNECTION_ID")
|
|
Dim sql_result = Return_CURRENT_TBPMO_INDEX_MAN_VALUE(INDEX_GUID, "SQL_RESULT") 'DT_INDEX.Rows(0).Item("SQL_RESULT")
|
|
Dim NAME = Return_CURRENT_TBPMO_INDEX_MAN_VALUE(INDEX_GUID, "NAME") 'DT_INDEX.Rows(0).Item("NAME")
|
|
If Not IsNothing(conid) And Not IsNothing(sql_result) And Not IsNothing(NAME) Then
|
|
For Each ctrl As Control In Me.grbxControls.Controls
|
|
If ctrl.Name = "cmb" & NAME.ToString Then
|
|
Dim cmb As ComboBox = ctrl
|
|
Dim sql As String = sql_result.ToString.ToUpper.Replace("@" & SearchString.ToUpper, Resultvalue)
|
|
|
|
connectionString = ClassDatabase.GetConnectionString(conid)
|
|
If connectionString Is Nothing = False Then
|
|
'SQL Befehl füllt die Auswahlliste
|
|
If connectionString.Contains("Server=") And connectionString.Contains("Database=") Then
|
|
sqlCnn = New SqlConnection(connectionString)
|
|
sqlCnn.Open()
|
|
sqlCmd = New SqlCommand(sql, sqlCnn)
|
|
adapter.SelectCommand = sqlCmd
|
|
adapter.Fill(NewDataset)
|
|
ElseIf connectionString.StartsWith("Data Source=") And connectionString.Contains("SERVICE_NAME") Then
|
|
oracleConn = New OracleConnection(connectionString)
|
|
' Try
|
|
oracleConn.Open()
|
|
oracleCmd = New OracleCommand(sql, oracleConn)
|
|
oracleadapter.SelectCommand = oracleCmd
|
|
oracleadapter.Fill(NewDataset)
|
|
End If
|
|
If NewDataset.Tables(0).Rows.Count > 0 Then
|
|
cmb.Items.Clear()
|
|
'Die Standargrösse definieren
|
|
Dim newWidth As Integer = 300
|
|
For i = 0 To NewDataset.Tables(0).Rows.Count - 1
|
|
'MsgBox(NewDataset.Tables(0).Rows(i).Item(0))
|
|
AddComboBoxValue(cmb, NewDataset.Tables(0).Rows(i).Item(0))
|
|
Try
|
|
Dim text As String = NewDataset.Tables(0).Rows(i).Item(0)
|
|
If text.Length > 15 Then
|
|
Dim g As Graphics = cmb.CreateGraphics
|
|
If g.MeasureString(text, cmb.Font).Width + 30 > newWidth Then
|
|
newWidth = g.MeasureString(text, cmb.Font).Width + 30
|
|
End If
|
|
g.Dispose()
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error in Anpassung Breite ComboBox:")
|
|
End Try
|
|
|
|
Next
|
|
cmb.Size = New Size(newWidth, 27)
|
|
cmb.AutoCompleteSource = AutoCompleteSource.ListItems
|
|
cmb.AutoCompleteMode = AutoCompleteMode.Suggest
|
|
End If
|
|
If connectionString.Contains("Server=") And connectionString.Contains("Database=") Then
|
|
Try
|
|
adapter.Dispose()
|
|
sqlCmd.Dispose()
|
|
sqlCnn.Close()
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Else
|
|
Try
|
|
oracleadapter.Dispose()
|
|
oracleCmd.Dispose()
|
|
oracleConn.Close()
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
End If
|
|
Next
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Unexpected error in Renew_ComboboxResults - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in Renew_ComboboxResults:")
|
|
End Try
|
|
End Sub
|
|
Private Sub AddVorschlag_ComboBox(ID As Integer, indexname As String, y As Integer, conid As Integer, sql_Vorschlag As String, Optional Vorgabe As String = "")
|
|
Try
|
|
Dim connectionString As String
|
|
Dim sqlCnn As SqlConnection
|
|
Dim sqlCmd As SqlCommand
|
|
Dim adapter As New SqlDataAdapter
|
|
|
|
Dim oracleConn As OracleConnection
|
|
Dim oracleCmd As OracleCommand
|
|
Dim oracleadapter As New OracleDataAdapter
|
|
|
|
Dim NewDataset As New DataSet
|
|
Dim i As Integer
|
|
Dim sql As String
|
|
Dim runinLZ As Boolean = False
|
|
|
|
connectionString = ClassDatabase.GetConnectionString(conid)
|
|
If connectionString Is Nothing = False Then
|
|
'SQL Befehl füllt die Auswahlliste
|
|
sql = sql_Vorschlag
|
|
If Not sql.Contains("@") Then
|
|
If connectionString.Contains("Server=") And connectionString.Contains("Database=") Then
|
|
sqlCnn = New SqlConnection(connectionString)
|
|
sqlCnn.Open()
|
|
sqlCmd = New SqlCommand(sql, sqlCnn)
|
|
adapter.SelectCommand = sqlCmd
|
|
adapter.Fill(NewDataset)
|
|
ElseIf connectionString.StartsWith("Data Source=") And connectionString.Contains("SERVICE_NAME") Then
|
|
|
|
oracleConn = New OracleConnection(connectionString)
|
|
' Try
|
|
oracleConn.Open()
|
|
oracleCmd = New OracleCommand(sql_Vorschlag, oracleConn)
|
|
oracleadapter.SelectCommand = oracleCmd
|
|
oracleadapter.Fill(NewDataset)
|
|
End If
|
|
Else
|
|
runinLZ = True
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >>sql enthält Platzhalter und wird erst während der Laufzeit gefüllt!", False)
|
|
End If
|
|
|
|
|
|
|
|
Dim newCMB As ComboBox
|
|
If runinLZ = True Then
|
|
'Die Standardcombobox anlegen
|
|
newCMB = addCombobox(ID, indexname, y)
|
|
newCMB.Size = New Size(300, 27)
|
|
Else
|
|
If NewDataset.Tables(0).Rows.Count > 0 Then
|
|
'Die Standardcombobox anlegen
|
|
newCMB = addCombobox(ID, indexname, y)
|
|
'Die Standargrösse definieren
|
|
Dim newWidth As Integer = 300
|
|
For i = 0 To NewDataset.Tables(0).Rows.Count - 1
|
|
'MsgBox(NewDataset.Tables(0).Rows(i).Item(0))
|
|
AddComboBoxValue(newCMB, NewDataset.Tables(0).Rows(i).Item(0))
|
|
Try
|
|
Dim text As String = NewDataset.Tables(0).Rows(i).Item(0)
|
|
If text.Length > 15 Then
|
|
Dim g As Graphics = newCMB.CreateGraphics
|
|
If g.MeasureString(text, newCMB.Font).Width + 30 > newWidth Then
|
|
newWidth = g.MeasureString(text, newCMB.Font).Width + 30
|
|
End If
|
|
g.Dispose()
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error in Anpassung Breite ComboBox:")
|
|
End Try
|
|
|
|
Next
|
|
newCMB.Size = New Size(newWidth, 27)
|
|
newCMB.AutoCompleteSource = AutoCompleteSource.ListItems
|
|
newCMB.AutoCompleteMode = AutoCompleteMode.Suggest
|
|
newCMB.DropDownHeight = (newCMB.ItemHeight + 0.2) * 25
|
|
If Vorgabe <> "" Then
|
|
newCMB.SelectedIndex = newCMB.FindStringExact(Vorgabe)
|
|
newCMB.Text = Vorgabe
|
|
Get_NextComboBoxResults(newCMB)
|
|
End If
|
|
Else
|
|
|
|
End If
|
|
If connectionString.Contains("Server=") And connectionString.Contains("Database=") Then
|
|
Try
|
|
adapter.Dispose()
|
|
sqlCmd.Dispose()
|
|
sqlCnn.Close()
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
Else
|
|
Try
|
|
oracleadapter.Dispose()
|
|
oracleCmd.Dispose()
|
|
oracleConn.Close()
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Unexpected error in AddVorschlag_ComboBox - Indexname: " & indexname & " - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in AddVorschlag_ComboBox:")
|
|
End Try
|
|
End Sub
|
|
Sub Refresh_indices()
|
|
Try
|
|
If CURRENT_DOKARTID > 0 Then
|
|
Dim sql = "SELECT OBJEKTTYP FROM TBDD_DOKUMENTART WHERE GUID = " & CURRENT_DOKARTID
|
|
OBJECT_TYPETextBox.Text = ClassDatabase.Execute_Scalar(sql, True)
|
|
DOCTYPE_IDTextBox.Text = CURRENT_DOKARTID
|
|
sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & CURRENT_DOKARTID
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
Dim Count As Integer = 0
|
|
lvwIndices.Items.Clear()
|
|
If dt.Rows.Count > 0 Then
|
|
For Each row As DataRow In dt.Rows
|
|
lvwIndices.Items.Add(row.Item("INDEXNAME").ToString)
|
|
|
|
Dim Value As String
|
|
Dim _case = row.Item("VALUE").ToString.ToUpper
|
|
Select Case row.Item("VALUE").ToString.ToUpper
|
|
Case "@DOKART"
|
|
Value = CURRENT_DOKARTSTRING
|
|
Case "@RECORD-ID"
|
|
Value = CURRENT_RECORD_ID
|
|
End Select
|
|
lvwIndices.Items(Count).SubItems.Add(Value)
|
|
Count += 1
|
|
Next
|
|
End If
|
|
'den Entity-Key auslesen
|
|
sql = "Select Top 1 * from TBPMO_WD_OBJECTTYPE where Upper(object_type) = Upper('" & OBJECT_TYPETextBox.Text & "')"
|
|
dt = ClassDatabase.Return_Datatable(sql)
|
|
If Not dt Is Nothing Then
|
|
If dt.Rows.Count = 1 Then
|
|
lvwIndices.Items.Add(dt.Rows(0).Item("IDXNAME_ENTITYID").ToString)
|
|
lvwIndices.Items(Count).SubItems.Add(CURRENT_FORM_ID)
|
|
Count = Count + 1
|
|
lvwIndices.Items.Add(dt.Rows(0).Item("IDXNAME_PARENTID").ToString)
|
|
Dim ParentID = ClassDatabase.Execute_Scalar("SELECT TOP 1 PARENT_ID FROM TBPMO_FORM WHERE GUID = " & CURRENT_FORM_ID, True)
|
|
Try
|
|
If IsNumeric(ParentID) And ParentID > 0 Then
|
|
lvwIndices.Items(Count).SubItems.Add(ParentID)
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Setting Parent-ID" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
Count = Count + 1
|
|
''den Record-Key auslesen
|
|
'lvwIndices.Items.Add(dt.Rows(0).Item("IDXNAME_RECORDID").ToString)
|
|
'lvwIndices.Items(Count).SubItems.Add(CURRENT_RECORD_ID)
|
|
'Count = Count + 1
|
|
'lvwIndices.Items.Add(dt.Rows(0).Item("IDXNAME_DOCTYPE").ToString)
|
|
'lvwIndices.Items(Count).SubItems.Add(CURRENT_DOKARTSTRING)
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in Refresh Indices for Indexing:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub frmWD_Index_Dokart_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
My.Settings.Save()
|
|
End Sub
|
|
Private Sub frmWD_Index_Dokart_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Try
|
|
Me.VWDDINDEX_AUTOMTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
chkMultiIndexer.Checked = False
|
|
ClassLogger.Add(">> frmWD_Index_Dokart_Load", False)
|
|
chkdelete_origin.Checked = False
|
|
chkdelete_origin.Visible = False
|
|
CURRENT_FILENAME = ClassDatabase.Execute_Scalar("SELECT FILENAME2WORK FROM TBPMO_FILES_USER WHERE GUID = " & CURRENT_FILEID)
|
|
Dim HandleType As String = ClassDatabase.Execute_Scalar("SELECT HANDLE_TYPE FROM TBPMO_FILES_USER WHERE GUID = " & CURRENT_FILEID)
|
|
MULTIFILES = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBPMO_FILES_USER WHERE WORKED = 0 AND GUID <> " & CURRENT_FILEID & " AND UPPER(USER_WORK) = UPPER('" & Environment.UserName & "')")
|
|
If MULTIFILES > 0 Then
|
|
chkMultiIndexer.Text = "Multi-Indexing - Alle nachfolgenden Dateien (" & MULTIFILES & ") identisch indexieren"
|
|
chkMultiIndexer.Visible = True
|
|
Else
|
|
chkMultiIndexer.Visible = False
|
|
End If
|
|
aktFiledropped = CURRENT_FILENAME
|
|
txtFilepath.Text = aktFiledropped
|
|
If HandleType = "@DROPFROMFSYSTEM@" Then
|
|
droptype = "dragdrop file"
|
|
chkdelete_origin.Visible = True
|
|
chkdelete_origin.Checked = WD_IndexDeleteDocs
|
|
ElseIf HandleType = "@OUTLOOK_ATTMNT@" Then
|
|
droptype = "dragdrop attachment"
|
|
chkdelete_origin.Visible = True
|
|
chkdelete_origin.Checked = WD_IndexDeleteDocs
|
|
ElseIf HandleType = "@OUTLOOKMESSAGE@" Then
|
|
droptype = "dragdrop message"
|
|
chkdelete_origin.Visible = True
|
|
chkdelete_origin.Checked = WD_IndexDeleteDocs
|
|
ElseIf HandleType = "SCAM" Then
|
|
droptype = "scan"
|
|
End If
|
|
TBPMO_FILES_USERTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
VWPMO_DOKUMENTTYPESTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, CURRENT_FORMVIEW_ID)
|
|
If cmbDokumentart.Items.Count = 0 Then
|
|
MsgBox("No dcumenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in frmWD_Index_Dokart_Load:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub chkdelete_origin_CheckedChanged(sender As Object, e As EventArgs) Handles chkdelete_origin.CheckedChanged
|
|
WD_IndexDeleteDocs = chkdelete_origin.Checked
|
|
SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain")
|
|
End Sub
|
|
|
|
Private Sub frmWD_Index_Dokart_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
Try
|
|
If My.Settings.WD_INDEXDOKART_SAVE <> String.Empty Then
|
|
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(My.Settings.WD_INDEXDOKART_SAVE)
|
|
Else
|
|
If DD_DMSDataSet.VWPMO_DOKUMENTTYPES.Rows.Count = 1 Then
|
|
cmbDokumentart.SelectedIndex = 0
|
|
CURRENT_DOKARTID = cmbDokumentart.SelectedValue
|
|
CURRENT_DOKARTSTRING = cmbDokumentart.Text
|
|
Refresh_indices()
|
|
End If
|
|
End If
|
|
Me.Hide()
|
|
Me.Visible = True
|
|
Me.Activate()
|
|
Me.BringToFront()
|
|
If CURRENT_CONTROL_DOCTYPE_MATCH <> "" Then
|
|
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(CURRENT_CONTROL_DOCTYPE_MATCH)
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Error in Form Shown:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
formloaded = True
|
|
End Sub
|
|
|
|
Private Sub txtSubfolder_TextChanged(sender As Object, e As EventArgs) Handles txtSubfolder.TextChanged
|
|
CURRENT_SUBFOLDER = txtSubfolder.Text
|
|
End Sub
|
|
End Class |