Back to the roots. Have your table a PK (Primary Key) ? Is this key listed in the select statement ?
If you have a good, simple Select-Statement without joins, Query is able to autocreate the nessesary insert, update, delete messages by itself.
You mus only set the dataset in the correct state. For a simple test, put a connetion, transaction, query, dataset, dbgrid and a dbnavigator on a form. Connect these components together and set a select statement in the query. In the designer, if you make the connection and the query active you will see the actual data in the db. Make it inactive. Now make a button and set in the click the connection and query active. Make a second button and place there the applyupdates an make the connection inactive. Now run your program. You should able to browse, edit, delete insert data with the navigator and the grid.
If you close the programm and reopen, your changes should be saved. If this work you have the basics.