I've read your post several times and I'm still having a hard time understanding exactly what you're doing, but it sounds, from some of your comments, as if you have separate form(s) for viewing the archived data. What you need to do, rather than make an entire form read-only, is to only lock the group of controls that you don't want edited.
The way you "group" controls for this kind of manipulation is to use the little known
Tag Property. Select the control(s) then got to
Properties - Other and enter a value in the
Tag Property. Don't get confused if you see a
SmartTag Property! This is something else entirely!
For the purposes of this demo, we'll make the
Tag Property Marked
Enter this in the Tag Property box (without quotation marks.)
Also, for purposes of this demo, we'll change the
Locked Property of the tagged controls to
Locked = False. You can, of course, use the code to set any property that the particular control type has.
Then, use this code.
-
Private Sub Form_Load()
-
Dim ctrl As Control
-
-
For Each ctrl In Me.Controls
-
If ctrl.Tag = "marked" Then
-
ctrl.Locked = False
-
End If
-
Next
-
-
End Sub
Be sure that the controls that are tagged actually have the property you're trying to change, or you'll get an error! For instance, tagging a label control and then trying to change the Locked property will error out, because labels don't have an
Locked property.
The really nice thing is that you can have multiple levels within a form, i.e. several different Tags being used to identify different groups of controls to be manipulated.
If you were viewing active and archived records in the same form, you could use a variation of this to implement Jim's idea.
Welcome to TheScripts!
Linq
;0)>