Ya tengo la solucion,
el problema estaba en los campos si/no en acces, estos campos no son reconocidos por SQL Server y lo pone como bit con tamaño 1, por lo que no deja graba si existe algun campo a true (-1), he cambiado el tipo de dato en Sql Server y lo he puesto a Char de 1. Y todo va bien.
Muchas gracias a todos.