我有一个VB.Net程序,用于检查上周是否使用过特定终端。我想使用if then语句向我发送结果。如果tableadapter为Empty(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,则程序正常工作。
答案 0 :(得分:1)
如果你希望它在计数为零时不返回任何记录,那么你必须做这样的事情:
SELECT COUNT(sTerminal) terminal
FROM Swipe
WHERE (dtCreated BETWEEN @startdate AND @enddate) AND (sTerminal = 'Swiper 1')
HAVING COUNT(sTerminal) > 0
这应该使你的orignial IF正常工作。
答案 1 :(得分:0)
尝试将0更改为dbnull或
me.swipercheck.1.count is nothing
答案 2 :(得分:0)
您所写的查询将始终有一行。您的条件是检查表格上的行数。所以“If(1 = 0)然后”....
您真正需要检查的是:
If (Me.SwiperCheck.1.Item(0) Is DBNull.Value) Then
答案 3 :(得分:0)
我认为从您的查询中返回NULL会给您带来麻烦。您可以通过删除CASE语句并返回Count(sTerminal)来简化查询。然后你有一个一致的返回值:
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
请参阅此文章,了解您的'可空'错误MSDN-Nullable Value
答案 4 :(得分:0)
尝试IsDbNull(me.swipercheck.1.count)= false? (对不起,由于代表,我似乎无法撰写关于帖子的小评论。)