access設置綁定控件不可以修改內容,非綁定控件可修改
- 2019-09-21 17:17:00
- tmtony8 原創
- 5223
在access數據綁定的窗體的中,由於窗體數據是直接綁定到記録源的,不需要通過按鈕或者其他方式卽可修改添加數據
這樣非常容易意外操作數據,導緻數據齣錯。
窗體的AllowEdits屬性設置爲FALSE可以防止這種情況齣現,但是這樣鎖定會把所有控件都設置爲不可修改瞭。
下麵示例可以限製窗體的控件內容是否可以直接修改。如果是未綁定控件,可以修改。如果是綁定控件卽不可以修改
詳細代碼如下:
Public Function LockBoundControls(frm As Form, bLock As Boolean, ParamArray avarExceptionList()) On Error GoTo Err_Handler ' Purpose: Lock the bound controls and prevent deletes on the form any its subforms. ' Arguments frm = the form to be locked ' bLock = True to lock, False to unlock. ' avarExceptionList: Names of the controls NOT to lock (variant array of strings). ' Usage: Call LockBoundControls(Me. True) Dim ctl As Control 'Each control on the form Dim lngI As Long 'Loop controller. Dim bSkip As Boolean ' Save any edits. If frm.Dirty Then frm.Dirty = False End If ' Block deletions. frm.AllowDeletions = Not bLock For Each ctl In frm.Controls Select Case ctl.ControlType Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox, acOptionButton, acToggleButton ' Lock/unlock these controls if bound to fields. bSkip = False For lngI = LBound(avarExceptionList) To UBound(avarExceptionList) If avarExceptionList(lngI) = ctl.Name Then bSkip = True Exit For End If Next If Not bSkip Then If HasProperty(ctl, "ControlSource") Then If Len(ctl.ControlSource) > 0 And Not ctl.ControlSource Like "=*" Then If ctl.Locked <> bLock Then ctl.Locked = bLock End If End If End If End If Case acSubform ' Recursive call to handle all subforms. bSkip = False For lngI = LBound(avarExceptionList) To UBound(avarExceptionList) If avarExceptionList(lngI) = ctl.Name Then bSkip = True Exit For End If Next If Not bSkip Then If Len(Nz(ctl.SourceObject, vbNullString)) > 0 Then ctl.Form.AllowDeletions = Not bLock ctl.Form.AllowAdditions = Not bLock Call LockBoundControls(ctl.Form, bLock) End If End If Case acLabel, acLine, acRectangle, acCommandButton, acTabCtl, acPage, acPageBreak, acImage, acObjectFrame ' Do nothing Case Else ' Includes acBoundObjectFrame, acCustomControl Debug.Print ctl.Name & " not handled " & Now() End Select Next ' Set the visual indicators on the form. On Error Resume Next frm.cmdLock.Caption = IIf(bLock, "Un&lock", "&Lock") frm!rctLock.Visible = bLock Exit_Handler: Set ctl = Nothing Exit Function Err_Handler: MsgBox "Error " & Err.Number & " - " & Err.Description Resume Exit_Handler End Function Public Function HasProperty(obj As Object, strPropName As String) As Boolean ' Purpose: Return true if the object has the property. Dim varDummy As Variant On Error Resume Next varDummy = obj.Properties(strPropName) HasProperty = (Err.Number = 0) End Function
按鈕調用代碼:
Dim bLock As Boolean bLock = IIf(Me.cmdLock.Caption = "&Lock", True, False) Call LockBoundControls(Me, bLock)
當按鈕爲鎖定時,紅色框內的綁定控件內容均不能修改,如果未鎖定,卽均可修改。無論是否鎖定,上麵的未綁定文本框控件都可以修改查詢內容。
Access數據庫自身
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
Access Activex第三方控件
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
Access ADP Sql Server等
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
文章分類
聯繫我們
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |