-1ª pregunta: ¿Es correcta esta arquitectura? (datasource+ADOdataset+ADOconection)
-R En lo personal, considero que es mejor hacer uso de Stored Procedures.
-2ª pregunta

odria deberse el problema a alguna configuracion del dataset?
-R El programa es que efectivamente estás pasando un null, en el evento BeforePost verificalo con la propiedad isnull del Field.
-3º pregunta:es correcto el uso de post? hay alguna otra funcion?
-R Ya que estas editando los datos en controles Db, es correcto,
Si usaras querys, el comando correcto sería Exec.