Я бы добавил столбец в возвращаемый набор результатов, чтобы указать, попадает ли строка в выборку «NeededDate».Позвольте моей базе данных проделать тяжелую работу и просто положитесь на сторону VB.NET для стилизации на основе значений, возвращаемых в запросе.
Но, во-первых, я хочу указать на проблему, которую вы сделалив вашем собственном ответе на этот вопрос.«&» В VB.NET - это оператор объединения строк, а не логическая операция «И».& будет неявно приводить объекты к строке при использовании.
Таким образом, эта строка в вашем ответе
Date.Now & DateAdd(intervaltype, days, secondDate)
сгенерирует строку, которая будет выглядеть примерно так: 13 апреля 2019 г., 5 апреля, 2019 Что не подходит для сравнения дат.Кроме того, он не будет выдавать ошибку компилятора, поскольку он автоматически преобразует объект даты в левой части оператора сравнения в строку, поскольку значение в правой части было строкой.
Это было указано ранее, но вам нужны все элементы в фактическом типе DATE для сравнения дат.
Так что попробуйте что-то вроде этого
Dim startdate As Date
If Not Date.TryParse(DateString, startDate) Then startDate = Date.Now
Dim days As Double = 7
Dim secondDate As Date
secondDate = DateAdd(DateInterval.Day, days, startdate)
For i = 0 To dt.Rows.Count - 1
Dim checkDate As Date = Date.Parse(dt.Rows(i)(5).ToString)
If checkDate <= Date.Now AndAlso checkDate >= secondDate Then
DataGridView1.Rows(i).DefaultCellStyle.ForeColor = Color.Red
End If
Next
Обратите внимание на оператор "AndAlso".Это похоже на оператор And
, но проверяет параметр сравнения справа от него, только если оператор сравнения слева от AndAlso
возвращает true.