Hi,各位同學好!我是吳明課堂的答疑老師之一陳婉。祝大家一切順利,平安快樂!
當我們使用access預設生成的清單格式的窗體時,如何添加自定義的全選和反選功能呢?
本文将通過示範全選和反選功能的實作,教會大家如何在軟體預設窗體上去周遊窗體資料源,并改變資料源的字段值。
效果示範動圖:
組成結構解析:
- 一張待審批消息表—資料來自新聞網站;
- 一個待審批消息清單窗體(通過建立—>窗體—>多個項目 功能自動生成,注意不能使用資料表窗體),綁定資料源為待審批消息表,禁用新增和删除資料功能,啟用編輯功能;
- VBA代碼(見下文中)。
所需技能分析:
- access表基礎知識
- access窗體設計基礎
- access vba文法
- access 窗體事件基礎
- 會通過API分析窗體對象的屬性和方法
關鍵代碼展示:
'綁定全選複選框的點選事件
Private Sub allCheck_Click()
Dim rs As Recordset
'此處複制一份遊标對象給rs,不能直接指派
Set rs = Me.RecordsetClone
rs.MoveFirst
'關閉窗體重畫
Me.Painting = False
Do Until rs.EOF
If (rs("已審批").Value <> Me.allCheck.Value) Then
'借用預設窗體控件與資料源字段綁定時,控件與資料源字段值同步的特性,實作對表字段值的改變
DoCmd.GoToRecord acDataForm, "待審批消息", acGoTo, rs.AbsolutePosition + 1
Me.已審批.Value = Me.allCheck.Value
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Me.allCheck.SetFocus
'重新開啟窗體重畫
Me.Painting = True
End Sub
'綁定反選複選框的點選事件
Private Sub reverseCheck_Click()
Dim rs As Recordset
'此處複制一份遊标對象給rs,不能直接指派
Set rs = Me.RecordsetClone
rs.MoveFirst
Me.Painting = False
Do Until rs.EOF
'借用預設窗體控件與資料源字段綁定時,控件與資料源字段值同步的特性,實作對表字段值的改變
DoCmd.GoToRecord acDataForm, "待審批消息", acGoTo, rs.AbsolutePosition + 1
Me.已審批.Value = Not (Me.已審批.Value)
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Me.allCheck.SetFocus
Me.Painting = True
End Sub
重難點分析:
- 圖中案例綜合應用了:表設計、窗體設計、窗體事件、VBA程式設計等知識子產品,隻有掌握了這些知識,有了紮實的基礎之後,才能更高效地自學和提升自己的Access水準;
- 多練習老師在課程裡教授的查閱官網API的方法。目前國内網絡上,關于Access程式設計的參考資料實在是太少;
- 官網API需要在有很好的基礎上再去研究,普通人去看等同看天書。
上述技能在吳明老師的《Access零基礎到應用系統教程》中均可學到。
可檢視課程連結: 《Access零基礎到應用系統教程》
該課程可以使學員以最少的學習時間,搭建完善的資料庫和Access窗體程式設計知識架構。
案例文檔下載下傳連結: