如何使用VB.NET中的语句从SQL Server数据库中获得一个星期的清单?

时间:2019-04-13 00:51:47

标签: sql-server vb.net

我想知道是否可以设置?

这是来自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())

1 个答案:

答案 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选项。