Sql 如何使用VBA使窗体跳转到Access中最近的未来日期?

Sql 如何使用VBA使窗体跳转到Access中最近的未来日期?,sql,vba,ms-access,Sql,Vba,Ms Access,我正在尝试让MS Access数据库打开一个表单,如果它位于数据库的日期字段中,则为今天的日期,或者为将来最近的日期。我试过这个代码,但不起作用。它只是突出显示日期字段,并转到第一条记录,而不是将来最近的记录 日期字段为Date,表格为wp\u elements。(我是一位牧师,用这张桌子计划周日的礼拜) Private子表单_Load() Dim数据库作为DAO.Database 将rst设置为DAO.Recordset 作为字符串的Dim strSQL 将日期变暗为日期 Set db=Cur

我正在尝试让MS Access数据库打开一个表单,如果它位于数据库的日期字段中,则为今天的日期,或者为将来最近的日期。我试过这个代码,但不起作用。它只是突出显示日期字段,并转到第一条记录,而不是将来最近的记录

日期字段为
Date
,表格为
wp\u elements
。(我是一位牧师,用这张桌子计划周日的礼拜)

Private子表单_Load()
Dim数据库作为DAO.Database
将rst设置为DAO.Recordset
作为字符串的Dim strSQL
将日期变暗为日期
Set db=CurrentDb
strSQL=“从wp_元素中选择前1个*,其中wp_元素.Date>=Date()按wp_元素排序。Date;”
Set rst=db.OpenRecordset(strSQL)
日期=第一个字段(0)
设置焦点的日期
DoCmd.find记录日期,对,对
设置rst=无
Set db=Nothing
'DoCmd.RunCommand AccmdRecordsGetoLast
端接头
我知道我包含的SQL代码是有效的,因为我在一个运行良好的Python脚本中使用了它


我错过了什么?或者还有其他更简单的方法吗?

您应该只需要一行代码:

me.RecordSet.FindFirst "Date() >= WorshipDate"

我从未尝试过使用
DoCmd.FindRecord
,而是使用
DoCmd.SearchForRecord
或记录集进行导航。但首先,我假设
DoCmd.RunCommand AccmdRecordsToLast
会清除任何导航到正确记录的尝试,并导航到最后一个记录。因此,本质上是今天的日期(如果它存在)还是明天的日期(未来最接近的日期)?另外,明天,您将尝试启动一个新的数据条目?@Parfait我没有考虑过启动一个新的数据条目,如果它不存在的话,但这是一个好主意!应该是“me.RecordSet.FindFirst”日期()非常好。我会留下你的评论来纠正它。无论哪种方式,这里只需要添加一行代码。