MS Access linked to Sharepoint lists adding new row instead of updating

68 Views Asked by At

I have a C# desktop app that is using an MS Access File as a Datasource, but linked to a number of sharepoint lists. The Data Access Layer uses a ADO.NET strongly typed dataset that is setup with the Dataset Designer in Visual Studio 2019.

When I try to update an existing row, I get a new row in the sharepoint list instead of an update. However, if I use an Access file that is not connected to Sharepoint the update is successful.

Any insight from anyone on what may be wrong?

Here is the method that creates or updates the new row:

 private WorkerRow CreateOrUpdateWorkerRow(Worker worker)
        {
            WorkerRow workerRow = null;

            // Check & Create Workers
            if (worker.Id > 0)
            {
                LogHelper.Log(LogTarget.EventLog, "In CreateOrUpdateWorkerRow, \nWorker exists!, ID is: " + worker.Id);

                // Get worker row from database for update
                workerRow = FteHostDataManager.FteHostDataSet.Worker.FindByID(worker.Id);

                LogHelper.Log(LogTarget.EventLog, "In CreateOrUpdateWorkerRow, \nWorker Row Retrieved from Database, Worker Row ID is: " + workerRow["ID"]);

                workerRow.FirstName = worker.FirstName;
                workerRow.LastName = worker.LastName;
                workerRow.TaxID = worker.TaxID;
                workerRow.Gender = (int)worker.Gender;
                workerRow.DateOfBirth = worker.DateOfBirth;
                workerRow.HmoID = worker.HmoID;
                workerRow.HmoProvider = worker.HmoProvider;
                workerRow.PensionID = worker.PensionID;
                workerRow.PensionAdministrator = worker.PensionAdministrator;
                workerRow.Address = worker.Address != null ? worker.Address : "";
                workerRow.Email = worker.Email != null ? worker.Email : "";
                workerRow.PhoneNumber = worker.PhoneNumber != null ? worker.PhoneNumber : "";
            }
            // if not create new row
            else
            {
                LogHelper.Log(LogTarget.EventLog, "In CreateOrUpdateWorkerRow, Worker does not exists!");

                // Add new row to table
                workerRow = FteHostDataManager.FteHostDataSet.Worker.AddWorkerRow(
                    WorkerRegistrationNumber: worker.WorkerRegistrationNumber != null ? worker.WorkerRegistrationNumber : "",
                    StateOfOrigin: worker.StateOfOrigin != null ? worker.StateOfOrigin : "",
                    Nationality: worker.Nationality != null ? worker.Nationality : "",
                    Gender: (int)worker.Gender,
                    DateOfBirth: worker.DateOfBirth != null ? worker.DateOfBirth : new DateTime(),
                    TaxID: worker.TaxID != null ? worker.TaxID : "",
                    HmoProvider: worker.HmoProvider != null ? worker.HmoProvider : "",
                    HmoID: worker.HmoID != null ? worker.HmoID : "",
                    PensionID: worker.PensionID != null ? worker.PensionID : "",
                    PensionAdministrator: worker.PensionAdministrator != null ? worker.PensionAdministrator : "",
                    FirstName: worker.FirstName != null ? worker.FirstName : "",
                    LastName: worker.LastName != null ? worker.LastName : "",
                    Address: worker.Address != null ? worker.Address : "",
                    Email: worker.Email != null ? worker.Email : "",
                    PhoneNumber: worker.PhoneNumber != null ? worker.PhoneNumber : ""
                    );
            }

            WorkerTableAdapter.Adapter.RowUpdated += OnRowUpdated;

            // Update Table
            WorkerTableAdapter.Update(FteHostDataManager.FteHostDataSet.Worker);

            // update worker id
            worker.Id = workerRow.ID;

            return workerRow;
        }
0

There are 0 best solutions below