Ok, so MoveLast before GetRecordCount is not an option. Seems that percentage is absolutely necessary you need to perform query with 'SELECT COUNT(*)' and identical WHERE clause before traversing the recordset. Of course, number of records could change between two queries in multi-user scenario, so value returned from first query should be treated with care. COUNT(*) can also be pretty expensive, depending on WHERE. I don't know your exact requirements, but maybe it's enough to just display a message like 'Please wait, processed 19002 records so far...'. Tomasz Sowinski -- http://www.shooltz.com.pl