Как получить недельный список из базы данных SQL Server, используя инструкцию в VB.NET? - PullRequest
1 голос
/ 13 апреля 2019

Я хотел бы знать, возможно ли установить это?

Это из SQL Server.

Мое логическое объяснение:

VB.NET:

If "Date_Needed between `getdate()` And `dateadd(day,7,getdate())` "
Then
   `DataGridView1.Rows(i).DefaultCellStyle.ForeColor = Color.Red`
End If

или

If Date_needed = (1 weeklist) from (Today's Date)
Then
   `DataGridView1.Rows(i).DefaultCellStyle.ForeColor = Color.Red`
End If

Date_needed - это значение столбца, полученное из SQL Server.

Если система считывает сетку данных с сегодняшней датой на одну неделю, перечисляет выбранныйстроки в представлении данных станут красными выделением переднего цвета.

Select *
From PRF_Form
Where Date_Needed Between getdate() And Dateadd(day, 7, getdate())

1 Ответ

0 голосов
/ 13 апреля 2019

Я бы добавил столбец в возвращаемый набор результатов, чтобы указать, попадает ли строка в выборку «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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...