The below implies that I do not need to issue sql statements to display, filter, insert / edit / delete data in my DB tables. Is that correct?
Yes. When using datasets you don't have to use ExecSQL to apply your updates. You still need to specify the dataset you are working with in TSQLQuery.SQL though.
What Ludo said....
Of course (pedantic mode on), the controls (e.g. dbgrid) get their data from the datasource control/object.
The datasource gets its data from the query object/control.
The query object SQL property has an SQL select statement that tells it what data to retrieve. If possible, DeleteSQL, InsertSQL and UpdateSQL properties are filled in for you. These statements will be executed when the GUI controls have deletions/insertions or edits/updates and send their changes to the database.
If the query statement in the SQL property is complicated, you might need to specify DeleteSQL, InsertSQL, UpdateSQL yourself.
Finally, the SQL query object is linked to the transaction object/control, which is linked to the db connection object.
In Firebird and a lot of other databases, you need to explicitly commit transactions, this is especially important for queries that change data (insert/delete/update). You might circumvent this by using commitretaining, which keeps open the transaction after committing. Haven't used this myself
Hope this makes sense & is correct
Finally, to let your program insert/edit/update data outside of GUI controls, it might be easier to set up a second set of transaction/query objects. You can then push your changes to the db using those. If you want to refresh the GUI, you can simply requery the query object that is linked to the GUI...