You bind forms to queries that have criteria. If the query doesn't include criteria, you might as well bind the form to a table. The objective is to minimize the number of rows returned by the server at any one time. Since users simply are not going to scroll through thousands of records to find the one they want, you give them the ability to search for what they want. The old Jet technique was to bind the form to a simple query without criteria or directly to the table and then use filters to find the data. This method requires that the entire dataset be brought down to the PC so if you are working with large tables on the server, this puts a huge burden on the network. So the better technique for client/server environments is to have the table bound to a query and the query has selection criteria. So your form allows the user to enter the criteria, the user presses run and you requery the form to force the query to run again using the current criteria. It is far more efficient to bring down a few records at a time than to let a form bound to a table just suck down all the data from the server like a vampire. It is this one technique that gives Access the biggest black-eye with database administrators.