Hola Inon.
Simplificando un poco y para redondear, las diferencias entre
ExecSQL y
Open (o
Active:= True) son:
El
método ExecSQL se usa para realizar consultas que no devuelven un resultado como por ejemplo: INSERT, UPDATE, DELETE, CREATE.
Para realizar consultas de las que esperamos devuelvan un resultado se debe usar el
método Open o la
propiedad Active.
La
propiedad Active permite determinar o verificar si un
TDataSet está abierto o cerrado. Llama a los métodos
Open o
Close según su valor sea puesto en True o False, por lo que también es redundante hacer:
Código Delphi
[-]
Query.Active:= True;
Query.Open;
Query.Active:= False;
Query.Close;
Saludos.