我在表單及其與組合框下拉串列的互動方面遇到問題。用戶可以從串列中選擇一個專案并運行 vba 以檢查表單是否臟并詢問“您要保存嗎”等。
如果答案是否定的,則運行 frm.undo,但我的問題是組合框正在查找串列中的專案但撤消已將其清除的下一行。
這是簡化的代碼 [frm 作為表單傳遞給函式] [cboGoToContact 是我的組合]
Dim rs As Object
Set rs = frm.Recordset.Clone
If frm.dirty Then
'Prompt to confirm the save operation.
answer = MsgBox("Do you want to save?", vbYesNoCancel vbQuestion, _
"Save Record")
If answer = vbNo Then
frm.Undo ' <<<<<< ERROR Caused by this
rs.FindFirst "[ID] = " & str(Nz(frm![cboGoToContact], 0)) '<<< Error Line
If Not rs.EOF Then frm.Bookmark = rs.Bookmark
'Disable all textbox by default
For Each Ctrl In frm.Controls
If TypeOf Ctrl Is TextBox Then
Ctrl.Enabled = False
End If
Next Ctrl
frm.Clients.Enabled = False
ElseIf answer = vbYes Then
'do stuff
ElseIf answer = vbCancel Then
'do stuff
End If
Else
'more stuff
End If
我嘗試將其分配給一個值并將其傳遞,但??我不斷收到的錯誤是: 物件無效或不再設定
我試過這樣的事情:
var = frm.cboGoToContact ' <<< returns an number of where the selection is in the list
frm.Undo
rs.FindFirst "[ID] = " & str(Nz(var, 0))
If Not rs.EOF Then frm.Bookmark = rs.Bookmark
uj5u.com熱心網友回復:
使用RecordsetClone試試這個:
Dim rs As DAO.Recordset
If frm.dirty Then
'Prompt to confirm the save operation.
answer = MsgBox("Do you want to save?", vbYesNoCancel vbQuestion, _
"Save Record")
If answer = vbNo or answer = vbCancel Then
frm.Undo
Set rs = frm.RecordsetClone
rs.FindFirst "[ID] = " & Str(Nz(frm![cboGoToContact], 0))
If Not rs.NoMatch Then
frm.Bookmark = rs.Bookmark
End If
rs.Close
'Disable all textboxes by default
For Each Ctrl In frm.Controls
If TypeOf Ctrl Is TextBox Then
Ctrl.Enabled = False
End If
Next Ctrl
frm.Clients.Enabled = False
Else
'do stuff
End If
Else
'more stuff
End If
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/490731.html
上一篇:如何將全域環境中的資料表作為元素分配到串列R中(x中的錯誤:下標越界)
下一篇:計算成員班級的數量并在網格中顯示
