#datetime #bindingsource
#datetime #bindingsource
Вопрос:
У меня есть файл базы данных accdb, для ExpiryDate которого установлено значение DATETIME. Datagridview отформатирован в dd / MM /yyyy. Я пытаюсь отфильтровать привязку между датами следующим образом:
private void button1_Click(object sender, EventArgs e)
{
DateTime srchDateTo = DateTime.Today.AddMonths(1);
DateTime srchDateFrom = DateTime.Today.AddMonths(-11);
client1BindingSource.Filter = "ExpiryDate < #" srchDateTo "# And ExpiryDate > #" srchDateFrom "#";
}
когда я нажимаю кнопку, я получаю: ‘Строка не была распознана как допустимое DateTime.’
Я ввел окно сообщения, и переменные находятся в правильном формате.
Это моя первая база данных, и мне нужно многому научиться, поэтому я могу не понимать ответы, пока не изучу ответы.
Ответ №1:
Насколько я понимаю, вам нужно отформатировать ваше DateTime, прежде чем вставлять его в свой фильтр.
Попробуйте .ToString("dd/MM/yyyy")
в конце ваших переменных DateTime.
Например:
client1BindingSource.Filter = "ExpiryDate < #"
DateTime.Today.AddMonths(1).ToString("dd/MM/yyyy") "# And ExpiryDate > #"
DateTime.Today.AddMonths(-11).ToString("dd/MM/yyyy") "#";
Удачного кодирования 🙂
Комментарии:
1. У меня все еще была та же ошибка, но это натолкнуло меня на идею попробовать следующее:
2. строка srchDateTo = DateTime. Сегодня. AddMonths(1). toString(«дд / ММ/гггг»); строка srchDateFrom = DateTime. Сегодня. Дополнительные месяцы (-11). toString(«дд / ММ /гггг»); DateTime DateTo = DateTime. Синтаксический анализ(srchDateTo); DateTime DateFrom = DateTime. Синтаксический анализ(srchDateFrom);client1BindingSource. Filter = «ExpiryDate Не равен нулю и » «ExpiryDate < #» DateTo «# И ExpiryDate > #» DateFrom «#»;
3. @Garry ты уверен, что DateTime должно иметь этот формат? В документах Microsoft они описывают два формата с разными настройками для местоположения (США и не США). Смотрите support.microsoft.com/en-us/office /…
4. Я знаю, что сохраненные данные (DATETIME) и отображение данных практически не связаны.
5. (Извините, я продолжаю нажимать enter для новой строки). моя проблема в том, что поле таблицы — DATETIME, а переменная — DATETIME, но я продолжаю получать ‘Строка не была распознана как допустимое DateTime.’ — Я знаю, что значение NULL не является допустимым форматом DATETIME, и у меня его нет.
Ответ №2:
Я обнаружил, что строка, которая не является допустимым datetime, была заголовком поля. Ответ заключается в использовании строковой переменной, а не переменной datetime.
string srchDateTo = DateTime.Today.AddMonths(1).ToString("dd/MMM/yyyy");
string srchDateFrom = DateTime.Today.AddMonths(-11).ToString("dd/MMM/yyyy");
client1BindingSource.Filter = "ExpiryDate < #" srchDateTo "# And ExpiryDate > #" srchDateFrom "#";