переменная datetime, возвращающая ‘Строка не была распознана как допустимое DateTime.’

#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   "#";