te tendría que funcionar el update aunque pongas 200 campos. Algo mal debe haber para que no te funcione.
Razones por la cual te puede "petar" alguna linea de código,pues que estés insertando un valor nulo en un campo que no le permita, que estés insertado un tipo de dato distinto al que es el campo. Revisa que todo esté correcto. Pon que te devuelva el error interno: ex.tostring
Otra cosa, yo es que veo que pones mucho código para hacer un update. Lo puedes simplificar un poco más, definiendo el tipo y añadiendolo en una misma línea:
Cita: cmd.Parameters.Add(New OledBParameter("@codigo", OledDbType.Int)).Value = varCodigo
saludos