为什么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的表中查找,只能得出表中的第一条数据,其他选择项都会显示没有记录,这是什么原因
------解决思路----------------------
你只比较了第一条啊!啊!!啊!!!
------解决思路----------------------
哦,理解错了。
两种方法:
1 直接带月份比较查询数据库。如 1 楼所示。这是常规的做法。
2 查询到本年的记录后逐条查找月份匹配的记录,如你代码的思路:
程序如下;
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