Could you expand on what happens that leads you to say, "Unfortunately it does not work for some reason". Is there an error message?
You are the programmer; are you working with a database administrator who controls the database?
Are you using ADODB? Are you using the Command object with SQL statements to INSERT and DELETE; or are you using the Recordset methods?
Are you using SQL Server, Access, or another RDBMS?
Does your application involve a current view and a history view? If you are keeping a history then adding records and updating old records with a mark that indicates they are no longer current would be the way to handle changes.
Myself, in some situations, I will delete all existing records and insert new ones to reflect the effects of a change. For example, a brand may have a number of features, some brands have more features, some have fewer. I keep track only of the features the brand has. Changes involve inserting rows for new features and dropping rows for discontinued features.
Another pattern is to have a fixed set of records for everyone, even if some of them are not used by an individual. For example, in one application I have a set of services that may or may not be purchased by a particular customer. All customers have the same set of rows for the whole set of services. Each row shows whether the customer receives that service. Such a structure can be changed by updating.
In low volume conditions, either approach will work just fine.