AlanSlash, lo tienes "casi perfecto".
El fallo es porque tu consulta es de Acción (insert, delete, drop, alter table..., etc) en esos casos debes de usar "insertar.Execute" ExecuteCommand, ExecSql, o el que sea (dependerá de si usas BDE, ADO, etc),
Si el sql lo tienes puesto desde el inspector de objetos, y no se cambia durante toda la ejecución del programa, en el oncreate de la ventana podrías usar esta orden:
Eso hace que se compile la consulta y sea más rápida su ejecución.
El insertar.Close y su opuesto insertar.Open se usa cuando tienes una instrucción de selección ( un SELECT en el sql)
Saludos