如何根据组合框找到下一条记录" filter"

时间:2015-05-20 11:40:14

标签: ms-access

我有一个带有两个组合框的表单,第一个(cboSet)选择一个类集,第二个(cboName)显示该集合中的学生名称(ID隐藏在第一列中)。我有一个按钮,我想用它来找到该组中的下一个学生。我已经尝试实现下一个按钮,它将转到下一个记录但不是正确的学生。任何帮助将非常感激。 enter image description here

1 个答案:

答案 0 :(得分:0)

当您说下一位学生时,您是指具有下一个数字身份证的学生,还是您正在为下一个学生使用其他一些标准? 假设您想要与下一位学生一起过滤您的表单,这是一种可能的解决方案。没有更多细节,这个例子有些模糊。看到你已经拥有的东西会更精确。

在按钮的onclick事件中:

Dim ID as Integer

ID = me.cboName.column(0) + 1
me.filter = "[ID] = " & ID
me.filteron = true

要查找集合中的下一个值,您可以执行以下操作,当然这只是通用的,基本的(希望是某些正确的)代码,因此您必须根据自己的需要进行更改,但它应该指出你正确的方向。

dim db as dao.database
dim rs as dao.recordset
dim nextID as interger
dim SQLquery as string
nextID = 0

SQLquery = "SELECT TOP 1 ID from COMBO_RECORD_SOURCE WHERE ID > " & me.namecombo.column(0) & " ORDER BY ID"
set db = currentdb
set rs = db.openrecordset(SQLquery,dbOpenSnapshot)
if rs.recordCount > 0 THEN
   rs.movefirst //I know it's not strictly necessary, old habit I like to do..
   nextID = rs!ID
end if

if nextID > 0 then
  me.filter = "[ID] = " & nextID
  me.filteron = true
else
  msgbox "There are no more names in this set."
end if

set rs = nothing
set db = nothing