From a05c1ad8e9dd0a2fbb2fff9abb536dffaaa08837 Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Fri, 5 Feb 2021 12:22:39 +0100 Subject: [PATCH] MS FlowSearchCriteria --- GUIs.ZooFlow/Search/frmFlowSearch.Designer.vb | 60 +++++++++--- GUIs.ZooFlow/Search/frmFlowSearch.vb | 98 +++++++++++++++---- 2 files changed, 122 insertions(+), 36 deletions(-) diff --git a/GUIs.ZooFlow/Search/frmFlowSearch.Designer.vb b/GUIs.ZooFlow/Search/frmFlowSearch.Designer.vb index 7ab96e6e..798a5dfd 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch.Designer.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch.Designer.vb @@ -48,6 +48,8 @@ Partial Class frmFlowSearch Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem() Me.BarToggleSwitchItem1 = New DevExpress.XtraBars.BarToggleSwitchItem() Me.BarToggleSwitchItem2 = New DevExpress.XtraBars.BarToggleSwitchItem() + Me.BarEditItemDate = New DevExpress.XtraBars.BarEditItem() + Me.RepositoryItemComboBox1 = New DevExpress.XtraEditors.Repository.RepositoryItemComboBox() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -55,6 +57,7 @@ Partial Class frmFlowSearch Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.Panel1.SuspendLayout() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Panel1 @@ -67,7 +70,7 @@ Partial Class frmFlowSearch Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top Me.Panel1.Location = New System.Drawing.Point(0, 159) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(1245, 61) + Me.Panel1.Size = New System.Drawing.Size(1237, 61) Me.Panel1.TabIndex = 0 ' 'CheckButton1 @@ -117,13 +120,17 @@ Partial Class frmFlowSearch 'Panel2 ' Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom - Me.Panel2.Location = New System.Drawing.Point(0, 452) + Me.Panel2.Location = New System.Drawing.Point(0, 627) Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(1245, 18) + Me.Panel2.Size = New System.Drawing.Size(1237, 18) Me.Panel2.TabIndex = 1 ' 'TileControlMatch ' + Me.TileControlMatch.AppearanceGroupText.ForeColor = System.Drawing.Color.White + Me.TileControlMatch.AppearanceGroupText.Options.UseForeColor = True + Me.TileControlMatch.AppearanceText.ForeColor = System.Drawing.Color.Yellow + Me.TileControlMatch.AppearanceText.Options.UseForeColor = True Me.TileControlMatch.BackColor = System.Drawing.Color.DimGray Me.TileControlMatch.Dock = System.Windows.Forms.DockStyle.Fill Me.TileControlMatch.Groups.Add(Me.TileGroup2) @@ -132,7 +139,8 @@ Partial Class frmFlowSearch Me.TileControlMatch.MaxId = 2 Me.TileControlMatch.Name = "TileControlMatch" Me.TileControlMatch.ScrollMode = DevExpress.XtraEditors.TileControlScrollMode.ScrollBar - Me.TileControlMatch.Size = New System.Drawing.Size(1245, 232) + Me.TileControlMatch.ShowGroupText = True + Me.TileControlMatch.Size = New System.Drawing.Size(1237, 407) Me.TileControlMatch.TabIndex = 2 Me.TileControlMatch.Text = "TileControl1" ' @@ -170,14 +178,15 @@ Partial Class frmFlowSearch 'RibbonControl1 ' Me.RibbonControl1.ExpandCollapseItem.Id = 0 - Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarToggleSwitchItemDateALL, Me.BarToggleSwitchItemCURRENTYEAR, Me.BarToggleSwitchItemLASTYEAR, Me.BarToggleSwitchItemCURRENTMONTH, Me.BarToggleSwitchItemLASTMONTH, Me.BarButtonGroup1, Me.BarToggleSwitchItemTODAY, Me.BarToggleSwitchItemYESTERDAY, Me.BarCheckItem1, Me.BarToggleSwitchItem1, Me.BarToggleSwitchItem2}) + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarToggleSwitchItemDateALL, Me.BarToggleSwitchItemCURRENTYEAR, Me.BarToggleSwitchItemLASTYEAR, Me.BarToggleSwitchItemCURRENTMONTH, Me.BarToggleSwitchItemLASTMONTH, Me.BarButtonGroup1, Me.BarToggleSwitchItemTODAY, Me.BarToggleSwitchItemYESTERDAY, Me.BarCheckItem1, Me.BarToggleSwitchItem1, Me.BarToggleSwitchItem2, Me.BarEditItemDate}) Me.RibbonControl1.Location = New System.Drawing.Point(0, 0) - Me.RibbonControl1.MaxItemId = 12 + Me.RibbonControl1.MaxItemId = 13 Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) + Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemComboBox1}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl1.ShowToolbarCustomizeItem = False - Me.RibbonControl1.Size = New System.Drawing.Size(1245, 159) + Me.RibbonControl1.Size = New System.Drawing.Size(1237, 159) Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1 Me.RibbonControl1.Toolbar.ShowCustomizeItem = False ' @@ -191,6 +200,7 @@ Partial Class frmFlowSearch ' 'BarToggleSwitchItemCURRENTYEAR ' + Me.BarToggleSwitchItemCURRENTYEAR.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Left Me.BarToggleSwitchItemCURRENTYEAR.Caption = "Aktuelles Jahr" Me.BarToggleSwitchItemCURRENTYEAR.Id = 2 Me.BarToggleSwitchItemCURRENTYEAR.Name = "BarToggleSwitchItemCURRENTYEAR" @@ -250,6 +260,20 @@ Partial Class frmFlowSearch Me.BarToggleSwitchItem2.Id = 11 Me.BarToggleSwitchItem2.Name = "BarToggleSwitchItem2" ' + 'BarEditItemDate + ' + Me.BarEditItemDate.Caption = "Attribut " + Me.BarEditItemDate.Edit = Me.RepositoryItemComboBox1 + Me.BarEditItemDate.EditWidth = 120 + Me.BarEditItemDate.Id = 12 + Me.BarEditItemDate.Name = "BarEditItemDate" + ' + 'RepositoryItemComboBox1 + ' + Me.RepositoryItemComboBox1.AutoHeight = False + Me.RepositoryItemComboBox1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.RepositoryItemComboBox1.Name = "RepositoryItemComboBox1" + ' 'RibbonPage1 ' Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2}) @@ -259,27 +283,28 @@ Partial Class frmFlowSearch 'RibbonPageGroup1 ' Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemDateALL) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarEditItemDate) Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonGroup1) - Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemCURRENTMONTH) - Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemLASTMONTH) - Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemTODAY) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemTODAY, True) Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemYESTERDAY) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemCURRENTYEAR, True) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemLASTYEAR) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemLASTMONTH, True) + Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItemCURRENTMONTH) Me.RibbonPageGroup1.Name = "RibbonPageGroup1" - Me.RibbonPageGroup1.Text = "Datumeingränzung" + Me.RibbonPageGroup1.Text = "Eingrenzung Datum" ' 'RibbonPageGroup2 ' - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarToggleSwitchItemCURRENTYEAR) - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarToggleSwitchItemLASTYEAR) Me.RibbonPageGroup2.Name = "RibbonPageGroup2" Me.RibbonPageGroup2.Text = "RibbonPageGroup2" ' 'RibbonStatusBar1 ' - Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 470) + Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 645) Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1 - Me.RibbonStatusBar1.Size = New System.Drawing.Size(1245, 22) + Me.RibbonStatusBar1.Size = New System.Drawing.Size(1237, 22) ' 'RibbonPage2 ' @@ -292,7 +317,7 @@ Partial Class frmFlowSearch Me.Appearance.Options.UseBackColor = True Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1245, 492) + Me.ClientSize = New System.Drawing.Size(1237, 667) Me.Controls.Add(Me.TileControlMatch) Me.Controls.Add(Me.Panel2) Me.Controls.Add(Me.Panel1) @@ -306,6 +331,7 @@ Partial Class frmFlowSearch Me.Panel1.ResumeLayout(False) Me.Panel1.PerformLayout() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -339,4 +365,6 @@ Partial Class frmFlowSearch Friend WithEvents BarToggleSwitchItem1 As DevExpress.XtraBars.BarToggleSwitchItem Friend WithEvents BarToggleSwitchItem2 As DevExpress.XtraBars.BarToggleSwitchItem Friend WithEvents CheckButton1 As DevExpress.XtraEditors.CheckButton + Friend WithEvents BarEditItemDate As DevExpress.XtraBars.BarEditItem + Friend WithEvents RepositoryItemComboBox1 As DevExpress.XtraEditors.Repository.RepositoryItemComboBox End Class diff --git a/GUIs.ZooFlow/Search/frmFlowSearch.vb b/GUIs.ZooFlow/Search/frmFlowSearch.vb index fa6eb0b4..cd2e5ed8 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch.vb @@ -18,17 +18,62 @@ Public Class frmFlowSearch Private EventtoggleChange As Boolean = False Private SEARCH_FACT_DATE As String = "MONTH(OBJ.ADDED_WHEN) <> 13" + Private SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" + Private Language_Term_Object As String Public Sub New(pBaseSearchSql As String) - - ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() BASE_SEARCHCommand = pBaseSearchSql ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Logger = My.LogConfig.GetLogger() ASorDB = New ClassDataASorDB(My.LogConfig) + If My.Application.User.Language = "de-DE" Then + Language_Term_Object = "Objekte" + Else + Language_Term_Object = "objects" + End If + End Sub + Private Sub frmFlowSearch_Load(sender As Object, e As EventArgs) Handles Me.Load + Try + TileControlMatch.Groups.Clear() + Dim oDT As DataTable = ASorDB.GetDatatable("IDB", $"SELECT * FROM VWIDB_BE_ATTRIBUTE", "VWIDB_BE_ATTRIBUTE", "", "ATTR_TITLE") + RepositoryItemComboBox1.Items.Add("Erstellt Wann") + For Each oRow As DataRow In oDT.Rows + If oRow.Item("TYPE_ID") = 5 Then + RepositoryItemComboBox1.Items.Add(oRow.Item("ATTR_TITLE")) + End If + Next + 'Dim editor As BarEditItem = BarEditItemDate + ' editor = TryCast(BarEditItemDate, ComboBoxEdit) + If My.Application.User.Language = "de-DE" Then + BarEditItemDate.EditValue = "Erstellt Wann" + Else + BarEditItemDate.EditValue = "Added when" + End If + + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical) + Logger.Error(ex) + End Try + End Sub + Private Sub RepositoryItemComboBox1_EditValueChanged(sender As Object, e As EventArgs) Handles RepositoryItemComboBox1.EditValueChanged + Try + Dim oEditor As ComboBoxEdit + Dim oEditValue As String + oEditor = TryCast(RibbonControl1.Manager.ActiveEditor, ComboBoxEdit) + oEditValue = oEditor.EditValue + + If oEditValue = "Erstellt Wann" Or oEditValue = "Added when" Then + SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" + Else + SEARCH_FACT_DATE_ATTRIBUTE = oEditValue + End If + Catch ex As Exception + Logger.Error(ex) + End Try + End Sub Private Sub txtSearch_TextChanged(sender As Object, e As EventArgs) Handles txtSearch.TextChanged Try @@ -56,7 +101,12 @@ Public Class frmFlowSearch If BarToggleSwitchItemDateALL.Checked = False Then - oSQL = oSQL.Replace("MONTH(OBJ.ADDED_WHEN) <> 13", SEARCH_FACT_DATE) + If SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" Then + oSQL = oSQL.Replace("MONTH(OBJ.ADDED_WHEN) <> 13", SEARCH_FACT_DATE) + Else + oSQL = oSQL.Replace("AND MONTH(OBJ.ADDED_WHEN) <> 13", "") + oSQL = oSQL.Replace("--@INNERJOIN_DATE", "INNER JOIN VWIDB_GROUP_DATA_DATE GRP_DATE ON MD.IDB_OBJ_ID = GRP_DATE.IDB_OBJ_ID") + End If End If Dim oResultCountAttributes As Integer = 0 TileControlMatch.Groups.Clear() @@ -81,15 +131,16 @@ Public Class frmFlowSearch oResultCountAttributes += orow.Item(1) Next lblFoundResult.Text = GetResultString(oResultCountAttributes, oAttrCount, oSearchValue) + TileControlMatch.Text = GetResultString(oResultCountAttributes, oAttrCount, oSearchValue) lblFoundResult.Visible = True - End If oNewTable.DefaultView.Sort = "COUNT ASC" oNewTable = oNewTable.DefaultView.ToTable For Each oGroupRow As DataRow In oNewTable.Rows Dim oGroup As New TileGroup - oGroup.Text = $"{oGroupRow.Item(0).ToString} [{oGroupRow.Item(1).ToString}]" + + oGroup.Text = $"{oGroupRow.Item(0).ToString} ({oGroupRow.Item(1).ToString} {Language_Term_Object})" oGroup.Visible = True For Each oitemRow As DataRow In oResultsfromSearchDT.Rows If oitemRow.Item("ATTRIBUTE") = oGroupRow.Item(0) Then @@ -97,7 +148,6 @@ Public Class frmFlowSearch If Not IsNothing(oItem) Then oGroup.Items.Add(oItem) End If - End If Next TileControlMatch.Groups.Add(oGroup) @@ -276,9 +326,7 @@ Public Class frmFlowSearch Label1.Visible = True End Sub - Private Sub frmFlowSearch_Load(sender As Object, e As EventArgs) Handles Me.Load - TileControlMatch.Groups.Clear() - End Sub + Private Sub TileControlMatch_ItemClick(sender As Object, e As TileItemEventArgs) Handles TileControlMatch.ItemClick Try @@ -311,7 +359,20 @@ Public Class frmFlowSearch Logger.Error(ex) End Try End Sub - + Private Function GET_DATE_LIMITATION(pInput As String) As String + Try + Dim oReturn As String + If SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" Then + Return pInput.Replace("@ATTRIBUTE", "OBJ.ADDED_WHEN") + Else + Dim oSTR = $"GRP_DATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]" + Return pInput.Replace("@ATTRIBUTE", oSTR) + End If + Catch ex As Exception + Return pInput + Logger.Error(ex) + End Try + End Function Private Sub BarToggleSwitchItem_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarToggleSwitchItemCURRENTYEAR.CheckedChanged, BarToggleSwitchItemLASTYEAR.CheckedChanged, BarToggleSwitchItemCURRENTMONTH.CheckedChanged, BarToggleSwitchItemLASTMONTH.CheckedChanged, BarToggleSwitchItemTODAY.CheckedChanged, BarToggleSwitchItemYESTERDAY.CheckedChanged Dim btsi As BarToggleSwitchItem = TryCast(sender, BarToggleSwitchItem) @@ -320,22 +381,23 @@ Public Class frmFlowSearch Dim oWHENDATE As String Select Case btsi.Name Case "BarToggleSwitchItemCURRENTYEAR" - oWHENDATE = "YEAR(OBJ.ADDED_WHEN) = YEAR(GETDATE())" + oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())") Case "BarToggleSwitchItemLASTYEAR" - oWHENDATE = "YEAR(OBJ.ADDED_WHEN) = (YEAR(GETDATE()) -1)" + oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = (YEAR(GETDATE()) -1)") Case "BarToggleSwitchItemCURRENTMONTH" + oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = MONTH(GETDATE())") Case "BarToggleSwitchItemLASTMONTH" Dim currentDate As DateTime = DateTime.Now If currentDate.Month = 1 Then - oWHENDATE = "MONTH(OBJ.ADDED_WHEN) = 12 " & vbNewLine & "AND YEAR(OBJ.ADDED_WHEN) = (YEAR(GETDATE()) -1)" + oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = 12 " & vbNewLine & "AND YEAR(@ATTRIBUTE) = (YEAR(GETDATE()) -1)") Else - oWHENDATE = "MONTH(OBJ.ADDED_WHEN) = MONTH(GETDATE())" + oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = (MONTH(GETDATE()) -1)") End If Case "BarToggleSwitchItemTODAY" - oWHENDATE = "convert(DATE,OBJ.ADDED_WHEN) = convert(DATE,GETDATE())" + oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE())") Case "BarToggleSwitchItemYESTERDAY" - oWHENDATE = "convert(DATE,OBJ.ADDED_WHEN) = convert(DATE,GETDATE()-1)" + oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)") End Select SEARCH_FACT_DATE = oWHENDATE Select Case btsi.Name @@ -418,8 +480,4 @@ Public Class frmFlowSearch StartSearch_Full("") CheckButton1.Checked = True End Sub - - Private Sub btnFindAll_Click_1(sender As Object, e As EventArgs) - - End Sub End Class \ No newline at end of file