Use a pass through query to get the data from the table. The pass through query includes the userid and password as part of its connection string, so your user doesn't have to enter a password or id.
For the quickest retrieval of records, have the user set up the selection criteria, then build a SQL pass through query based on the user defined criteria. Use one name for this query and delete the current query, then redefine the query with your new query information and execute the query (or open a form based on that query).
The trick in building the query (besides making sure to include the connection string information) is that SQL Server SQL is slightly different from Access SQL. Since it's a pass through query, the SQL is actually executed by SQL Server, rather than all data being passed to the Access computer and then selected. One of the more important differences is that SQL Servier SQL uses ' around dates (rather than #).
The speed difference can be amazing. I've got an application with an Access (97) front end with a query builder for I've written to enable the user to pick a table or (SQL Server) view as the data source, then pick any number of columns to define selection criteria and then to pick columns for sorting. When the user clicks one button (Details) a pass through query is created and opened (to display a spreadsheet type of format) with the detailed records returned from the SQL Server database. When the use click the SubTotals button, a grouping query based on the sorting columns is build and executed. Even though some of the source tables contain over 2 million rows, the response can be in seconds as long as an indexed column is use for selecting records.
The best way to approach this is to build a query in SQL Server first so you have an idea of what the correct syntax is for SQL server. Then build the same query in Access as a pass through query and test it. You will then get a better idea of the syntax of the pass through queries that you will be building in Access.