Start by checking the database:
SELECT COUNT(*) FROM MyTable
will tell you how many rows there are. Use Access to run the query and see what you get back. At a guess - and without access to your DB that's all it can be - you are confusing an ID number with a row number, and there are "gaps" in the IDs where rows have been deleted.
And do your users a favour: Don't just dump 18,000 rows into any display control: it's not a management number for humans. Page it, let them search it, filter it: but displaying much more than 50 rows is unreasonable because it takes too long to find the row you are interested in. And it makes your app slow. Combine the two, and your users will hate the app, and for good reason.