使用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,程序工作正常

使用if then语句的表适配器值

如果你想让它在计数为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的原因,我似乎还不能在帖子上写小评论)。