天天看點

準時下班系列!Access合集之第6集—多個項目窗體實作全選和反選功能

Hi,各位同學好!我是吳明課堂的答疑老師之一陳婉。祝大家一切順利,平安快樂!

當我們使用access預設生成的清單格式的窗體時,如何添加自定義的全選和反選功能呢?

本文将通過示範全選和反選功能的實作,教會大家如何在軟體預設窗體上去周遊窗體資料源,并改變資料源的字段值。

效果示範動圖:

準時下班系列!Access合集之第6集—多個項目窗體實作全選和反選功能

組成結構解析:

  1.  一張待審批消息表—資料來自新聞網站;
  2. 準時下班系列!Access合集之第6集—多個項目窗體實作全選和反選功能
  3. 一個待審批消息清單窗體(通過建立—>窗體—>多個項目 功能自動生成,注意不能使用資料表窗體),綁定資料源為待審批消息表,禁用新增和删除資料功能,啟用編輯功能;
  4. 準時下班系列!Access合集之第6集—多個項目窗體實作全選和反選功能
  5. 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窗體程式設計知識架構。

案例文檔下載下傳連結: