>But after I close it with the "dsRemoteDataset = Nothing", and go back directly in SQLSERVER, the table still the same with no update. I think I am missing one step related to the way of closing the merge.
You need to connect your dataset to the database with a connection and call the update method of the dataset to write the changes to the database. At least in theory, this should work. You'll need to do some work to assign the correct update and insert sql commands to your command object. Alternatively, you could iterate through the dataset table and run the update and/or insert commands (which is what the dataset.udpate method does behind the scenes).
>dsRemoteDataset.AcceptChanges()
It looks like this command just updates the values within the dataset (Foxpro equivalent of copying current field value to OLDVAL). Use dataset.update (Foxpro equivalent of TABLEUPDATE).