Imports System.IO Imports DD_LIB_Standards Imports DevExpress.XtraPrinting Public Class frmDoc_Links Public Property Documents As New List(Of ClassWindreamDocGrid.WindreamDoc) Private Sub frmDoc_DocLinks_Load(sender As Object, e As EventArgs) Handles Me.Load Try Refresh_Grid_Data(Documents) If USER_IS_ADMIN Then bsiSource.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Else bsiSource.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If ' TODO: this does not work for the old form If Documents.Count = 0 Then Text = $"Document-Links for: NODOC-ID" ElseIf Documents.Count = 1 Then Text = $"Document-Links for: {Documents.First.DocPath}" Else Text = $"Document-Links for {Documents.Count} files" End If 'If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count = 1 Then ' Me.Text = $"Document-Links for file: {ClassWindreamDocGrid.DT_RESULTFILES.Rows(0).Item("DOC_PATH")}" 'Else ' Me.Text = $"Document-Links for file: NODOC-ID" 'End If bbtnitmdeletelink.Enabled = False Select Case CURRENT_FILE_RIGHT Case "RW" bbtnitmdeletelink.Enabled = True Case "RWA" bbtnitmdeletelink.Enabled = True End Select Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in frmDoc_DocLinks_Load", ex.Message, ex.StackTrace) End Try End Sub Private Function Get_Grid_Data(pDocuments As List(Of ClassWindreamDocGrid.WindreamDoc)) As DataTable Dim oTable As DataTable Dim oSql As String = "" If pDocuments.Count > 0 Then Dim oIds = String.Join(",", pDocuments.Select(Function(d) d.DocId).ToArray()) oSql = $"SELECT * FROM VWPMO_CUST_DOC_OBJECT_LINKS WHERE DocID IN ({oIds})" oTable = MYDB_ECM.GetDatatable(oSql) Else oSql = $"select * FROM VWPMO_CUST_DOC_OBJECT_LINKS WHERE DocID = {CURRENT_DOC_ID}" oTable = MYDB_ECM.GetDatatable(oSql) End If If oTable Is Nothing Then LOGGER.Error("Please check your link-object-relation: {0}", oSql) End If Return oTable End Function Sub Refresh_Grid_Data(pDocuments As List(Of ClassWindreamDocGrid.WindreamDoc)) Try Dim oTable = Get_Grid_Data(pDocuments) If Not IsNothing(oTable) Then BarStaticItemStatus.Caption = $"{oTable.Rows.Count} links for Document found!" grvwGrid.Columns.Clear() GridControlRecords.DataSource = oTable 'grvwGrid.Columns.Item("already linked").Fixed = True Try grvwGrid.Columns.Item("DocID").Visible = False grvwGrid.Columns.Item("RecordID").Visible = False 'grvwGrid.Columns.Item("FULL_FILENAME").Visible = False Try If grvwGrid.Columns.Item("VALUE") IsNot Nothing Then grvwGrid.Columns.Item("VALUE").Visible = False End If Catch ex1 As Exception LOGGER.Warn("Column VALUE not part of VWPMO_CUST_DOC_OBJECT_LINKS" & ex1.Message) End Try grvwGrid.OptionsView.ColumnAutoWidth = False grvwGrid.BestFitColumns() Catch ex As Exception LOGGER.Error(ex) End Try GridControlRecords.RefreshDataSource() 'If oTable.Rows.Count > 10000 Then ' BarButtonItem2.Enabled = False 'Else ' BarButtonItem2.Enabled = True 'End If Else MsgBox($"Please check Your link-object-relation", MsgBoxStyle.Exclamation) End If Catch ex As Exception LOGGER.Error(ex) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Sub Refresh_Grid_Data", ex.Message, ex.StackTrace) End Try End Sub Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmdeletelink.ItemClick Dim oSelectedRows As Integer() = grvwGrid.GetSelectedRows() For Each rowhandle As Integer In oSelectedRows Try Dim oSelectedDocID = grvwGrid.GetRowCellValue(rowhandle, "DocID") Dim oSelectedRecordID = grvwGrid.GetRowCellValue(rowhandle, "RecordID") If IsNothing(oSelectedDocID) Then Continue For End If LOGGER.Debug($"RecordLink will be removed Record: {oSelectedRecordID} - DocID: {oSelectedDocID} ") Try If ClassFileResult.Delete_ResultFile(oSelectedDocID, oSelectedRecordID, 0) = True Then ClassHelper.InsertEssential_Log(oSelectedDocID, "DOC-ID", $"RECORD LINK {oSelectedRecordID} REMOVED FROM DOC-SEARCH") End If Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Removing DocRecord-Link", ex.Message, ex.StackTrace) End Try Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Collecting DocRecord-Link", ex.Message, ex.StackTrace) End Try Next Refresh_Grid_Data(Documents) End Sub Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick Try Dim saveFileDialogDocSearchResult As New SaveFileDialog With { .Filter = "Excel File|*.xlsx", .Title = "Export to Excel:" } saveFileDialogDocSearchResult.ShowDialog() If saveFileDialogDocSearchResult.FileName <> "" Then Dim oOptions As New XlsxExportOptionsEx With { .ShowGridLines = True, .AllowSortingAndFiltering = DevExpress.Utils.DefaultBoolean.True, .ExportType = DevExpress.Export.ExportType.DataAware, .ExportMode = XlsxExportMode.SingleFile, .AllowFixedColumnHeaderPanel = DevExpress.Utils.DefaultBoolean.True } Cursor = Cursors.WaitCursor GridControlRecords.MainView.ExportToXlsx(saveFileDialogDocSearchResult.FileName, oOptions) Dim result As MsgBoxResult Dim msg = String.Format("Datei wurde erstellt! Wollen Sie diese nun öffnen?") If USER_LANGUAGE <> "de-DE" Then msg = String.Format("File was created. Do You want to open excel?") End If result = MessageBox.Show(msg, "Exporting result:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If result = MsgBoxResult.Yes Then Process.Start(saveFileDialogDocSearchResult.FileName) End If End If Catch ex As Exception LOGGER.Error(ex) MsgBox("Unexpected Error in ExportExcel: " & ex.Message, MsgBoxStyle.Critical) End Try Cursor = Cursors.Default End Sub Private Sub frmDoc_Links_SizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged Try grvwGrid.OptionsView.ColumnAutoWidth = False grvwGrid.BestFitColumns() Catch ex As Exception LOGGER.Error(ex) End Try End Sub Private Sub OrdnerÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OrdnerÖffnenToolStripMenuItem.Click Dim oPAth = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("FULL_FILENAME")) Dim oDocID = grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns("DocID")) For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows ClassHelper.Open_Folder(oPAth, oDocID) Next End Sub End Class