Member7596 Ответов: 1

У меня есть проблема при поиске с помощью datetimepicker !


Привет, друзья!
У меня есть проблема, когда я ищу в datagridview с DateTimePicker1, DateTimePicker2, Textbox1.
DateTimePicker1 : DATE_FROM
DateTimePicker2 : DATE_TO
Текстовое поле textbox1 : NUMBER_RECEIPT

Я выбираю DateTimePicker1 от 01/01/2017 и DateTimePicker2 до 25/09/2017 и показываю:

| NUMBER_RECEIPT | ДАТА / ОПИСАНИЯ |
| 12 | 12/09/2017 | пункт 14 |
| 12 | 12/09/2017 | пункт 15 |
| 13 | 17/09/2017 | пункт 23 |
| 14 | 25/09/2017 | пункт 31 |

Когда я выбираю DateTimePicker1 от 17/09/2017 и DateTimePicker2 до 25/09/2017 показать:

| NUMBER_RECEIPT | ДАТА / ОПИСАНИЯ |
| 13 | 17/09/2017 | пункт 23 |
| 14 | 25/09/2017 | пункт 31 |

Моя проблема проявилась, когда я искал с помощью Поля textbox1 после выбора даты с 17/09/2017 по 25/09/2017: 12

| NUMBER_RECEIPT | ДАТА / ОПИСАНИЯ |
| 12 | 12/09/2017 | пункт 14 |
| 12 | 12/09/2017 | пункт 15 |

NUMBER_RECEIPT 12 не находится с 17/09/2017 по 25/09/2017 .

Что я уже пробовал:

Я попробовал по-другому, но безрезультатно.

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    Select Case e.KeyCode
        Case Keys.Enter
        BindingSource18.Filter = "[NUMBER_RECEIPT] LIKE '" & TextBox1.Text & "%'"
    End Select
End Sub


Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
        Me.BindingSource18.Filter = "DATE_FROM >= '" & DateTimePicker1.Text & "' and DATE_TO <= '" & DateTimePicker2.Text & "'"
End Sub


Private Sub DateTimePicker2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker2.ValueChanged
        Me.BindingSource18.Filter = "DATE_FROM >= '" & DateTimePicker1.Text & "' and DATE_TO <= '" & DateTimePicker2.Text & "'"
End Sub


Пожалуйста, вы можете мне помочь? СПАСИБО :)

1 Ответов

Рейтинг:
8

Richard Deeming

Еще одна вариация на ту же тему! :)

Private Sub UpdateFilter()
    Dim parts As New List(Of String)()
    
    If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then
        parts.Add("[NUMBER_RECEIPT] LIKE '" & TextBox1.Text & "%'")
    End If
    If DateTimePicker1.Checked Then
        parts.Add(string.Format("[DATE_FROM] >= #{0:yyyy/MM/dd}#", DateTimePicker1.Value))
    End If
    If DateTimePicker2.Checked Then
        parts.Add(string.Format("[DATE_FROM] <= #{0:yyyy/MM/dd}#", DateTimePicker2.Value))
    End If
    
    If parts.Count = 0 Then
        BindingSource18.Filter = ""
    Else
        BindingSource18.Filter = String.Join(" AND ", parts)
    End If
End Sub

Private Sub FilterChanged(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox1.KeyDown, DateTimePicker1.ValueChanged, DateTimePicker2.ValueChanged
    UpdateFilter()
End Sub


Member7596

Большое спасибо!! вы мне очень помогли