我想知道是否可以设置?
这是来自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获取的列值。
如果系统从今天的日期读取到一周的datagridview列表,则datagridview中的选定行将变为红色的前景色。
Select *
From PRF_Form
Where Date_Needed Between getdate() And Dateadd(day, 7, getdate())
答案 0 :(得分:0)
我应该在返回的结果集中添加一列,以指示该行是否属于“ NeededDate”选择。让我的数据库在那里做繁重的工作,仅依靠VB.NET方面根据查询返回的值进行样式设置。
但是,首先,我想指出您在自己对这个问题的回答中提出的一个问题。 VB.NET中的“&”是字符串串联运算符,而不是逻辑AND操作。 &会在使用时将对象隐式转换为字符串。
所以,您回复中的这一行
Date.Now & DateAdd(intervaltype, days, secondDate)
将生成类似于以下内容的字符串: 2019年4月13日,2019年4月5日 这对日期比较不利。此外,它不会引发编译器错误,因为它将自动将compare操作符左侧的date对象转换为字符串,因为右侧的值是字符串。
之前已经说过,但是您确实需要实际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时,才会检查其右侧的compare选项。