David, en serio, tienes verdaderos problemas con los null
Para evitar el 99% de éstos, mira de usar algo así
Tabla.FieldByName('nombre_campo').AsXXXX
donde XXXX es el tipo de campo, es decir
AsString
AsInteger
AsDateTime
AsFloat
........
Espero te sirva