Hi Mario,
If you need to programmatically send keystrokes to your app, you'll need functionality similar to the SendKeys statement, but avoid using the SendKeys statement itself (too unpredictable). There is a replacement module for SendKeys that uses API calls at:
http://www.mvps.org/access/api/api0046.htm
This kind of functionality is rarely necessary though. What your F9 key is accomplishing is a simple refresh of the cursor storing the contents of your recordset. This refresh is necessary because the Jet OLEDB Provider doesn't support dynamic cursors (a type of cursor that allows edits, deletions, and insertions made by other users to be visible.) Jet is giving you a Keyset cursor (most likely) which allows you to see edits and deletions, but not insertions. Pressing F9 refreshes the Keyset cursor, which is equivalent to closing and reopening the recordset.
All of this behavior can be controlled programmatically using ADO or DAO. If, for example you populate your form using a module-level ADO recordset named m_rstMyRecordset, you could accomplish your refresh by placing a command button on your form, and placing the following code behind it:
Private Sub cmdRefresh_Click()
m_rstMyRecordset.Requery
End Sub
The Requery method reloads your cursor with fresh data from your datasource, including records recently inserted by other users. You don't have to mess with unreliable sendkey statements or messy API calls. And you could call the Requery method from any procedure that can see your recordset variable.
(note: you'll notice that the ADO Recordset CursorType property enum has a adOpenDynamic value available. If you send this value to the Jet engine, you'll actually get back a Keyset cursor (using optimistic, pessimistic, or batch optimistic locking) or a Static cursor (using read-only locking). You can't get Jet to give you a Dynamic cursor.)
HTH,
Bob