如何判断SQL语句是否有查询结果的问题?

时间:2022-05-29 04:25:02
这对大家来说是一个很简单的问题:
我有以下这段程序:
Private Sub Command1_Click()
    If rs.State = adStateOpen Then rs.Close
    rs.Open "SELECT sum(费用) as 合计 FROM 水费表 where 公司名 = '" & Combo1.Text & "' and 年份 = '" & Combo2.Text & "' and 月份 = '" & Combo3.Text & "'", cn, adOpenDynamic, adLockOptimistic
   If rs.EOF = True Then
    total1 = rs!合计
    Label1.Caption = rs1!合计
    Label2.Caption = ToChineseMoney(total1)
    End If
End Sub

这样有错吗?我是希望通过选择combo1、combo2、combo3这三个值来查询数据表,如果数据表有记录则把值赋给label1。
这样的写法有错吗?怎么明明数据表里有数据但却又不报错又不显示?
If rs.EOF = True Then
………
end if
是不是用这种办法来判断rs是否有内容?

8 个解决方案

#1


If rs.recordcount>0 Then...

#2


rs.eof代表没记录,楼主正好写反了
应该是 if not rs.eof then

#3


sql="SELECT 公司名,年份,月份,sum(费用) as 合计 FROM 水费表 where 公司名 = '" & Combo1.Text & "' and 年份 = '" & Combo2.Text & "' and 月份 = '" & Combo3.Text & "' group by 公司名,年份,月份"

#4


是呀
if not rs.eof then '表示有记录
....
end if
也可以
if rs.recordcount>0 then'表示有记录
...
end if

#5


樓上的說得對了

#6


真的很谢谢大家,那我还想问一下,我上面这段小程序中,total1定义为double型,而在数据表(access)中的“费用”为货币型,那我这样写total1 = rs!合计,能不能成功把值赋给total1啊?

#7


可以啦,再一次谢谢大家!!结贴给分!

#8


在记录集游标类型为仅向前和动态时,RecordCount返回-1,所以推荐用
rs.eof进行检测。

#1


If rs.recordcount>0 Then...

#2


rs.eof代表没记录,楼主正好写反了
应该是 if not rs.eof then

#3


sql="SELECT 公司名,年份,月份,sum(费用) as 合计 FROM 水费表 where 公司名 = '" & Combo1.Text & "' and 年份 = '" & Combo2.Text & "' and 月份 = '" & Combo3.Text & "' group by 公司名,年份,月份"

#4


是呀
if not rs.eof then '表示有记录
....
end if
也可以
if rs.recordcount>0 then'表示有记录
...
end if

#5


樓上的說得對了

#6


真的很谢谢大家,那我还想问一下,我上面这段小程序中,total1定义为double型,而在数据表(access)中的“费用”为货币型,那我这样写total1 = rs!合计,能不能成功把值赋给total1啊?

#7


可以啦,再一次谢谢大家!!结贴给分!

#8


在记录集游标类型为仅向前和动态时,RecordCount返回-1,所以推荐用
rs.eof进行检测。