Imports System.IO Public Class frmWD_Index_Dokart Dim droptype As String Dim aktFiledropped As String Dim MULTIFILES As Integer = 0 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 Dim err As Boolean = False Dim streamresult = ClassWindream.Stream_File(Filepath, Targetpath) 'Dim type = streamresult.GetType If streamresult = True Then Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & vDokart_ID Dim dt As DataTable = ClassDatabase.Return_Datatable(sql) Dim indexierung_erfolgreich As Boolean = False If dt Is Nothing = False Then 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 End If If LogErrorsOnly = False Then ClassLogger.Add(" - Indexvalue: " & idxvalue.ToString, False) Count += 1 indexierung_erfolgreich = ClassWindream.DateiIndexieren(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 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.DateiIndexieren(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 indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString idxvalue = CURRENT_PARENTID If LogErrorsOnly = False Then ClassLogger.Add(" - Parent-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 Parent-ID - See log", MsgBoxStyle.Critical) Return False End If End If End If If indexierung_erfolgreich = True Then If multiindex = False Then MsgBox("Datei erfolgreich nach windream übertragen", MsgBoxStyle.Information, "Erfolgsmeldung") ClassDatabase.Execute_Scalar("UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = " & CURRENT_FILEID) frmForm_Constructor.tsstatus_Detail_show(True, "Datei erfolgreich nach windream übertragen") '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@" 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 Return True Else MsgBox("Es gab ein Problem bei der Indexierung der Datei. Bitte prüfen sie das Log!", MsgBoxStyle.Exclamation, "Achtung:") Return False End If End If End If End If Catch ex As Exception MsgBox("Unexpected error in Work-File:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function Private Sub btnindex_Click(sender As Object, e As EventArgs) Handles btnindex.Click Try Me.Cursor = Cursors.WaitCursor SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs) If cmbDokumentart.SelectedIndex <> -1 Then My.Settings.WD_INDEXDOKART_SAVE = cmbDokumentart.Text My.Settings.Save() 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, cmbDokumentart.SelectedValue, cmbDokumentart.Text, 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, cmbDokumentart.SelectedValue, cmbDokumentart.Text, True) = False Then err = True Exit For End If Next Me.Cursor = Cursors.Default If err = False Then MsgBox("Alle Dateien wurden mit Multiindexing erfolgreich nach windream übertragen!", MsgBoxStyle.Information, "Erfolgsmeldung:") Me.Close() End If End If End If Else If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, cmbDokumentart.SelectedValue, cmbDokumentart.Text, False) = True Then Me.Close() End If Me.Cursor = Cursors.Default 'ClassWindream._WDObjekttyp = Me.OBJECT_TYPETextBox.Text 'Dim streamresult = ClassWindream.Stream_File(Me.txtFilepath.Text, Me.PATHTextBox.Text) ''Dim type = streamresult.GetType 'If streamresult = True Then ' Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & cmbDokumentart.SelectedValue ' Dim dt As DataTable = ClassDatabase.Return_Datatable(sql) ' Dim indexierung_erfolgreich As Boolean = False ' If dt Is Nothing = False Then ' 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", cmbDokumentart.Text) ' End Select ' End If ' If LogErrorsOnly = False Then ClassLogger.Add(" - Indexvalue: " & idxvalue.ToString, False) ' Count += 1 ' indexierung_erfolgreich = ClassWindream.DateiIndexieren(streamresult, indexname, idxvalue) ' If indexierung_erfolgreich = False Then ' MsgBox("Error in indexing file - See log", MsgBoxStyle.Critical) ' Exit For ' End If ' 'ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String ' Next ' '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 ' 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.DateiIndexieren(streamresult, indexname, idxvalue) ' If indexierung_erfolgreich = False Then ' MsgBox("Error in indexing file Entity - See log", MsgBoxStyle.Critical) ' End If ' indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString ' idxvalue = CURRENT_PARENTID ' If LogErrorsOnly = False Then ClassLogger.Add(" - Parent-ID: " & idxvalue.ToString, False) ' indexierung_erfolgreich = ClassWindream.DateiIndexieren(streamresult, indexname, idxvalue) ' If indexierung_erfolgreich = False Then ' MsgBox("Error in indexing file Parent-ID - See log", MsgBoxStyle.Critical) ' End If ' End If ' End If ' If indexierung_erfolgreich = True Then ' MsgBox("Datei erfolgreich nach windream übertragen", MsgBoxStyle.Information, "Erfolgsmeldung") ' ClassDatabase.Execute_Scalar("UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = " & CURRENT_FILEID) ' frmForm_Constructor.tsstatus_Detail_show(True, "Datei erfolgreich nach windream übertragen") ' '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@" 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 ' Me.Close() ' Else ' MsgBox("Es gab ein Problem bei der Indexierung der Datei. Bitte prüfen sie das Log!", MsgBoxStyle.Exclamation, "Achtung:") ' End If ' End If ' End If 'Else ' MsgBox("Unexpected Error in Stream2windream. Please check logfile!", MsgBoxStyle.Exclamation) End If Catch ex As Exception MsgBox("Error in Indexing:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub cmbDokumentart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDokumentart.SelectedIndexChanged Try If cmbDokumentart.SelectedIndex <> -1 Then Refresh_indices() End If Catch ex As Exception MsgBox("Error in cmbDokumentart SelectedIndex:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Sub Refresh_indices() Try If Not FW_DOCTYPE_IDTextBox.Text = String.Empty Then Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & FW_DOCTYPE_IDTextBox.Text Dim dt As DataTable = ClassDatabase.Return_Datatable(sql) Dim Count As Integer = 0 If dt.Rows.Count > 0 Then ListView1.Items.Clear() For Each row As DataRow In dt.Rows ListView1.Items.Add(row.Item("INDEXNAME").ToString) ListView1.Items(Count).SubItems.Add(row.Item("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 ListView1.Items.Add(dt.Rows(0).Item("IDXNAME_ENTITYID").ToString) ListView1.Items(Count).SubItems.Add(CURRENT_FORM_ID) ListView1.Items.Add(dt.Rows(0).Item("IDXNAME_PARENTID").ToString) ListView1.Items(Count + 1).SubItems.Add(CURRENT_PARENTID) 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 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 End If VWPMO_DOKUMENTTYPESTableAdapter.Connection.ConnectionString = MyConnectionString Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, CURRENT_FORMVIEW_ID) TBPMO_FILES_USERTableAdapter.Connection.ConnectionString = MyConnectionString Refresh_indices() 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) End Sub Private Sub frmWD_Index_Dokart_Shown(sender As Object, e As EventArgs) Handles Me.Shown If My.Settings.WD_INDEXDOKART_SAVE <> String.Empty Then cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(My.Settings.WD_INDEXDOKART_SAVE) End If End Sub End Class