Hay una ligera diferencia entre tu ejemplo y el mio.
Código Delphi
[-]
selectsql.Add('insert ...
//Notas la diferencia?
SQL.Add('insert .....
Además de eso, la instrucción Open no debería estar despues de un ExecSQL, de hecho, Open se utiliza solo cuando son consultas (select) y ExecSQL se utiliza cuando se van a realizar cambios (Update, insert, delete, etc) Pero no debes usar las dos juntas. Y creo que falta un espacio antes del and