ACC: How to Automatically Detect If a Form Is Being Edited
ID: Q122294
|
The information in this article applies to:
-
Microsoft Access versions 2.0, 7.0, 97
SUMMARY
Moderate: Requires basic macro, coding, and interoperability skills.
This article describes two techniques that you can use to automatically run
code when a form's Edit mode changes. You can use these techniques when you want to have different controls available on a form when a record is being
edited and when a record is not being edited.
This article assumes that you are familiar with Visual Basic for
Applications and with creating Microsoft Access applications using the
programming tools provided with Microsoft Access. For more information
about Visual Basic for Applications, please refer to your version of the
"Building Applications with Microsoft Access" manual.
NOTE: Visual Basic for Applications is called Access Basic in Microsoft
Access version 2.0. For more information about Access Basic, please refer
to the "Building Applications" manual.
NOTE: This article explains a technique demonstrated in the sample
files, FrmSampl.exe (for Microsoft Access for Windows 95 version 7.0)
and FrmSmp97.exe (for Microsoft Access 97). For information about how
to obtain these sample files, please see the following articles in the
Microsoft Knowledge Base:
Q150895 ACC95: Microsoft Access Sample Forms Available in Download Center
Q175066 ACC97: Microsoft Access 97 Sample Forms Available in Download Center
MORE INFORMATION
When Microsoft Access displays a pencil symbol in the record selector, the
record is being edited but has not yet been saved. When Microsoft Access
displays a triangle symbol in the record selector, the record has been
saved and is not being edited. Note that if the form's RecordSelector
property is set to No, these symbols are not displayed.
There are two methods that you can use to automatically run code when a
form's Edit mode changes:
- Use the form's Timer event to check the form's Dirty property
periodically to see if the Edit mode has changed.
- Use the Dirty property in an expression on the form to run a
function when the Edit mode changes.
The following examples demonstrate how to use these techniques to
automatically enable or disable an Undo Record button, depending on a
form's Edit mode.
Method 1: Using the Form's Timer Event
- Open the sample database Northwind.mdb (or NWIND.MDB in version 2.0).
- Open the Employees form in Design view.
- Use the Command Button Wizard to create an Undo Record button on
the form.
- Change the Undo Record button's properties to match the following:
Name: btnUndo
Enabled: No
- Set the form's TimerInterval property to:
1000
- Set the form's OnTimer property to the following event procedure:
Private Sub Form_Timer()
Static bFlag As Boolean
If Me.Dirty Then
If Not bFlag Then
Me!btnUndo.Enabled = True
bFlag = True
End If
Else
If bFlag Then
Me!FirstName.SetFocus
Me!btnUndo.Enabled = False
bFlag = False
End If
End If
End Sub
- View the form in Form view. Note that the Undo Record button is
unavailable.
- Modify any field in the current record, and then press the TAB key.
Note that the Undo Record button becomes available.
- Press the ESC key twice (or click Undo on the Edit menu) to undo your
changes. Note that the Undo Record button becomes unavailable.
Method 2: Using the Dirty Property in an Expression
- Follow steps 1 through 4 in Method 1.
- Add a new text box with the following properties to the form:
Name: txtEditModeChange
ControlSource: =[Form].[Dirty] & EditModeChange([Form])
Visible: No
- On the View menu, click Code.
- Create the following function in the module, and then close the module:
Function EditModeChange (F As Form) As Variant
If F.Dirty Then
F!btnUndo.Enabled = True
Else
F!btnUndo.Enabled = False
End If
End Function
- Set the form's AfterUpdate property to the following event procedure:
Sub Form_AfterUpdate ()
Me!txtEditModeChange.Requery
End Sub
- Follow steps 7 through 9 in Method 1 to test this method.
REFERENCES
For more information about the Dirty property, search the Help Index for
Dirty property or ask the Microsoft Access 97 Office Assistant.
For more information about the Timer event, search the Help Index for
Timer Event, or ask the Microsoft Access 97 Office Assistant.
Additional query words:
Keywords : kbusage FmsEvnt
Version : WINDOWS:2.0,7.0,97
Platform : WINDOWS
Issue type : kbhowto