el codigo es correcto, lo que pasa es que un insert no genera ningun cursor con resultado de datos por lo que lo correcto en este caso no es abrir una consulta sino ejecutar una sentencia SQL es decir:
Código:
Query1.ExecSql; //en vez de Query1.Open;