为什么vb查询access数据库表格只能显示第一条记录

求教:为什么vb查询access数据库表格只能显示第一条记录
程序如下;
Private Sub Command2_Click()
Dim syear As Integer
Dim smonth As Integer
syear = Comboyear.Text
smonth = Combomonth.Text
  Dim cn As New Adodb.Connection
  Dim rs As New Adodb.Recordset
  Dim sql As String
  Connection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\用户.Mdb"
  cn.Open Connection
  sql = "SELECT * FROM 收支表"
   rs.Open sql, cn, adOpenKeyset, adLockOptimistic
    If rs.Fields("年份") = syear And rs.Fields("月份") = smonth Then
        Text1.Text = rs("收入")
        Text2.Text = rs("支出")
        Text3.Text = rs("余额")
        Text4.Text = rs("历史余额")
    Else
        MsgBox "没有记录!"
    End If
    rs.Close
    cn.Close
End Sub
通过commobox选择,年月,再在access的表中查找,只能得出表中的第一条数据,其他选择项都会显示没有记录,这是什么原因
------解决思路----------------------
你只比较了第一条啊!啊!!啊!!!
    ...
    sql = "SELECT * FROM 收支表 WHERE (年份=" & syear & ") AND (月份=" & smonth & ")"
    rs.Open sql, cn, adOpenKeyset, adLockOptimistic
    If Not (rs.EOF And rs.BOF) Then
        Text1.Text = rs("收入")
        Text2.Text = rs("支出")
        Text3.Text = rs("余额")
        Text4.Text = rs("历史余额")
    Else
        MsgBox "没有记录!"
    End If
    ...

------解决思路----------------------
哦,理解错了。

两种方法:
1 直接带月份比较查询数据库。如 1 楼所示。这是常规的做法。

2 查询到本年的记录后逐条查找月份匹配的记录,如你代码的思路:

    cn.Open Connection
    sql = "SELECT * FROM 收支表"
    rs.Open sql, cn, adOpenKeyset, adLockOptimistic
    Do Until rs.EOF
        If rs.Fields("年份") = syear And rs.Fields("月份") = smonth Then
            Text1.Text = rs("收入")
            Text2.Text = rs("支出")
            Text3.Text = rs("余额")
            Text4.Text = rs("历史余额")
            Exit Do
        End If
        rs.MoveNext
    Loop
    If rs.EOF Then MsgBox "没有记录!"
    rs.Close
    cn.Close