我正在使用拆分表單來導航資訊,并且我有一個命令按鈕,可以根據今天的日期選擇記錄。
Private Sub FindDate_Click()
TodayDate = DateTime.Date
Me![Start Date].SetFocus
DoCmd.FindRecord TodayDate
End Sub
我發現如果日期不存在于我的記錄集中,這將不起作用。
我修改了代碼,但我得到了
“運行時錯誤‘3251’:這種型別的物件不支持操作。”
新的代碼行是
Dim CurrDB As DAO.Database
Dim CurrRec As DAO.Recordset
Set CurrDB = CurrentDb
Set CurrRec = CurrDB.OpenRecordset("AIM")
TodayDate = DateTime.Date
StrSQl = "[Start Date] = #" & TodayDate & "#"
CurrRec.FindFirst (StrSQl)
我正在嘗試使用 FindFirst 函式來告訴我是否有符合我的條件的記錄,如果沒有,我將 -1 到 TodayDate 并再次檢查,直到我獲得要鎖定的記錄。
uj5u.com熱心網友回復:
我們創建一個帶有“on error GoTo”的回圈,它將簡單地跳過記錄成功的行。然后我們從日期變數中洗掉一天并重試。
Dim CurrDB As DAO.Database
Dim CurrRec As DAO.Recordset
Set CurrDB = CurrentDb
Set CurrRec = CurrDB.OpenRecordset("AIM")
TodayDate = DateTime.Date
Dim Success as Boolean
Success = false
While (Success = false)
StrSQl = "[Start Date] = #" & TodayDate & "#"
On Error GoTo target
CurrRec.FindFirst (StrSQl)
Success = true
target
TodayDate = DateAdd("d", -1,TodayDate)
Wend
uj5u.com熱心網友回復:
假設您的記錄按日期排序,請使用RecordsetClone:
Private Sub FindDate_Click()
Dim Records As DAO.Recordset
Set Records = Me.RecordsetClone
If Records.RecordCount > 0 Then
Records.FindFirst "[Start Date] <= Date()"
If Not Records.NoMatch Then
Me.Bookmark = Records.Bookmark
Me![Start Date].SetFocus
End If
End If
Records.Close
End Sub
uj5u.com熱心網友回復:
讓 SQL 完成作業:
Dim CurrDB As DAO.Database
Dim CurrRec As DAO.Recordset
Set CurrDB = CurrentDb
Set CurrRec = CurrDB.OpenRecordset( _
"select top 1 [Start Date] from AIM where [Start Date] <= #" & DateTime.Date & "# order by [Start Date] desc")
If CurrRec.EOF Then
Debug.Print "Not Found"
Else
Debug.Print CurrRec![Start Date]
End If
CurrRec.Close
Set CurrRec = Nothing
Set CurrDb = Nothing
沒有回圈/再次檢查等。此外,在 VBA 中使用物件時,最好關閉它們(如果有方法),并將它們設定為nothing。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429069.html
上一篇:獲取表的所有id的一對的最大值
下一篇:在Ms訪問中一鍵洗掉所有表
