allen browne's code

icemonster

Registered User.
Local time
Today, 15:19
Joined
Jan 30, 2010
Messages
502
hi, i used this code from allen browne, it works great but now, i cant use the new record command and when the record is blank, it won't show up in my main form as a subform. any idea why?

Code:
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
 
i fixed the new records, i hope someone can guide me how to add a code in this module to allow the form to be seen even if it is null or has no record to it. thanks!!!!
 
err. how would i say it, that it would allow new records even if it's blocked? i tried, if not, is not, won't work :(
 
well, i figured it out :P hehehe.

to all those that read this, thanks :)
 

Users who are viewing this thread

Back
Top Bottom