Buenas!
En lugar de hacer
Código Delphi
[-]
Query1.execsql;
Query1.active:=true
prueba con
Y, por cierto, si tienes este código en un botón, vas a dejar la consulta abierta, si el usuario pulsa 2 veces vas a tener errores, por lo que al inicio debes controlar si está cerrado:
Código Delphi
[-]
if query1.active then query1.close;
Espero que te sirva
Edu