ACC: GotoRecord Macro Action Behaves UnexpectedlyID: Q141627
|
Moderate: Requires basic macro, coding, and interoperability skills.
The GotoRecord macro action doesn't behave as you would expect when you use
it in an AutoKeys macro. Instead of changing the record of the active form,
it changes the record of a form in the background.
These symptoms appear when you use the GotoRecord action in an AutoKeys macro while a form is opened with a Timer event running.
This resolution 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.
To achieve the desired result of selecting the next or previous record on
the active form when you press a predefined key, follow these steps:
Option Explicit
Function GotoPreviousRecord()
On Error Goto GotoPreviousErrorHndlr
' Screen.ActiveForm.Name forces the GotoRecord action
' to be applied to the active form.
DoCmd.GoToRecord acForm, Screen.ActiveForm.Name, acPrevious
ExitGotoPreviousRecord:
Exit Function
GotoPreviousErrorHndlr:
MsgBox Error$
Resume ExitGotoPreviousRecord
End Function
Function GotoNextRecord()
On Error Goto GotoNextErrorHndlr
' Screen.ActiveForm.Name forces the GotoRecord action
' to be applied to the active form.
DoCmd.GoToRecord acForm, Screen.ActiveForm.Name, acNext
ExitGotoNextRecord:
Exit Function
GotoNextErrorHndlr:
MsgBox Error$
Resume ExitGotoNextRecord
End Function
In Microsoft Access 2.0:
Function GotoPreviousRecord()
On Error Goto GotoPreviousErrorHndlr
' Screen.ActiveForm.Name forces the GotoRecord action
' to be applied to the active form.
DoCmd GotoRecord A_FORM, Screen.ActiveForm.Name, A_PREVIOUS
ExitGotoPreviousRecord:
Exit Function
GotoPreviousErrorHndlr:
MsgBox Error$
Resume ExitGotoPreviousRecord
End Function
Function GotoNextRecord()
On Error Goto GotoNextErrorHndlr
' Screen.ActiveForm.Name forces the GotoRecord action
' to be applied to the active form.
DoCmd GotoRecord A_FORM, Screen.ActiveForm.Name, A_NEXT
ExitGotoNextRecord:
Exit Function
GotoNextErrorHndlr:
MsgBox Error$
Resume ExitGotoNextRecord
End Function
Private Sub Form_Timer()
Me![CurrentTime] = Now()
End Sub
This procedure updates the time in the CurrentTime control once every
second.
Macro Name Action
----------------------
{F2} GotoRecord
{F3} GotoRecord
{F2} Actions
-----------
GotoRecord
Record: Previous
{F3} Actions
-----------
GotoRecord
Record: Next
For more information about AutoKeys, search the Help Index for "AutoKeys," or ask the Microsoft Access 97 Office Assistant.
Keywords : McrProb
Version : 2.0 7.0 97
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: April 30, 1999