It seems that field meta attributes are initialized with an inverse value of adFldIsNullable property. The bit 0x20 should be set to 1 if the field is NULLABLE and to 0 if it is NOT NULL. However, its value is inversed in your driver what makes impossible to use Recordset updates because of the following error: "Microsoft Cursor Engine: Non-nullable column cannot be updated to Null." which is thrown before the INSERT command is executed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It seems that field meta attributes are initialized with an inverse value of adFldIsNullable property. The bit 0x20 should be set to 1 if the field is NULLABLE and to 0 if it is NOT NULL. However, its value is inversed in your driver what makes impossible to use Recordset updates because of the following error: "Microsoft Cursor Engine: Non-nullable column cannot be updated to Null." which is thrown before the INSERT command is executed.