Особливості роботи з DataView, RowFilter та datetime, Записна книжка програміста-новачка, C#, SQL
Я ж це вже робив, але хрін тепер знайдеш той шматок коду, гуглимо знову… Де знайти простий і зрозумілий посібник для початківця, а не тонкощі для мега-гуру?
Навігація за записами
Особливості роботи з DataView, RowFilter та datetime
Завдання: відфільтрувати дані, завантажені з бази DataTable (DataSet) і DataGridView без повторного звернення до БД. У C# і WinForms для цього можна використовувати властивість RowFilter класів BindingSource.Filter та DataView.RowFilter. Насправді BindingSource просто передає умову фільтрації в DataView або DataTable (в останньому випадку умови від різних BindingSource будуть перезаписуватися), так що первинна властивість RowFilter, в яку пишеться текстова умова з синтаксисом, що дуже нагадує Sql.
Синтаксис RowFilter збігається з синтаксисом властивості DataColumn.Expression, документацію до якого і треба використовувати дивовижному програмісту. Проте в роботі цієї властивості вистачає підводних каменів та неочевидних моментів:
1. Умова від та до, ключове слово BETWEEN – банально не працює. Замість нього треба використовувати комбінацію простіших виразів, наприклад
2. Дата. Перетворені в рядок значення datetime треба обертати не на лапки, а на знак ґрат #
3. Регіональні налаштування дати не враховуються. Для використання в RowFilter дату треба самостійно перетворити на формат місяць-день-рік.
Якщо такі фільтри часто формуються, можна зробити функцію