...databases work on the fact that you select the records that you require, storing them in a recordset for later use.
Now, if you add a record to your database, even if you close a window, and re-open it, it's still going to display the old number of records.
In the case of your example, I think that what you are doing, is selecting the records to be displayed, then opening the window to display them. From this window, a new record can be added, and once added, the new record is not being displayed along with the others.
This is because when you create a recordset, even if you retrieve all of the records in a table, unless the query to select the records from that table, is run for a second time, you are still going to be left with your previous amount of records.
Dim objRs, strSQL, objConn
Set objRs = Create("ADODB.Recordset")
objRs.Source = "SELECT * FROM some_table"
objRs.ActiveConnection = objConn 'assume this was defined earlier
'code to display records goes here
Now, let's say that the particular query above, results in 10 records being stored as part of the objRs recordset.
Let's say you now used something like this to insert a record into the table, some_table:
Set objCommand = Create("ADODB.Command")
objCommand.ActiveConnection = objConn
objCommand.CommandText = "INSERT INTO some_table (first_name) values ('jehnx')"
'we now go back to the original window where the records are to be displayed
The problem now, is that whilst you've added a new record, with a first name of jehnx, there are still 10 records in the objRs recordset. This is because when you run a query, and store the result, the result is never updated. This means that you will need to close your recordset, and re-open it, to select the new records.
When you close the recordset, do not dereference it. This will mean that strSQL will still be used as its source property, so by closing and opening the recordset, you should now have the updated records.
Hope that makes sense.