@Space Cowboy
Here are some thoughts in summary of your questions:
(1) Your backend is Visual Foxpro, with lots of tables and lots of records. Structures and indexing are a bit unclear. I don't know if and what kind of help you can get from outside. A quick search on the Internet turned up practically nothing useful for me.
SELECT top 6 odate, hid FROM rf1 ORDER BY hid, odate DESC I have restricted the size of this query by generation of a "supply" query rf1 and narrowed it down to 700,000 rows. Large due to varying numbers of order dates for each "hid" so have restricted to this decade. The above select works...
www.access-programmers.co.uk
I have no control over the source data,
there have been two occasions in the last 10 years when there have been considerations on a redesign. On each occasion it was determined that its too big to change and too big to fail.
I have had a quick look at a couple of tables and I get a warning saying that they are indexed but there is no identifiable index key.
However, this database is probably used and maintained by an essential application.
(2) When processing data via linked tables in Access, you come up against several significant limitations. One of the suggestions made was to carry out the processing using a more powerful database management system. You said in a message that you could get a SQL Server 2008. An alternative would be SQL Server Express, which is free and should have the current range of commands, but has limitations such as a 10GB database size.
(3) To use the power of SQL Server, you need to use T-SQL and get to grips with it. For your current requirements, there are statements such as ROW_NUMBER, RANK, DENSE_RANK, NTILE. In contrast, Access uses Jet-SQL by default, a very simple variant.
(4) Theoretically, you can make external data sources available in SQL Server via a linked server.
Create linked servers (SQL Server Database Engine)
learn.microsoft.com
I can't say how this works with Visual Foxpro. Maybe direct linking is not possible, but only an export from Visual Foxpro and a subsequent import into the SQL Server.
(5) Given the uncertainty about the actual structures in the Foxpro database, I would be inclined to create my own functional data model in SQL Server with my own tables and known tables and import the data from Foxpro into it.
With your own complete data model, you then need an interface through which the data from one structure is transferred to what is probably another structure.
Such an interface could, for example, consist of one update query and one append query for each target table of the data model. Something like this has worked for me with data models with 15 tables.
Such a data transfer would have to be carried out once (coupled in a transaction).
The question then arises as to what will be done with changed records, new records, new tables(?) in the Foxpro database. These should be able to be imported via the same interface, and it would make sense to limit the transfer to new data only and identify such data in the Foxpro database, e.g. using existing time stamps for creation and modification.
Assuming that you can create this parallel database in SQL Server, you are well positioned for the future. There is a lot of help available for T-SQL and the use of SQL Server together with Access as a front end to solve all kinds of tasks.
There may also be an opportunity to completely replace the Foxpro database in the unknown application with the new database in SQL Server.
That was an outline of a possible strategy. The devil is in the details. If an important company is serious about an important matter, you will probably not be alone.