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

wyy5027816 2015-04-19 02:20:06
程序如下;
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的表中查找,只能得出表中的第一条数据,其他选择项都会显示没有记录,这是什么原因
...全文
441 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-04-20
  • 打赏
  • 举报
回复
你只比较了第一条啊!啊!!啊!!!
    ...
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
...
of123 2015-04-20
  • 打赏
  • 举报
回复
哦,理解错了。 两种方法: 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
of123 2015-04-20
  • 打赏
  • 举报
回复
因为你限定了 (月份=" & smonth & ")"。 试试 sql = "SELECT * FROM 收支表 WHERE 年份=" & syear
wyy5027816 2015-04-19
  • 打赏
  • 举报
回复
,这是截图,只能查到第一条

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧