James,
In adordd we cant control commit frequency, as far as I know, with :addnew method.
As soon as we move or add new record the previous its auto committed because ado auto calls :update().
Being other rdd than ado in source area the loop its controlled by that rdd and we cant do anything else.
On the other hand when the source rdd its adordd then we could be much faster because its adordd controlling the loop through ado_trans.
Here we could use the following:
SELECT * INTO newfile FROM currentfile
But we have a limitation we can evaluate the while or for code blocks because we only receive it as a code block thus disabling us to use it as WHERE clause expression so we will end with the same speed problem.
The only way out is to have a hb_adorddcopyto( origin file, dest file, where clause ).
Here its very fast because its pure SQl treated as above.
But I dont know if it is worth while to build such function because you can do it directly from app code and doesn't interfere or take advantage with adordd.
Ex
//get adordd connection to have it in same transaction processing
hb_GetAdoConnection():Execute( "SELECT * INTO newfile FROM currentfile WHERE expression" )
USE newfile /this is adordd
....
If there is any way to get from the code block the char expression then we could do it completed integrated in adordd otherwise I cant see how we can do it.