Migrating to FireDAC: The devil is in the details

Migrating to FireDAC: The devil is in the details

I recently discovered that some of the few queries that we have that return a large rowset,  would max out at 50 rows.

It turns out that TFDQuery.FetchOptions.Mode defaults to fmOnDemand, which means that the query first returns a default of 50 rows, and then fetches 50 more as you MoveNext past the 50 first.  Other options are fmAll, fmExactRecsMax, fmManual.

Since we still are in the “make it work” and not in the “make it fast” stage, I switched to using fmAll.

Interestingly, RowCount by default also returns 50 even if the query actually matches more rows. and there is a TFDQuery.FetchOptions.RecordCountMode setting that can be modified, as well: cmFetched, cmVisible, cmAll.

This differs from ADO TQuery, which will retrieve all rows and the full record count by default.

TFDDataSet has the same settings, and there are numerous other tweakable parameters that I need to explore for both of these components..

#FireDAC    #ADO #migration  

2 thoughts on “Migrating to FireDAC: The devil is in the details

  1. We are actually pushing to pilot testing in production next week.  If it all goes horribly bad, we still can switch back to ADO at the flick of a compiler directive. The pilot should force out any possible remaining issues that we didn’t manage to discover during our test sessions.


Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.