Re: AutoKeys Macro
- From: "Allen Browne" <AllenBrowne@xxxxxxxxxxxxxx>
- Date: Sat, 25 Mar 2006 00:30:00 +0800
The crucial thing it to understand how Access works, and work with it. It
might be possible to force a car stay on the road by building large, strong
fences beside every straight and around every corner, but it would be much
easier to do it by using the steering wheel that the manufacturer provided
for that purpose.
Access fires Form_BeforeUpdate for you. If you use this event, you do not
have to worry about blocking all the possible ways a records might get
saved, such as applying a filter, changing the sort order, requerying the
form, pressing Shift+Enter, choosing Save through the menu, clicking a
navigation button, closing the form, closing Access, etc etc. Just code the
validation in Form_BeforeUpdate, and forget about all those.
I doubt I have created any bound forms in the last 5 years that did not have
some code in Form_BeforeUpdate.
Hope that helps clarify what's happening, and simplifies your life.
--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.
<ApexData@xxxxxxxxx> wrote in message
news:1143217028.167935.184060@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"destroying functionality that Access gives you?"
Allen, is that to say that the PgUp/PgDn key in instances should be
kept on
during record Add/Edit despite my desire to to avoid scrolling to the
next record,
and then if the user does scroll to the next record it would be
prevented by the
BeforeUpdate event. Wouldn't that be 6of1 half-dozen of another? Any
suggestions
where I can find tips that expand on this topic of KeyControl and
RecordControl
during basic Add/Edit/View sessions?
I'm 3-months new to MS Access and recognize your name as one of the
biggies
of the Access Groups, and I know I speak for many when I say I am
grateful for
your knowledgeable assistance. One day, when I get it togeather with
this stuff,
I'll reciprocate.
GregRogers
Allen Browne wrote:
An AutoExec macro runs once whenever you open the database.
An AutoKeys macro defines actions that should occur whenever a key is
pressed while the database is running.
You are correct in observing that AutoKeys cannot handle all keystrokes.
You
will therefore need to write a function in a standard module (Modules tab
of
the Database window) to provide special handling of the keystrokes. Then
in
each form that needs this special handling, set KeyPreview to Yes, and
use
its KeyDown event to call your generic handler, e.g.:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Call ControlKeys(KeyCode, Shift)
End Sub
Your generic key handler routine will then look like this:
Public Function ControlKeys(KeyCode As Integer, Shift As Integer)
'your code in here.
End Function
Before you go to that trouble, you are aware that you are essentially
destroying functionality that Access gives you? You might have a reason
for
doing that, we often see people who are destroying useful functionality
only
because they do not understand how to work with the built-in events. For
example, if you are trying to validate everything before Access saves the
record, you can just put your validation code into the BeforeUpdate event
of
the *form*. Access fires this event every time before it saves the
changes,
and you don't have to worry about PgDn or whatever.
--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.
<ApexData@xxxxxxxxx> wrote in message
news:1143075433.576268.207470@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hello
1- What is the AutoExec Macro? Is it the same thing as AutoKeys Macro?
2- I'm looking to Control Keys equally on startup for my entire app. I
understand that
the AutoKeys Macro is the place to go but it seems that some keys
cannot be
controlled there according to MS Help.
I created a Function in my form module to control my keys, but I
want to call it from
the AutoKeys macro. Will this work? Am I on the right track?
I can't seem to get it to work. I created the AutoKeys macro and put
RunCode for
the action, and ControlKeys() as the function. I put it in the
AutoKeys macro so that
it controls my entire app.
MyCode:
Public Sub Form_Key(KeyCode As Integer, Shift As Integer)
If (Shift = 6) And (KeyCode = vbKeyF8) Then
'Ctrl-Alt-F8 to open the ErrorLog
MsgBox "Ctrl-Alt-F8"
Else
'Disable choice keyboard keys
Select Case KeyCode
' ShutOff Ctrl, Alt, PgUp, PgDn, F1-F12
Case 17, 18, 33, 34, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123
KeyCode = 0
Case Else
Me.Text6 = KeyCode
' MsgBox KeyCode, vbOKOnly
End Select
End If
End Sub
Public Function ControlKeys()
Call Form_Key
End Function
.
- Follow-Ups:
- Re: AutoKeys Macro
- From: DFS
- Re: AutoKeys Macro
- References:
- AutoKeys Macro
- From: ApexData
- Re: AutoKeys Macro
- From: Allen Browne
- Re: AutoKeys Macro
- From: ApexData
- AutoKeys Macro
- Prev by Date: Re: Unsure where my pointer goes in DAO?
- Next by Date: Re: Anyone know of an A97 utility to help solve If - EndIf mixups?
- Previous by thread: Re: AutoKeys Macro
- Next by thread: Re: AutoKeys Macro
- Index(es):