>The other alternative is to allow Nulls, with the added complexity that you describe, or to always mention all fields in inserts, which means you need to alter your code each time the table structure changes at the server where you insert rows. Also very problematic if you have tables that have more than 20 columns.
The trouble is with the way insert statement is generated by Fox. At least in cursor adapter, if you subclass it and override the BeforeInsert, you can see the generated statement in the debugger, and guess what, it contains a parametrized statement... Something like
insert into mytable fields (field1, field2, field3...)
values (?mycursoralias.field1, ?mycursoralias.field2, ?mycursoralias.field3...)
I've seen cases where this was just too long, though the limit was not 20 columns, I think I hit the wall somewhere around 120 or so. And then using a shorter alias helped a lot - something like two characters.