使用if then语句的表适配器值
本文关键字:适配器 语句 if then 使用 | 更新日期: 2023-09-27 18:03:32
我有一个VB。Net程序,检查一个特定的终端在过去一周是否被使用过。我想使用if then语句向我发送结果。如果tableadapter为空(NULL),那么我希望它在程序中执行一些东西…现在我有:
Me.1TableAdapter.Fill(Me.SwiperCheck.1, DTstartdate, TodayEnd)
If (Me.SwiperCheck.1.Count = 0) Then
msgbox ("It Worked")
这是我的数据集查询:
SELECT CASE WHEN COUNT(sTerminal) = 0 THEN NULL ELSE COUNT(sTerminal) END AS terminal
FROM Swipe
WHERE (dtCreated BETWEEN @startdate AND @enddate) AND (sTerminal = 'Swiper 1')
但是它不工作,我知道输出是"Null"如果输出不是Null,程序工作正常
如果你想让它在计数为0时不返回任何记录,那么你必须这样做:
SELECT COUNT(sTerminal) terminal
FROM Swipe
WHERE (dtCreated BETWEEN @startdate AND @enddate) AND (sTerminal = 'Swiper 1')
HAVING COUNT(sTerminal) > 0
尝试将0更改为dbnull或
me.swipercheck.1.count is nothing
您编写的查询将始终只有一行。您的条件是检查表上的行数。所以"If (1=0) Then" ....
你真正需要检查的是:
If (Me.SwiperCheck.1.Item(0) Is DBNull.Value) Then
我认为您的查询返回NULL会给您带来麻烦。您可以通过删除CASE语句并返回Count(terminal)来简化查询。然后你有一个一致的返回值:
SELECT COUNT(sTerminal) AS terminal
FROM Swipe
WHERE (dtCreated BETWEEN @startdate AND @enddate) AND (sTerminal = 'Swiper 1')
那么我会遵循@Bill的建议,因为你总是有一行返回:
If (Me.SwiperCheck.1.Item(0) = 0 ) Then
查看这篇文章关于你的'nullable'错误MSDN-Nullable Value
尝试IsDbNull(me.swipercheck.1.count) = false代替?(很抱歉,由于rep的原因,我似乎还不能在帖子上写小评论)。