I have used vba to.... and update record.
If this happens during the edit process, or after you think you're finished editing, then too late. For a bound form, the only way you can make changes and still cancel them is to NOT do anything that commits those changes. The commit can be caused by moving off the record in any way, or by using code to commit the changes.
What part of the process isn't understood by the user such that a bunch of changes are made but all of a sudden, they're not wanted? If you can't get around this by understanding how the bound form works and adapting user use of the form, or by opening it so that changes can't be made (maybe that is the underlying issue?), then you may have to switch to an unbound form, or bind the form to a temp table and don't write the changes to the main table until you're sure it's warranted.
EDIT:
Even before i press cancel button the data is already updated in table.
If you're in the edit process and take a peek at the table, you may see these changes. However, there should be a lock indicator at the left side of the table row, indicating the record is being edited. If on the form you cancel the edits (subject to the conditions I mentioned above) and refresh the table datasheet view, you'll find that the changes are gone. So I don't know how you're determining that these changes have been committed.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.